Pandas是Python数据分析的利器,其内置函数能大幅简化数据操作流程。本文介绍10个高频函数,结合代码示例,帮助您快速掌握核心功能。
1. apply()
功能:对DataFrame的行或列应用自定义函数。
场景:数据转换或复杂计算。
# 示例:计算BMI指数(体重kg / (身高m)^2)
df['BMI'] = df.apply(lambda row: row['weight'] / (row['height']/100)**2, axis=1)
2. groupby()
功能:按指定列分组,实现聚合分析。
场景:统计分组数据(如分地区销售总额)。
# 按城市分组计算平均薪资
grouped = df.groupby('city')['salary'].mean()
# 多列聚合(同时计算均值和最大值)
result = df.groupby('department').agg({'salary': ['mean', 'max']})
3. fillna()
功能:填充缺失值(NaN)。
场景:数据清洗时处理缺失值。
# 用均值填充年龄缺失值
df['age'] = df['age'].fillna(df['age'].mean())
# 用前向填充法填充(用前一行数据填充)
df['sales'] = df['sales'].fillna(method='ffill')
4. merge()
功能:合并多个DataFrame(类似SQL的JOIN)。
场景:整合多源数据。
# 按ID合并两个表(默认内连接)
merged_df = pd.merge(df1, df2, on='id')
# 左连接(保留左表所有数据)
merged_left = pd.merge(df1, df2, on='id', how='left')
5. pivot_table()
功能:创建数据透视表,多维数据汇总。
场景:交叉分析(如分地区、分产品统计)。
# 统计不同城市和性别的平均薪资
pivot = pd.pivot_table(
df,
values='salary',
index='city',
columns='gender',
aggfunc='mean'
)
6. value_counts()
功能:统计列中唯一值的频次。
场景:快速查看数据分布。
# 统计城市分布
city_counts = df['city'].value_counts()
# 显示占比(归一化)
city_ratio = df['city'].value_counts(normalize=True)
7. dropna()
功能:删除包含缺失值的行或列。
场景:清理无效数据。
# 删除所有包含缺失值的行
df_clean = df.dropna()
# 删除某列缺失值
df_clean_age = df.dropna(subset=['age'])
8. astype()
功能:强制转换列的数据类型。
场景:修复数据类型错误(如字符串转数值)。
# 将字符串列转为整数
df['user_id'] = df['user_id'].astype(int)
# 将日期字符串转为datetime类型
df['date'] = pd.to_datetime(df['date'])
9. sort_values()
功能:按指定列的值排序。
场景:排序分析(如按销售额降序)。
# 按薪资降序排列
df_sorted = df.sort_values('salary', ascending=False)
# 多列排序(先按城市升序,再按薪资降序)
df_sorted = df.sort_values(['city', 'salary'], ascending=[True, False])
10. query()
功能:通过表达式筛选数据。
场景:简化复杂条件查询。
# 筛选年龄大于30且薪资高于5万的记录
filtered = df.query('age > 30 and salary > 50000')
进阶技巧
链式操作:结合多个函数连续处理数据(如 df.fillna(0).groupby('city').mean())。
lambda函数:与apply()配合实现灵活计算。
pd.to_datetime():专门处理时间序列的转换函数。
通过掌握这10个函数,您能高效完成80%的日常数据处理任务。建议结合日常实际数据集练习,深化理解。
更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。
想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!