读者只需浏览一下本文的目录结构,我相信就已经掌握了1到2成的 pandas 知识。
本文的目的是建立一个大概的知识结构
在数据挖掘python阅读源码时,断断续续查阅了些 pandas 资料,并在源码中大致感受到了 pandas 在数据清理方面的方便性。
先将自己查阅的资料结合实际应用中常用到的方式,以学习笔记的形式整理出来。不会涉及到 pandas 的所有方面,细节知识还需自行查阅官方文档。
数据结构
- Series: 一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
- DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。
- Panel: 三维数组,可以理解为DataFrame的容器。
数据操作
一般操作
- head和tail方法可以显示DataFrame前N条和后N条记录,N为对应的参数,默认值为5。
- index(行)和columns(列)属性,可以获得DataFrame的行和列的标签。这也是了解数据内容和含义的重要步骤。
- decribe方法可以计算各个列的基本描述统计值。包含计数,平均数,标准差,最大值,最小值及4分位差。
- T 方法可以对数据进行转置
排序操作
- df.sort_index(axis=1, ascending=False)
sort_index可以以轴的标签进行排序。axis是指用于排序的轴,可选的值有0和1,默认为0即行标签(Y轴),1为按照列标签排序。 ascending是排序方式,默认为True即降序排列。
- df.sort(columns=[‘one’,’two’],ascending=[0,1])
DataFrame也提供按照指定列进行排序,可以仅指定一个列作为排序标准(以单独列名作为columns的参数),也可以进行多重排序(columns的参数为一个列名的List,列名的出现顺序决定排序中的优先级),在多重排序中ascending参数也为一个List,分别与columns中的List元素对应。
读写文件操作
这里仅介绍读csv格式数据,对于excel数据,请查阅其他资料
- 读
df = pd.read_csv(‘data.csv‘)
- 写
df.to_csv(‘data.csv‘)
数据选择
- 选择一个单独的列
df[‘a‘]
等同于df.a
- 通过[]进行选择,这将会对行进行切片:
df[0:3]
- 使用标签选取数据:
df.loc[行标签,列标签] df.loc[‘a‘:‘b‘]#选取ab两行数据 df.loc[:,‘one‘]#选取one列的数据
df.loc的第一个参数是行标签,第二个参数为列标签(可选参数,默认为所有列标签),两个参数既可以是列表也可以是单个字符,如果两个参数都为列表则返回的是DataFrame,否则,则为Series。
- 使用位置选取数据:
df.iloc[行位置,列位置] df.iloc[1,1]#选取第二行,第二列的值,返回的为单个值 df.iloc[0,2],:]#选取第一行及第三行的数据 df.iloc[0:2,:]#选取第一行到第三行(不包含)的数据 df.iloc[:,1]#选取所有记录的第一列的值,返回的为一个Series df.iloc[1,:]#选取第一行数据,返回的为一个Series
- 通过逻辑指针进行数据切片:
df[逻辑条件] df[df.one>=2]#单个逻辑条件 df[(df.one>=1) & (df.one<3) ]#多个逻辑条件组合
这种方式获得的数据切片都是DataFrame。
缺失处理
df.dropna(how=‘any‘)
会去掉缺失值的行df.fillna(value=)
对缺失值进行填充
基本运算
- df.mean()#计算列的平均值,参数为轴,可选值为0或1.默认为0,即按照列运算
- df.sum(1)#计算行的和
- df.apply(lambda x: x.max() - x.min())#将一个函数应用到DataFrame的每一列,这里使用的是匿名lambda函数,与R中apply函数类似
DataFrame合并
Contact
参考资料
[pandas 官方文档]((http://pandas.pydata.org/)
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-29 10:46:15