Pandas使用总结(一):数据读写
Pandas使用总结(三):数据处理
Pandas使用总结(四):数据分析计算
Pandas使用总结(五):数据可视化
总结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)