↑↑↑↑↑点击上方蓝色字关注我们!
『运筹OR帷幄』原创
作者:Paul
编者按
pandas作为python中非常重要的数据处理工具,它提供了很多灵活的数学和统计方法。在数据处理中,经常需要对数据进行索引的转换,以适应不同的统计和作图的需要;另外在许多数据分析工作中,缺失数据是经常发生的。因此,作为pandas系列文章的一部分,本文将重点关注pandas对数据索引、汇总和缺失数据的处理的相关方法。本文十分详细地列出了具体实例介绍了这些方法,十分建议各位对pandas学习感兴趣的同学下载代码亲自运行进行实际操作。
pandas 索引对象
pandas的索引负责管理轴标签和其他如轴名称等元数据。构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index。
Index对象是不可修改的(immutable),因此用户不能对其进行修改。不可修改性非常重要,因为这样才能使Index对象在多个数据结构之间安全共享。
pandas中主要的index对象
● index:最泛化得Index对象,将轴标签为一个由Python对象组成的Numpy数组
● Int64Index:针对整数的特殊Index
● MultiIndex:层次化索引对象,表示单个轴上的多层索引,可以看做由原数组组成的数组
● DatetimeIndex:存储纳秒级时间戳
● PeriodIndex:针对Period数据的特殊Index.
Index的方法和属性
● append:append连接另一个Index对象,产生一个新的Index
● diff:计算差集,并得到一个Index
● intersection:计算交集
● union:计算并集
● delete:删除索引i处的元素,并得到新的Index
● drop:删除传入的值,并得到新的索引值
● insert:将元素插入到索引a处,并得到新的Index
● unique:计算Index中唯一的数组
实例如下
![0ef681d7c0c4109479ffc9d2d966e906.png](https://img-blog.csdnimg.cn/img_convert/0ef681d7c0c4109479ffc9d2d966e906.png)
首先建立一个Series对象,这里直接对index赋值。
![d2f453cef93081c4a0044dcf85094f91.png](https://img-blog.csdnimg.cn/img_convert/d2f453cef93081c4a0044dcf85094f91.png)
或者可以用Index对象来建立index。
![2e691af7ac8b4d52ed8330d7f81ca1bc.png](https://img-blog.csdnimg.cn/img_convert/2e691af7ac8b4d52ed8330d7f81ca1bc.png)
这里用来判断列和索引是否在DataFrame中存在。
![1246b8fe6b98b64ce722680122bff62b.png](https://img-blog.csdnimg.cn/img_convert/1246b8fe6b98b64ce722680122bff62b.png)
Pandas 重新索引
有时我们需要重新对pandas对象进行索引赋值。
● Series的reindex将创建一个适应新索引的新对象并根据新索引进行重排。当某个索引值不存在时,引入缺失值进行填充。
● 对于序列数据(如有时间标签的数据),重新索引时可能需要做一些插值处理。其中可以用method选项即可达到此目的。
reindex函数的参数
● index:用作索引的新序列。即可以是Index实例,也可以是其他序列的python数据结构
● method:插值填充方式,ffill或bfill
● fill_value:在重新索引过程中,需要引入缺失值时使用的替代值
● limit:前向或后向填充时的最大填充量
● level:在MultiIndex的指定级别上匹配简单索引,否则选择其子集
首先是简单的用reindex方法来重新指定索引:
![4722c87f7c5930ef390b1111b8dc97ab.png](https://img-blog.csdnimg.cn/img_convert/4722c87f7c5930ef390b1111b8dc97ab.png)
![9f19bef306d94ac47eb7cabfb2839537.png](https://img-blog.csdnimg.cn/img_convert/9f19bef306d94ac47eb7cabfb2839537.png)
![7ac87a3f52d09aa70501601fdeeae710.png](https://img-blog.csdnimg.cn/img_convert/7ac87a3f52d09aa70501601fdeeae710.png)
![f69242ca865a13784933f6c011e819f0.png](https://img-blog.csdnimg.cn/img_convert/f69242ca865a13784933f6c011e819f0.png)
![0596756d867af12b0f25a095ae7e7ffd.png](https://img-blog.csdnimg.cn/img_convert/0596756d867af12b0f25a095ae7e7ffd.png)
![4beafbdd181321cb0e71a458ac150c56.png](https://img-blog.csdnimg.cn/img_convert/4beafbdd181321cb0e71a458ac150c56.png)
![aa84cd0433869a502ef037c6da56a175.png](https://img-blog.csdnimg.cn/img_convert/aa84cd0433869a502ef037c6da56a175.png)
![588e392adfdc35972444c311405ca192.png](https://img-blog.csdnimg.cn/img_convert/588e392adfdc35972444c311405ca192.png)
丢弃/删除指定的行或者列
删除某一列或者行上的一个或多个项很容易,只需要这些数据的索引组成的数组或列表即可。由于需要执行一些数据整理和集合逻辑,所以drop方法返回的是一个在指定轴上删除了指定值的新对象:
![b1d0fa3e30996aadf874b77df7d27000.png](https://img-blog.csdnimg.cn/img_convert/b1d0fa3e30996aadf874b77df7d27000.png)
![97501cf55aa20f6fd1a77fd5289d611d.png](https://img-blog.csdnimg.cn/img_convert/97501cf55aa20f6fd1a77fd5289d611d.png)
![68bb58b23b3d3a7fc4a84ef19309836c.png](https://img-blog.csdnimg.cn/img_convert/68bb58b23b3d3a7fc4a84ef19309836c.png)
Pandas 索引、选取和过滤
● Series索引的工作方式和NumPy数组的索引相似,只是Series的索引值不只是整数。
● 利用标签的切片运算与普通的Python切片运算不同,其末端是包含的(inclusive)。
● 对DataFrame进行索引其实就是获取一个或多个列
● 为了在DataFrame的行上进行标签索引,引入了专门的索引字段ix。
DataFrame的索引选项
● obj[val]:选取DataFrame的单个列或一组列。
● obj.ix[val]:选取DataFrame的单个行或一组行
![2091e69292e121975d4c55d869155839.png](https://img-blog.csdnimg.cn/img_convert/2091e69292e121975d4c55d869155839.png)
![e2be08c3e061b4c7731cf3ad68c1978d.png](https://img-blog.csdnimg.cn/img_convert/e2be08c3e061b4c7731cf3ad68c1978d.png)
![552c91464ec1eea61629cc44fc818fa2.png](https://img-blog.csdnimg.cn/img_convert/552c91464ec1eea61629cc44fc818fa2.png)
![34f4765ba2f2407b1d6619a80c02c5a2.png](https://img-blog.csdnimg.cn/img_convert/34f4765ba2f2407b1d6619a80c02c5a2.png)
![ae9ec7f6a44c98e3b13bf45ba37200ae.png](https://img-blog.csdnimg.cn/img_convert/ae9ec7f6a44c98e3b13bf45ba37200ae.png)
![42ca737a816f6a558a5f36f6e7697c27.png](https://img-blog.csdnimg.cn/img_convert/42ca737a816f6a558a5f36f6e7697c27.png)
Pandas 算术运算和数据对齐
● 对不同的索引对象进行算术运算
● 自动数据对齐在不重叠的索引处引入了NA值,缺失值会在算术运算过程中传播。
● 对于DataFrame,对齐操作会同时发生在行和列上。
● fill_value参数
● DataFrame和Series之间的运算
![0666ca78864962faecf53b05d0826e66.png](https://img-blog.csdnimg.cn/img_convert/0666ca78864962faecf53b05d0826e66.png)
![86a34f40aba552ca1487fd2029fd9b2d.png](https://img-blog.csdnimg.cn/img_convert/86a34f40aba552ca1487fd2029fd9b2d.png)
![d364b78489805e8531de59861d2cc196.png](https://img-blog.csdnimg.cn/img_convert/d364b78489805e8531de59861d2cc196.png)
![ee045371123411b574e29d148dbc96ff.png](https://img-blog.csdnimg.cn/img_convert/ee045371123411b574e29d148dbc96ff.png)
![f2fb0426c839edc7fef6d4dbebd5f7c9.png](https://img-blog.csdnimg.cn/img_convert/f2fb0426c839edc7fef6d4dbebd5f7c9.png)
![464abd3fae0f90c303bb3df00bc34ebe.png](https://img-blog.csdnimg.cn/img_convert/464abd3fae0f90c303bb3df00bc34ebe.png)
![75aee42b1e38bbfa1dfe6742f3f2d577.png](https://img-blog.csdnimg.cn/img_convert/75aee42b1e38bbfa1dfe6742f3f2d577.png)
Pandas 函数应用和映射
● numpy的ufuncs(元素级数组方法)
● DataFrame的apply方法
● 对象的applymap方法(因为Series有一个应用于元素级的map方法)
![95d6eacdd794a22266fd2484f96eec93.png](https://img-blog.csdnimg.cn/img_convert/95d6eacdd794a22266fd2484f96eec93.png)
![7ccbb70365f4c42834e8fb1bd4cf3eda.png](https://img-blog.csdnimg.cn/img_convert/7ccbb70365f4c42834e8fb1bd4cf3eda.png)
![b39b70c9ba0c30a27bf6d5190525d40b.png](https://img-blog.csdnimg.cn/img_convert/b39b70c9ba0c30a27bf6d5190525d40b.png)
Pandas 排序和排名
● 对行或列索引进行排序
● 对于DataFrame,根据任意一个轴上的索引进行排序
● 可以指定升序降序
● 按值排序
● 对于DataFrame,可以指定按值排序的列
● rank函数
![b8e8c9cafbfd8596ed1c4a267b7fee8e.png](https://img-blog.csdnimg.cn/img_convert/b8e8c9cafbfd8596ed1c4a267b7fee8e.png)
![fd81bd56478c37f51cd6575224ea4a2d.png](https://img-blog.csdnimg.cn/img_convert/fd81bd56478c37f51cd6575224ea4a2d.png)
![06ee552fd69a7758f01f831633be4c13.png](https://img-blog.csdnimg.cn/img_convert/06ee552fd69a7758f01f831633be4c13.png)
![372d5d7661ecae448df24aedd5a8f579.png](https://img-blog.csdnimg.cn/img_convert/372d5d7661ecae448df24aedd5a8f579.png)
![f803f30c869f51c9d6744e232aef94ef.png](https://img-blog.csdnimg.cn/img_convert/f803f30c869f51c9d6744e232aef94ef.png)
Pandas 带有重复值的索引
● 对于重复索引,返回Series,对应单个值的索引则返回标量。
![a1e71dacf7511745ebd30877479e0673.png](https://img-blog.csdnimg.cn/img_convert/a1e71dacf7511745ebd30877479e0673.png)
![39a9b27287506fe2ffeac6ee4cc292ce.png](https://img-blog.csdnimg.cn/img_convert/39a9b27287506fe2ffeac6ee4cc292ce.png)
Pandas 汇总和计算描述统计
● 常用方法选项
♢ axis:指定轴,DataFrame的行用0,列用1
♢ skipna:排除缺失值,默认值为True
♢ level:如果轴是层次化索引的,则根据level选取分组
Pandas 常用描述和汇总统计函数
count:非NA值得数量
describe:针对Series或者各DataFrame列计算汇总统计
min,max:计算最小值和最大值
argmin,argmax:计算能够获取到的最小值和最大值的索引位置
idxmin,idxmax:计算能够获取到的最小值和最大值的索引值
sum:值的总和
mean:值的平均数
median:值得算术中位数
mad:根据平均值计算平均绝对离差
● 数值型和非数值型的区别
● NA值被自动排查,除非通过skipna选项
![ffd603e4b07214e5a4d9ea61b92dfc57.png](https://img-blog.csdnimg.cn/img_convert/ffd603e4b07214e5a4d9ea61b92dfc57.png)
![d66916a80e78ee6023fa556a5516d6dc.png](https://img-blog.csdnimg.cn/img_convert/d66916a80e78ee6023fa556a5516d6dc.png)
![2b64e1a1373d3074b245ae640687c47d.png](https://img-blog.csdnimg.cn/img_convert/2b64e1a1373d3074b245ae640687c47d.png)
![2fbeca45c7e0ff199a722e228c02d8c9.png](https://img-blog.csdnimg.cn/img_convert/2fbeca45c7e0ff199a722e228c02d8c9.png)
![73d942938a631ef629720d253490a051.png](https://img-blog.csdnimg.cn/img_convert/73d942938a631ef629720d253490a051.png)
Pandas 汇总和计算描述统计 相关系数与协方差
● 相关系数:相关系数是用以反映变量之间相关关系密切程度的统计指标。(百度百科)
● 协方差:从直观上来看,协方差表示的是两个变量总体误差的期望。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值时另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,即其中一个变量大于自身的期望值时另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
Pandas 汇总和计算描述统计 唯一值以及成员资格
常用方法
● is_in:计算一个表示Series各值是否包含于传入的值序列中的布尔型数组
● unique:计算Series中唯一值数组,按发现的顺序返回
● value_counts:返回一个Series,其索引为唯一值,其值为频率,按计算数值降序排列
![7ea1722c2056c57c8d69426eaa9b538d.png](https://img-blog.csdnimg.cn/img_convert/7ea1722c2056c57c8d69426eaa9b538d.png)
![54cd33d17c00b31263df8a0c6c462eb7.png](https://img-blog.csdnimg.cn/img_convert/54cd33d17c00b31263df8a0c6c462eb7.png)
![657b8eb82d8c6400760d5337844b9dec.png](https://img-blog.csdnimg.cn/img_convert/657b8eb82d8c6400760d5337844b9dec.png)
Pandas 处理缺失数据
● NA处理方法
♢ dropna:根据各标签的值中是否存在缺少数据du
♢ fillba:样本值的标准差
♢ isnull:样本值的偏度
● NaN(Not a Number)表示浮点数和非浮点数组中的缺失数据
● None也被当作NA处理
![1776482ece8237e37fea8f6078f6f1d8.png](https://img-blog.csdnimg.cn/img_convert/1776482ece8237e37fea8f6078f6f1d8.png)
Pandas 滤除缺失数据
● dropna
● 布尔索引
● DatFrame默认丢弃任何含有缺失值的行
● how参数控制行为,axis参数选择轴,thresh参数控制留下的数量
![f5dffc9375de7448ef64925afc3a53b3.png](https://img-blog.csdnimg.cn/img_convert/f5dffc9375de7448ef64925afc3a53b3.png)
![b4927f328656ec6b42b5fc0d3040f089.png](https://img-blog.csdnimg.cn/img_convert/b4927f328656ec6b42b5fc0d3040f089.png)
![2118416210e471d6666efd8b7591853d.png](https://img-blog.csdnimg.cn/img_convert/2118416210e471d6666efd8b7591853d.png)
Pandas 填充缺失数据
● fillna
● inplace参数控制返回新对象还是就地修改
![90f2c4268f04905aa1823da3f35772bd.png](https://img-blog.csdnimg.cn/img_convert/90f2c4268f04905aa1823da3f35772bd.png)
![5c07527c3a0cd0329435519102943e6a.png](https://img-blog.csdnimg.cn/img_convert/5c07527c3a0cd0329435519102943e6a.png)
![3a7c2f8f071d503a385d044e9d065b6e.png](https://img-blog.csdnimg.cn/img_convert/3a7c2f8f071d503a385d044e9d065b6e.png)
![612ddb6f59f7bdc4ce4991f3686204c1.png](https://img-blog.csdnimg.cn/img_convert/612ddb6f59f7bdc4ce4991f3686204c1.png)
![3313837ef2b6c18f7d67122983c569a9.png](https://img-blog.csdnimg.cn/img_convert/3313837ef2b6c18f7d67122983c569a9.png)
![e10a5ee867f2b65b65821f53a03e4090.png](https://img-blog.csdnimg.cn/img_convert/e10a5ee867f2b65b65821f53a03e4090.png)
Pandas 层次化索引
● 使你能在一个轴上拥有多个(两个以上)索引级别。抽象的说,它使你能以低纬度形式处理高维度数据。
● 通过stack与unstack变换DataFrame
![9ef415991ec344f2a94c9330e0e511cb.png](https://img-blog.csdnimg.cn/img_convert/9ef415991ec344f2a94c9330e0e511cb.png)
![3fb093cbbe77588cba89eb37c514d001.png](https://img-blog.csdnimg.cn/img_convert/3fb093cbbe77588cba89eb37c514d001.png)
![81b633ac9c61bf4d6b8a4f2b31d4fb39.png](https://img-blog.csdnimg.cn/img_convert/81b633ac9c61bf4d6b8a4f2b31d4fb39.png)
![b9f7d25c7f977bf05fff1f0550d7e75d.png](https://img-blog.csdnimg.cn/img_convert/b9f7d25c7f977bf05fff1f0550d7e75d.png)
![90c092b02cb8faa4054c2bd98e745095.png](https://img-blog.csdnimg.cn/img_convert/90c092b02cb8faa4054c2bd98e745095.png)
重新分级顺序
● 索引交换
● 索引重新排序
![691c5ac6cda2aff9c63c698fc718294d.png](https://img-blog.csdnimg.cn/img_convert/691c5ac6cda2aff9c63c698fc718294d.png)
![89ccc3218f13fd983b73f36eada255fa.png](https://img-blog.csdnimg.cn/img_convert/89ccc3218f13fd983b73f36eada255fa.png)
根据级别汇总统计
● 指定索引级别和轴
![ba9b0abe640b0a601d00a9949b6eca5e.png](https://img-blog.csdnimg.cn/img_convert/ba9b0abe640b0a601d00a9949b6eca5e.png)
层次化索引 使用DataFrame的列
● 将指定列变为索引
● 移除或保留对象
● reset_index恢复
![f7727e7ccac985dfdb6bdcf709a55d9f.png](https://img-blog.csdnimg.cn/img_convert/f7727e7ccac985dfdb6bdcf709a55d9f.png)
![0e7a784b836be9a7d9e9980a7f192ea5.png](https://img-blog.csdnimg.cn/img_convert/0e7a784b836be9a7d9e9980a7f192ea5.png)
整数索引
● 歧义的产生
● 可靠的,不考虑索引类型的,基于位置的索引。
![9ce771b781b87266c4636b967e421147.png](https://img-blog.csdnimg.cn/img_convert/9ce771b781b87266c4636b967e421147.png)
![4e8cfc64f931b2e3379f8c927cf23959.png](https://img-blog.csdnimg.cn/img_convert/4e8cfc64f931b2e3379f8c927cf23959.png)
面板(Pannel)数据
通过三维ndarray创建pannel对象
● 通过ix[...]选取需要的数据
● 访问顺序:item -> major -> minor
● 通过stack展现面板数据
![3d023913e69e30c280209a77bf2c164c.png](https://img-blog.csdnimg.cn/img_convert/3d023913e69e30c280209a77bf2c164c.png)
参考文献:
1.pandas toolkit
2.pandas官方文档:
https://pandas.pydata.org/pandas-docs/stable/index.html
相关文章推荐
读完这篇文章不过瘾?请继续关注我们上一期的文章,来看看我们是如何用python分析周杰伦专辑所有的歌词,并用热词重写《说好不哭》。
点击蓝字标题,即可阅读 《数据科学 | 分析周杰伦75775字歌词后,我们用他最爱的词重写了《说好不哭》》
其他
数据科学 | 避坑!Python特征重要性分析中存在的问题
数据科学 | 『运筹OR帷幄』数据分析、可视化、爬虫系列教程征稿通知
温馨提示
可以在 本公众号后台 回复关键词:“pandas索引”获取本文示例代码与文件,如果觉得有用, 请勿吝啬你的留言和赞哦!~
—— 完 ——
![a7d6c11b48ebd05e362b27c91ee47e84.gif](https://img-blog.csdnimg.cn/img_convert/a7d6c11b48ebd05e362b27c91ee47e84.gif)
文章申明
Feb. 2020
文章作者:Paul
责任编辑:Paul 周岩
审核编辑:阿春
微信编辑:玖蓁
本文由『运筹OR帷幄』原创发布
如需转载请在公众号后台获取转载须知
![fea59add035b510fe09c1d404ec25393.png](https://img-blog.csdnimg.cn/img_convert/fea59add035b510fe09c1d404ec25393.png)
![fea59add035b510fe09c1d404ec25393.png](https://img-blog.csdnimg.cn/img_convert/fea59add035b510fe09c1d404ec25393.png)