前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Pandas 1.x Cookbook · 第二版》第07章 过滤行

《Pandas 1.x Cookbook · 第二版》第07章 过滤行

作者头像
SeanCheney
发布2021-03-02 15:28:18
5570
发布2021-03-02 15:28:18
举报
文章被收录于专栏:SeanCheney的专栏SeanCheney的专栏

7.1 计算布尔统计信息

读取电影数据集,检查前几行:

判断电影时长是否超过两小时:

使用这个Series判断时长超过两小时的电影总和:

时长超过两小时的电影所占的比例:

前面的步骤没有删除缺失值,其实有误导性:

使用.describe方法输出概括统计性信息:

原理

使用.value_counts方法统计FalseTrue所占的比例:

更多

可以使用DataFrame中的两列,创建布尔Series:


7.2 构造布尔条件

读取数据:

创建变量用于存储布尔数组:

将所有过滤器组成一个布尔数组:

更多

比较运算符是有顺序的:


7.3 使用布尔数组进行过滤

读取数据,设置过滤条件:

再创建一组条件:

将这两个条件组成最后的条件:

用最后的条件过滤数据:

.loc也可以使用这个过滤条件:

另外也可以在.loc中指定列:

.iloc不支持布尔数组,但支持NumPy数组:

更多

可以将所有条件放入一行:


7.4 对比行过滤和索引过滤

读取数据,并进行筛选:

重复上面的步骤,使用STABBR列作为行索引,然后使用基于标签的进行提取:

比较两种方法的速度:

虽然用行索引快,但是创建行索引也需要时间:

更多

使用布尔条件选取多列:


7.5 使用唯一和有序索引选取

读取数据集,使用STABBR作为索引,判断索引是否是单调的:

对索引进行排序,并判断是否单调:

查询从这三个DataFrame选取TX的速度:

有序索引大大提高了速度。现在试试唯一索引:

使用布尔索引选取数据,返回的是个DataFrame:

使用行索引进行选取:

更多

使用城市名和州缩写作为行索引:

选取所有来自Miami, FL的学校:

比较二者的速度:


7.6 翻译SQL的WHERE子句

SQL语句如下:

使用Pandas实现上面SQL语句同样的目的:

查看数据集的信息:

创建过滤条件:

使用过滤条件筛选数据:

更多

和SQL类似,Pandas也有between方法:


7.7 用查询方法提高布尔索引的可读性

本节使用DataFrame的query方法。

读取数据:

创建查询字符串:


7.8 用.where方法保留Series的大小

读取数据,电影名作为索引,actor_1_facebook_likes列不为空:

使用describe方法查看:

用柱状图查看分布:

这张图看不出数据分布,大部分都是小于20000的:

数据中有缺失值:

where中可以设置other参数可以用于控制替换值:

创建另一个where条件:

前后两个Series大小相同:

重新用柱状图查看分布:

更多

Pandas有.clip.clip_lower.clip_upper三个方法用于最低值和最高值:


7.9 遮掩DataFrame的行

读取数据,创建条件:

mask方法遮挡上述条件的数据:

注意上面三四五是缺失值:

.equals方法检查这两个条件是不一样的:

但形状是一样的:

检查两个条件的数据类型:

Pandas有一个assert_frame_equal方法,也可以判断DataFrame是否相同:

更多

比较这两个条件的速度:


7.10 使用布尔值、整数位置和标签选取数据

读取数据,创建条件:

使用.loc过滤行:

这两个方法是等价的:

iloc需要将条件转换为numpy数组:

选取数据类型是int64的:

因为是Series,criteria_col必须要转化为numpy就可以用于iloc

loc中将条件和列合用:

.iloc必须使用列的位置:

(这小节和之前的内容重复不少)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 7.1 计算布尔统计信息
  • 7.2 构造布尔条件
  • 7.3 使用布尔数组进行过滤
  • 7.4 对比行过滤和索引过滤
  • 7.5 使用唯一和有序索引选取
  • 7.6 翻译SQL的WHERE子句
  • 7.7 用查询方法提高布尔索引的可读性
  • 7.8 用.where方法保留Series的大小
  • 7.9 遮掩DataFrame的行
  • 7.10 使用布尔值、整数位置和标签选取数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档