开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第23天,点击查看活动详情
数据的筛选
我们学习了如何获取一条数据或者连续的多条数据,但是实际工作中我们经常需要处理上万条数据,特别是合并后的数据甚至上亿条,那么我们如何能快速筛选出符合条件的数据呢?
了解了数据的基本情况之后,第一个需求是将关注者超过100的用户数据获取出来。
我们已经准确获取到所有关注者超过100的用户数据,下面我们看一下代码的逻辑。
代码片段:
bools= df['关注者']>100首先判断每个用户的关注者数量是否大于100,大于则会返回True,表示该行被标记为True,否则被标记为False。bools记录了每一行是否符合筛选条件,是一个Series对象,其中的值是bool类型。
df1 = df[bools] 然后,根据bools每行的值来对df进行筛选,值为True,表示对应的行会留下,否则,则去除。
最后打印的df1数据就是关注者超过100的用户数据。这是pandas根据某列的值进行筛选的基本逻辑。
多条件的联合筛选
第二个需求是:获取关注者超过300并且关注的超过100的用户数据。
运行下面的代码。
上面的这段代码里,我们通过了2个限制条件
df['关注者']>300 和 df['关注']>100,分别得到 bool1和bool2这2个Series。
在我们的需求中,需要的数据是同时满足两个条件,所以我们使用逻辑与运算连接两个值,最后获取同时满足两个条件的值。
数据的排序
总结sort_values函数的用法
python中默认按行索引号进行排序,如果要自定义数据框的排序,可以用sort_values函数进行重定义排序。下面对sort_values中几个常用的参数进行讲解,它的具体语法如下:
sort_values(by=[列表],ascending=[True or False], axis=(1 or 0),inplace=True or False)
inplace=True参数和我们之前见过的作用一样,用来控制是否直接对原始数据进行修改。ascending可以控制排序的顺序,默认值为True从小到大排列,当它被设置为False的时候就可以实现倒序排列。ascending=False:将数据按照从大到小的顺序排列。inplace=True:用来控制是否直接对原始数据进行修改。by:决定了是按数据中的哪一列进行排序,将需要按照某列排序的列名赋值给by即可。
若想按年龄升序身高降序排列数据框,可在python中输入如下语句:
date_frame.sort_values(by = ['age','height'], ascending = [True,False])