利用python进行数据分析--pandas入门2
随书练习,第五章 pandas入门2
# coding: utf-8 # In[1]: from pandas import Series,DataFrame
import pandas as pd
import numpy as np # In[2]: obj = Series(range(5),index=['a','a','b','b','c']) # In[3]: obj #带有重复索引的Series # In[4]: obj.index.is_unique # In[5]: obj['a'] # In[6]: obj['c'] # In[7]: df = DataFrame(np.random.randn(4,3),index=['a','a','b','b']) # In[8]: df # In[9]: df.loc['b'] # In[10]: df = DataFrame([[1.4,np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],index=['a','b','c','d'],columns=['one','two']) # In[11]: df # In[12]: df.sum() # In[13]: df.sum(axis=1) #自动忽略缺失值 # In[14]: df.mean(axis=1,skipna=False) #禁用自动忽略缺失值功能 # In[15]: df.idxmax() #间接统计,返回索引 # In[16]: df.idxmax(axis=1) # In[17]: df.cumsum() #累计型 # In[18]: df.describe() #数值型数据 # In[19]: obj = Series(['a','a','b','c']*4) # In[20]: obj # In[21]: obj.describe() #非数值型数据 # In[22]: # corr ,cov ,corrwith # In[23]: obj = Series(['c','a','d','a','a','b','b','c','c']) # In[24]: uniques = obj.unique() #这里只是找出唯一值,不排序,numpy有一个函数unique()去重并排序 # In[25]: uniques # In[26]: uniques.sort() # In[27]: uniques # In[28]: obj.value_counts() #用于计算各值出现的频数,降序排列 # In[29]: pd.value_counts(obj.values,sort=False) # In[30]: mask = obj.isin(['b','c']) # In[31]: mask # In[32]: obj[mask] #布尔型索引 # In[33]: data = DataFrame({'Qu1':[1,3,4,3,4],'Qu2':[2,3,1,2,3],'Qu3':[1,5,2,4,4]}) # In[34]: data # In[35]: result = data.apply(pd.value_counts).fillna(0) # In[36]: result #索引是唯一值,列是唯一值出现的次数 # In[37]: string_data = Series(['aardvark','artichoke',np.nan,'avocado']) # In[38]: string_data # In[39]: string_data.isnull() # In[40]: string_data[0] = None # In[41]: string_data.isnull() #python内置的None值也会被当作NA值处理 # In[42]: data = DataFrame({'Qu1':[np.nan,3,np.nan,3,4],'Qu2':[2,3,np.nan,2,3],'Qu3':[np.nan,5,np.nan,4,np.nan]}) # In[43]: data # In[44]: data.dropna() #默认删除有缺失值的数据 # In[45]: data.dropna(how='all') # In[46]: data.dropna(thresh=2) #缺失数量大于等于2的行删掉 # In[47]: data.notnull() #isnull的否定式 # In[48]: from numpy import nan as NA # In[49]: data = Series([1,NA,3.5,NA,7]) # In[50]: data.dropna() # In[51]: data[data.notnull()] #布尔型索引 # In[52]: data = DataFrame([[1,6.5,3],[1,NA,NA],[NA,NA,NA],[NA,6.5,3]]) # In[53]: cleaned = data.dropna() # In[54]: data # In[55]: cleaned # In[56]: data[4] = NA # In[57]: data # In[58]: data.dropna(axis=1,how='all') # In[59]: df = DataFrame(np.random.randn(7,3)) # In[60]: df.iloc[:4,1] = NA;df.iloc[:2,2] = NA # In[61]: df # In[62]: df.fillna(0) # In[63]: df.fillna({1:0.5,3:-1}) #可以对不同的列填充不同的值 # In[64]: _ = df.fillna(0,inplace=True) #会改变原数据 # In[65]: df # In[66]: df = DataFrame(np.random.randn(6,3)) # In[67]: df.iloc[2:,1] = NA;df.iloc[4:,2] = NA # In[68]: df # In[69]: df.fillna(method='ffill') # In[70]: df.fillna(method='ffill',limit=2) # In[71]: data = Series([1,NA,3.5,NA,7]) # In[72]: data.fillna(data.mean()) # In[73]: df # In[74]: df.mean() # In[75]: df.fillna(df.mean()) #用平均值填充 # In[76]: df.iloc[3,1]=5 # In[77]: df # In[78]: df.interpolate() #插值法填充缺失值 # In[79]: data = Series(np.random.randn(10),index=[['a','a','a','b','b','b','c','c','d','d'],[1,2,3,1,2,3,1,2,2,3]]) #层次化索引 # In[80]: data # In[81]: data.index # In[82]: data['b'] # In[83]: data['b':'c'] # In[84]: data[['b','d']] # In[85]: data.loc[['b','d']] # In[86]: data[:,2] # In[87]: data.unstack() # In[88]: data.unstack().stack() # In[89]: frame = DataFrame(np.arange(12).reshape((4,3)),index=[['a','a','b','b'],[1,2,1,2]],columns=[['Ohio','Ohio','Colorado'],['Green','Red','Green']]) # In[90]: frame # In[91]: frame.index.names = ['key1','key2'] # In[92]: frame.columns.names = ['state','color'] # In[93]: frame # In[94]: frame['Ohio'] # In[103]: pd.MultiIndex.from_arrays([['Ohio','Ohio','Colorado'],['Green','Red','Green']],names=['state','color']) # In[104]: frame.swaplevel('key1','key2') #互换级别 # In[106]: frame.sort_index(level=1) # In[109]: frame.swaplevel(0,1).sort_index(level=0) # In[110]: frame # In[111]: frame.sum(level='key2') # 根据级别进行汇总 # In[112]: frame.sum(level='color',axis=1) # In[113]: frame = DataFrame({'a':range(7),'b':range(7,0,-1),'c':['one','one','one','two','two','two','two'],'d':[0,1,2,0,1,2,3]}) # In[114]: frame # In[115]: frame2 = frame.set_index(['c','d']) #将一个或多个列转换为行索引 # In[116]: frame2 # In[117]: frame.set_index(['c','d'],drop=False) # In[118]: frame2 # In[119]: frame2.reset_index() # In[125]: frame2 # In[124]: frame.loc[frame.d>0]
利用python进行数据分析--pandas入门2的更多相关文章
- 利用Python进行数据分析——pandas入门
利用Python进行数据分析--pandas入门 基于NumPy建立的 from pandas importSeries,DataFrame,import pandas as pd 一.两种数据结构 ...
- 利用python进行数据分析--pandas入门1
随书练习,第五章 pandas入门1 # coding: utf-8 # In[1]: from pandas import Series, DataFrame # In[2]: import pa ...
- 利用Python进行数据分析-Pandas(第一部分)
利用Python进行数据分析-Pandas: 在Pandas库中最重要的两个数据类型,分别是Series和DataFrame.如下的内容主要围绕这两个方面展开叙述! 在进行数据分析时,我们知道有两个基 ...
- 利用Python进行数据分析-Pandas(第六部分-数据聚合与分组运算)
对数据集进行分组并对各组应用一个函数(无论是聚合还是转换),通常是数据分析工作中的重要环节.在将数据集加载.融合.准备好之后,通常是计算分组统计或生成透视表.pandas提供了一个灵活高效的group ...
- 利用Python进行数据分析-Pandas(第四部分-数据清洗和准备)
在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载.清理.转换以及重塑上.这些工作会占到分析时间的80%或更多.有时,存储在文件和数据库中的数据的格式不适合某个特定的任务.研究者都选择使用编 ...
- 利用Python进行数据分析-Pandas(第七部分-时间序列)
时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学.经济学.生态学.神经科学.物理学等.时间序列数据的意义取决于具体的应用场景,主要有以下几种: 时间戳(ti ...
- 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)
在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 1.层次化索引 层次化索引(hierarchical indexing)是panda ...
- 利用Python进行数据分析-Pandas(第三部分)
访问数据是使用本书所介绍的这些工具的第一步.这里会着重介绍pandas的数据输入与输出,虽然别的库中也有不少以此为目的的工具. 输入输出通常可以划分为几个大类:读取文本文件和其他更高效的磁盘存储格式, ...
- 利用Python进行数据分析-Pandas(第二部分)
上一个章节中我们主要是介绍了pandas两种数据类型的具体属性,这个章节主要介绍操作Series和DataFrame中的数据的基本手段. 一.基本功能 1.重新索引 pandas对象的一个重要方法是r ...
随机推荐
- 11g Oracle Rac安装(基于linux6)
安装 Oracle 11gR2 RAC on Linux 6 本文介绍如何在Oracle Linux 6上安装2节点Oracle 11gR2 Real Application Cluster(RAC) ...
- dubbo中拦截生产者或消费者服务方法调用
比如当前有个需求,需要拦截dubbo的服务提供方或者服务消费方的方法,判断参数中是否包含某个关键字进行拦截阻止执行,那么我们可以通过使用dubbo的SPI机制通过实现Filter类来拦截,话不多说直接 ...
- 码云与Git的使用
码云注册和使用 网址:https://gitee.com 注册之后新建一个仓库 接下来安装Git 协同开发Git安装与使用 下载地址:https://gitforwindows.org 安装完成之后选 ...
- You-Get,多网站视频下载工具,非常方便
You-Get是一个非常优秀的网站视频下载工具.使用You-Get可以很轻松的下载到网络上的视频.图片及音乐. 按Win+R键打开运行,输入cmd,再输入命令 pip install you-get, ...
- python学习第五十三天configParser模块的使用
configParser 模块用于生成和修改常见配置文档,python 3.x为configParser,配置软件的常见配置格式 模块的用法 import configparser config=co ...
- Django中间件拦截未登录url
1.利用装饰器在视图中拦截未登录的url @login_required(login_url='/user/login/') def homepage(request): pass 这种方法适合于程序 ...
- 牛客练习赛53E 老瞎眼 pk 小鲜肉(线段树)
链接:https://ac.nowcoder.com/acm/contest/1114/E来源:牛客网题目:老瞎眼有一个长度为 n 的数组 a,为了为难小鲜肉,他准备了 Q 次询问,每次给出 一个区间 ...
- nginx_mirror_module流量复制在项目中的应用
参考文档:https://my.oschina.net/andChow/blog/2873870 https://blog.csdn.net/lancerh/article/details/88645 ...
- IDEA设置类和方法的注释
类注释 #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #pa ...
- <转> thinkPHP的常用配置项2
'URL_PATHINFO_DEPR'=>'-',//修改URL的分隔符'TMPL_L_DELIM'=>'<{', //修改左定界符'TMPL_R_DELIM'=>'}> ...