数据分析索引总结(下)Pandas索引技巧

 Datawhale干货 

作者:闫钟峰,Datawhale优秀学习者

寄语:本文对索引设定、常用索引型函数、重复元素处理、抽样函数等内容做了详细介绍。

索引设定

1. index_col参数

index_col是read_csv中的一个参数,而不是某一个方法,在使用 read_csv 函数读取文本的时候使用index_col参数指定用哪几个列作为索引
pd.read_csv('data/table.csv',index_col=['Address','School']).head()

2. reindex和reindex_like

reindex是指重新索引,它的重要特性在于索引对齐,很多时候用于重新排序。
df.head()
通过为reindex参数指定一个新的list,使得原始df的行重新排列。
df.reindex(index=sorted(list(df.index),reverse=True)).head()
如果传入的list是原始index的一个真子集, 则会实现分层抽样的效果
df.reindex(index=list(df.index)[::5])
为index传入的参数可以不是df的原始index中的值---这将引入缺失值构成的行,还可以传入重复索引。
df.reindex(index=[1101,1101,1203,1206,2402])
为columns传入参数,将对列索引做类似的事情。
df.reindex(columns=['Height','Height','Gender','Average']).head()
同时为index和columns传入原始index和columns 的真子集, 同样可以实现获取原始df的子df的目的。由于reindex的copy参数默认值是True,这时会返回一个新的变量,而不是修改原始df。
df.reindex(index=[1101,1203,2402],columns=['Height','Gender'])
可以选择缺失值的填充方法:
fill_value和method(bfill/ffill/nearest),其中method参数必须索引单调。bfill表示用所在索引1206的后一个有效行填充,ffill为前一个有效行。
df.reindex(index=[1101,1203,1206,2402],method='bfill')
数值上1205比1301更接近1206,因此用前者填充。nearest的最近, 是指在原始df中离得最近的,这个离得最近的可能并没有在被 reindex 的时候选中。
df.reindex(index=[1101,1203,1206,2402,1205,1301],method='nearest')
reindex_like的作用为生成一个横纵索引完全与参数列表一致的DataFrame,数据使用被调用的表。
df_temp = pd.DataFrame({'Weight':np.zeros(5),
                        'Height':np.zeros(5),
                        'ID':[1101,1104,1103,1106,1102]}).set_index('ID')
表中的值数据来自于df_temp, 而行索引和列索引则来自于传入的 df[0:5][['Weight','Height']]。由于df_temp中没有1105这个行索引,因此会引入缺失值。
df_temp.reindex_like(df[0:5][['Weight','Height']])
使用reindex方法实现上述reindex_like的效果--reindex_like可以看作是该方法的语法糖。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值