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

这是书籍《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张图片

你可能感兴趣的:(Pandas,Cookbook)