Pandas 是一个功能全面的数据科学库,可用于数据清洗、处理和分析。本文将介绍 Pandas 提供的多种数据筛选方法,帮助大家更有效地处理和分析数据集。

先写一个简单的DataFrame数据集。
import pandas as pd
data = {'Name': ['Tom', 'Jerry', 'Mike', 'Tom', 'Jerry'],
'Age': [20, 21, 19, 18, 22],
'City': ['New York', 'London', 'Paris', 'New York', 'London']}
df = pd.DataFrame(data)
print(df)
输出:
Name Age City
0 Tom 20 New York
1 Jerry 21 London
2 Mike 19 Paris
3 Tom 18 New York
4 Jerry 22 London
loc[]进行标签定位筛选# 筛选Name为Tom的行
result = df.loc[df['Name'] == 'Tom']
print(result)
iloc[]进行位置定位筛选# 筛选前3行数据
result = df.iloc[:3]
print(result)
# 筛选年龄大于20的人
result = df[df['Age'] > 20]
print(result)
query()方法进行筛选# 筛选年龄大于20的人
result = df.query('Age > 20')
print(result)
isin()方法进行筛选# 筛选城市为New York或London的人
result = df[df['City'].isin(['New York', 'London'])]
print(result)
str.contains()方法进行字符串筛选# 筛选名字中包含'om'的人
result = df[df['Name'].str.contains('om')]
print(result)
between()方法进行数值范围筛选# 筛选年龄在18到20岁之间的人
result = df[df['Age'].between(18, 20)]
print(result)
apply()方法进行自定义条件筛选# 筛选名字长度大于4的人
def name_length(name):
return len(name) > 4
result = df[df['Name'].apply(name_length)]
print(result)
dropna()方法处理缺失值# 删除包含缺失值的行
result = df.dropna()
print(result)
原数据没有缺失值,结果没有变化。
replace()方法替换特定值# 将名字中的'Tom'替换为'Thomas'
result = df.replace({'Name': {'Tom': 'Thomas'}})
print(result)
lt() (less than) 来筛选小于某个值的数据# 筛选年龄小于20的人
result = df[df['Age'].lt(20)]
print(result)
gt() (greater than) 来筛选大于某个值的数据# 筛选年龄大于20的人
result = df[df['Age'].gt(20)]
print(result)
le() (less than or equal to) 来筛选小于或等于某个值的数据# 筛选年龄小于或等于20的人
result = df[df['Age'].le(20)]
print(result)
ge() (greater than or equal to) 来筛选大于或等于某个值的数据# 筛选年龄大于或等于20的人
result = df[df['Age'].ge(20)]
print(result)
ne() (not equal) 来筛选不等于某个值的数据# 筛选年龄不等于20的人
result = df[df['Age'].ne(20)]
print(result)
##筛选非空行
df['Gender']=['male','female',None,'female','female']
result = df[df['Gender'].notnull()]
print(result)
sort_values()结合head()筛选前N个最大/最小值# 筛选年龄最小的两个记录
result = df.sort_values('Age').head(2)
print(result)
astype()进行类型转换后筛选# 将Age列转换为字符串类型并筛选出年龄以'2'开头的人
df['Age'] = df['Age'].astype(str)
result = df[df['Age'].str.startswith('2')]
print(result)
idxmax()或idxmin()找到最大/最小值的索引后进行筛选# 找到年龄最大的人的索引
max_age_index = df['Age'].idxmax()
# 筛选出年龄最大的人
result = df.loc[max_age_index]
print(result)
groupby()结合transform()按条件筛选分组数据# 计算每个城市的最大年龄
max_ages = df.groupby('City')['Age'].transform('max')
# 筛选出每个城市中年龄最大的行
result = df[df['Age'] == max_ages]
print(result)
本文详细介绍了20种在Pandas中执行数据筛选的技巧,并给出了代码示例。这些方法灵活多样,能确保用户能够以高效的方式处理在各种各样的数据集。