前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2 个数据处理的小功能,非常实用!

2 个数据处理的小功能,非常实用!

作者头像
double
发布2020-05-08 16:02:50
3180
发布2020-05-08 16:02:50
举报
文章被收录于专栏:算法channel算法channel

df.query 过滤数据

0.25 版本开始支持 query 方法,可读性上又获得大幅提升,类似 sql 查询数据的写法,更加人性化。

下面举例说明,过滤数据常用三种方法。

代码语言:javascript
复制
df = pd.DataFrame({'A':np.random.randint(1,20,(8,)),
                   'B':np.random.randint(1,20,(8,)),
                   'C':np.random.randint(1,20,(8,))})
df

过滤条件:A列值大于其平均值,且 B列值大于 5 的行

方法 1

代码语言:javascript
复制
df[ (df['A'] > df["A"].mean()) & (df['B'] > 5)]

注意,& 前后必须要各自加一对 ()

方法 2

代码语言:javascript
复制
cr1 = df['A'] > df["A"].mean()
cr2 = df['B'] > 5
df[cr1 & cr2]

方法 3

代码语言:javascript
复制
mean = df["A"].mean()
df.query("A > @mean & B > 5")

query 是今天重点提到的,使用语法规则见上,变量前添加 @。这种语法的可读性大家觉得怎么样?

顺便提一下,如果列的名称中间有空格,有一个特别的语法,使用一对 `` 符号来标记列名:

代码语言:javascript
复制
df = pd.DataFrame({'First Name':['Jack','Mary','Mike']})
df.query('`First Name` == \'Jack\'')

以上三种方法得到结果都为:

快速找出最多的分类

首先读入数据:

代码语言:javascript
复制
df = pd.read_csv("IMDB-Movie-Data.csv")
df

1000 行数据,genre 取值的频次统计如下:

代码语言:javascript
复制
vc = df["genre"].value_counts()
vc

打印结果:

代码语言:javascript
复制
Action,Adventure,Sci-Fi       50
Drama                         48
Comedy,Drama,Romance          35
Comedy                        32
Drama,Romance                 31
                              ..
Adventure,Comedy,Fantasy       1
Biography,History,Thriller     1
Action,Horror                  1
Mystery,Thriller,Western       1
Animation,Fantasy              1
Name: genre, Length: 207, dtype: int64

筛选出 top3 的 index:

代码语言:javascript
复制
top_genre = vc[0:3].index
print(top_genre)

打印结果:

代码语言:javascript
复制
Index(['Action,Adventure,Sci-Fi', 'Drama', 'Comedy,Drama,Romance'], dtype='object')

使用得到的 top3 的 index ,结合 isin,选择出相应的 df

代码语言:javascript
复制
df_top = df[df["genre"].isin(top_genre)]
df_top

结果:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • df.query 过滤数据
  • 快速找出最多的分类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档