python表格数据的筛选

197 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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的用户数据。

运行下面的代码。

image.png

上面的这段代码里,我们通过了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])