读取电影数据集,检查前几行:
判断电影时长是否超过两小时:
使用这个Series判断时长超过两小时的电影总和:
时长超过两小时的电影所占的比例:
前面的步骤没有删除缺失值,其实有误导性:
使用.describe
方法输出概括统计性信息:
使用.value_counts
方法统计False
和True
所占的比例:
可以使用DataFrame中的两列,创建布尔Series:
读取数据:
创建变量用于存储布尔数组:
将所有过滤器组成一个布尔数组:
比较运算符是有顺序的:
读取数据,设置过滤条件:
再创建一组条件:
将这两个条件组成最后的条件:
用最后的条件过滤数据:
.loc
也可以使用这个过滤条件:
另外也可以在.loc
中指定列:
.iloc
不支持布尔数组,但支持NumPy数组:
可以将所有条件放入一行:
读取数据,并进行筛选:
重复上面的步骤,使用STABBR
列作为行索引,然后使用基于标签的进行提取:
比较两种方法的速度:
虽然用行索引快,但是创建行索引也需要时间:
使用布尔条件选取多列:
读取数据集,使用STABBR
作为索引,判断索引是否是单调的:
对索引进行排序,并判断是否单调:
查询从这三个DataFrame选取TX
的速度:
有序索引大大提高了速度。现在试试唯一索引:
使用布尔索引选取数据,返回的是个DataFrame:
使用行索引进行选取:
使用城市名和州缩写作为行索引:
选取所有来自Miami, FL
的学校:
比较二者的速度:
SQL语句如下:
使用Pandas实现上面SQL语句同样的目的:
查看数据集的信息:
创建过滤条件:
使用过滤条件筛选数据:
和SQL类似,Pandas也有between
方法:
本节使用DataFrame的query
方法。
读取数据:
创建查询字符串:
读取数据,电影名作为索引,actor_1_facebook_likes
列不为空:
使用describe
方法查看:
用柱状图查看分布:
这张图看不出数据分布,大部分都是小于20000的:
数据中有缺失值:
where
中可以设置other
参数可以用于控制替换值:
创建另一个where
条件:
前后两个Series大小相同:
重新用柱状图查看分布:
Pandas有.clip
、.clip_lower
、.clip_upper
三个方法用于最低值和最高值:
读取数据,创建条件:
用mask
方法遮挡上述条件的数据:
注意上面三四五是缺失值:
.equals
方法检查这两个条件是不一样的:
但形状是一样的:
检查两个条件的数据类型:
Pandas有一个assert_frame_equal
方法,也可以判断DataFrame是否相同:
比较这两个条件的速度:
读取数据,创建条件:
使用.loc
过滤行:
这两个方法是等价的:
iloc
需要将条件转换为numpy数组:
选取数据类型是int64
的:
因为是Series,criteria_col
必须要转化为numpy就可以用于iloc
:
loc
中将条件和列合用:
.iloc
必须使用列的位置:
(这小节和之前的内容重复不少)