
Pandas作为Python数据分析的核心库,其数据筛选功能直接影响着数据处理效率。本文将介绍30种实用的数据筛选方法,涵盖基础查询到高级操作,每种方法都有代码示例。
# 筛选年龄大于30的记录
df[df['age'] > 30]# 筛选年龄大于30且工资低于50000的记录
df[(df['age'] > 30) & (df['salary'] < 50000)]# 使用字符串表达式筛选
df.query("age > 25 and department == 'Sales'")# 筛选姓名包含"John"的记录
df[df['name'].str.contains('John', na=False)]# 筛选邮箱以"gmail.com"结尾的记录
df[df['email'].str.endswith('gmail.com')]# 筛选符合电话号码格式的记录
df[df['phone'].str.match(r'^\d{3}-\d{3}-\d{4}$')]# 筛选年龄在25到35之间的记录
df[df['age'].between(25, 35)]# 筛选工资在前20%的记录
df[df['salary'] > df['salary'].quantile(0.8)]# 筛选温度变化绝对值大于5的记录
df[df['temperature_change'].abs() > 5]# 筛选部门为销售或市场的记录
df[df['department'].isin(['Sales', 'Marketing'])]# 筛选部门不是HR或IT的记录
df[~df['department'].isin(['HR', 'IT'])]# 筛选2024年的记录
df[df['date'].between('2024-01-01', '2024-12-31')]# 筛选3月份的记录
df[df['date'].dt.month == 3]# 筛选周末的记录
df[df['date'].dt.dayofweek.isin([5, 6])]# 筛选邮箱不为空的记录
df[df['email'].notna()]# 筛选电话号码为空的记录
df[df['phone'].isna()]# 筛选数值型列
numeric_cols = df.select_dtypes(include=['number'])# 排除对象类型列
non_object_cols = df.select_dtypes(exclude=['object'])# 筛选特定行和列
df.loc[df['score'] > 90, ['name', 'score']]# 筛选前100行的第2,4,6列
df.iloc[:100, [1, 3, 5]]# 筛选每个部门工资前3的员工
df.groupby('department').apply(lambda x: x.nlargest(3, 'salary'))# 筛选成员数超过10的部门
df.groupby('department').filter(lambda x: len(x) > 10)# 筛选工资最高的5条记录
df.nlargest(5, 'salary')# 筛选最早入职的10名员工
df.sort_values('hire_date').head(10)# 随机抽取50条记录
df.sample(n=50, random_state=42)# 随机抽取10%的记录
df.sample(frac=0.1, random_state=42)# 筛选姓名和邮箱重复的记录
df[df.duplicated(subset=['name', 'email'], keep=False)]# 去除重复记录,保留第一次出现
df.drop_duplicates(subset=['name', 'email'], keep='first')# 使用自定义函数筛选复杂条件
df[df.apply(lambda row: len(row['name']) > 5 and row['age'] < 40, axis=1)]# 对于大型数据集使用eval提升性能
df[df.eval('age > 30 and salary > 50000')]使用query代替布尔索引:对于大型数据集,query方法通常更高效。
避免链式操作:尽量使用单一操作代替多个链式操作。
使用适当的数据类型:将字符串转换为分类类型可以提升筛选速度。
利用索引:对经常筛选的列建立索引。
掌握这30种筛选方法,让你的数据分析效率提升数倍。
“无他,惟手熟尔”!有需要的用起来!
如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!
本文分享自 Nicholas与Pypi 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!