Python库Pandas《Pandas Cookbook》第04章 选取数据

系统 1428 0

这是书籍《Pandas Cookbook》书籍第04章的代码复现,所有代码运行在Jupyter Notebook上,原讲解地址是:
https://www.jianshu.com/p/bd0bc1b5b4b6
我上传代码的github地址是:
https://github.com/Asunqingwen/PandasCookbook.git
github上有该书中用到的data,里面代码会不定期更新(因为工作原因,时间不定),直到本书学习完成!
相比原讲解,会穿插一些自己的理解,水平有限,请各路大神指正。

文章目录

  • 1.选取Series数据
  • 2.选取DataFrame的行
  • 3.同时选取DataFrame的行和列
  • 4.用整数和标签选取数据
  • 5.快速选取标量
  • 6.惰性行切片
  • 7.按照字母切片

1.选取Series数据

这段和第01章中Series的获取有点类似,主要是通过index和column_name进行行和列的选取,选取操作用到了iloc和loc函数——前者用整数或整数列表表示,后者用index或index的列表表示
Python库Pandas《Pandas Cookbook》第04章 选取数据子集_第1张图片

或者直接用类似Python方法的dict和list切片用法,还可以像list那样反向切片
Python库Pandas《Pandas Cookbook》第04章 选取数据子集_第2张图片

2.选取DataFrame的行

个人认为,这部分和第1部分讲的内容是一样的,都是通过iloc和loc函数选取DataFrame的行
Python库Pandas《Pandas Cookbook》第04章 选取数据子集_第3张图片

3.同时选取DataFrame的行和列

这部分相对于之前的两部分,也就是在iloc和loc上使用的参数变为了二维的,所以可以同时选取行和列
Python库Pandas《Pandas Cookbook》第04章 选取数据子集_第4张图片

4.用整数和标签选取数据

用整数和index结合column_name选取行和列,只是column_name对应的列数来源于get_loc(),index来源于index属性
Python库Pandas《Pandas Cookbook》第04章 选取数据子集_第5张图片

5.快速选取标量

当我们指定index和column_name,那么就会获取唯一的值,也可以叫标量。可以用loc和iloc,也可以用获取标量的专有函数at和iat。
这部分最有趣的地方是用到了一个Python中的魔法函数——%timeit,这个函数会自动运行其后的语句多次,以计算平均运行时间,区别于%time,只计算当前运行一次的时间

Python库Pandas《Pandas Cookbook》第04章 选取数据子集_第6张图片

6.惰性行切片

网上找了找,只有Python的generator部分有惰性的说法,即next()的时候才会开始计算下一个值,这里的惰性切片,我的理解就是——定义好合适的start,stop,step,一个接一个输出来,不用调用iloc或loc,内部实现可能就是基于generator的。
Python库Pandas《Pandas Cookbook》第04章 选取数据子集_第7张图片

但是这样的惰性切片操作不适用于列,对于列只能用iloc和loc
Python库Pandas《Pandas Cookbook》第04章 选取数据子集_第8张图片

7.按照字母切片

这部分感觉有点意思,用26个英文字母的顺序来进行切片,所以很明显得先基于索引排序,这样才使得索引列具有顺序意义,那么就能进行切片了,因为不排序,直接切片会产生如下错误:
ValueError: index must be monotonic increasing or decreasing
字面意思就是index必须单调递增或递减

Python库Pandas《Pandas Cookbook》第04章 选取数据子集_第9张图片

排序后,index符合要求,就可以切片了,其中涉及到了两个检查字母排序顺序的属性,s_monotonic_increasing()和is_monotonic_decreasing,顾名思义,就是是否单调递增或单调递减
Python库Pandas《Pandas Cookbook》第04章 选取数据子集_第10张图片


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论