暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Pandas使用总结(二):数据筛选

一叶扁舟 2020-06-28
5934

image.png

总结pandas的数据筛选的操作,可类比于sql的select功能。

一、普通筛选

  • 基础查看
df.head() # 前5行
df.tail() # 后5行
df.info() # 基本信息(包括缺失值)
df.shape # 查看维度
df.index # 行索引
df.columns # 列索引
df.dtypes # 数据类型
df.describe() # 统计信息 
  • 选取单个元素
df['a'][0] # 第0行,'a'列
df.iloc[0, 2] # 第0行,第2列
df.loc[0, 'a'] # 第0行,'a'列
  • 切片(多个元素)
df.iloc[1:, 1:2] # 行索引, 列索引(结果不包含2列)
df.loc[:, 'a':'b'] # 行名, 列名(结果会包含b列)
  • 跳跃多选: lookup
# 返回数组[Aa索引出的值, Bb索引出的值]
df.lookup(['A', 'B'], ['a', 'b'])
  • 删除数据
# 删除对应列
df.drop(['A', 'B'], axis=1)
  • 取该列数量最多的类别
df['A'].values_counts()#返回该列各个类别的数量
df['A'].values_counts().nlargest(3)#取类别数量最多的三类数据
df[~df['A'].isin(df['A'].values_counts().nlargest(3).index)]#选取总数据中符合:A列各类别数量前三 的数据
  • 查看该列有那些值
df['A'].unique()#查看该列值有哪些
  • 按数据类型筛选
df.select_dtypes(include='number')#选取包含数字的列 (object:字符型)
df.select_dtypes(exclude='number')#选取不包含数字的列

二、逻辑筛选(where)

  • 索引
# 索引逻辑筛选
df[df['A']*2 == df['C']]
df.query('A*2 == C') # 也可以`用query代替
  • isin(is in)
# 筛选条件:A列包含不包含空值的df
df[~df['A'].isin(np.nan, None)] 
  • contains(contains)
# 筛选条件:A列包含oracle的df
df[df['A'].str.contains('oracle', case=False, na=False)] # 筛选条件:A列包含oracle的df
df[df['A'].str.contains('1', case=False)] # case:是否忽略大小写
  • isnull() (is null)
# 筛选条件:非空
df[~df['A'].isnull()]
df[~df['A'].isin(np.nan, None)]
  • where (if)
# where(筛选出满足条件的行, 不满足返回的值「默认是nan」)
df.where(df['A']/2 == 0.5, 12)

可以使用apply()实现sql的case when

三、随机抽样

# 随机抽样(n也可以用frac=0.3「随机抽取30%」)
df.sample(n=10, replace=False)
df1 = df.sample(frac=0.75, random_state=1234)#将75%的数据划分给df1
df2 = df.drop(df1.index)#删除从df中df1剩下df2
最后修改时间:2020-07-08 18:36:27
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论