Pandas 常用函数:数据处理的得力助手
在数据分析的世界里,Pandas 是 Python 生态中不可或缺的工具。它不仅让数据处理变得高效,还极大降低了学习门槛。无论是清洗混乱的数据、进行统计分析,还是生成可视化图表,Pandas 都能轻松胜任。对于初学者来说,掌握一些核心的 Pandas 常用函数,就像学会了驾驶汽车的基本操作——踩油门、打方向盘、看后视镜,就能在数据之路上畅行无阻。
今天,我们就来系统梳理一批高频使用的 Pandas 常用函数,结合真实案例,带你一步步从“懵懂”走向“精通”。无论你是刚接触数据处理的新手,还是想巩固基础的中级开发者,这篇文章都能为你提供实用指导。
读取与查看数据:打开数据之门
在开始任何分析之前,第一步是把数据“请”进程序里。Pandas 提供了多种读取数据的函数,最常用的是 read_csv(),它能轻松加载 CSV 文件。
import pandas as pd
df = pd.read_csv('sales_data.csv')
print(df.head())
注释:
read_csv()是读取结构化数据的主力函数。head()显示前 5 行,帮助你快速了解数据结构。
注意:文件路径要正确,CSV 文件需包含表头(列名),否则可能出错。
如果你的数据是 Excel 格式,用 read_excel() 也很方便:
df = pd.read_excel('sales_data.xlsx', sheet_name='Sheet1')
print(df.head())
注释:
read_excel()支持多 sheet,通过sheet_name指定读取哪个工作表。
提示:使用前需安装openpyxl库(pip install openpyxl)。
查看数据的基本信息,用 info() 和 describe():
df.info()
df.describe()
注释:
info()帮你发现缺失值(NaN)和类型错误,describe()提供数值列的统计摘要。
比喻:info()像是体检报告,告诉你身体各部分是否健康;describe()则是各项指标的平均值和波动范围。
数据清洗:让数据“干净”起来
真实数据往往充满噪音:缺失值、重复记录、格式混乱……这些都会影响分析结果。Pandas 提供了强大的清洗工具。
处理缺失值
print(df.isnull().sum())
df_clean = df.dropna()
df['sales'].fillna(df['sales'].mean(), inplace=True)
df['region'].fillna(method='ffill', inplace=True)
注释:
isnull().sum()统计每列缺失值总数,是诊断数据质量的第一步。
dropna()会删行,适合缺失率极低的情况;fillna()更灵活,可选择均值、中位数、前向填充等策略。
比喻:缺失值像数据中的“黑洞”,不处理会让后续分析“失真”。
去重与标准化
df.drop_duplicates(inplace=True)
df.columns = df.columns.str.strip().str.lower()
注释:
drop_duplicates()会删除完全相同的行,inplace=True表示直接修改原数据。
str.strip()去除前后空格,str.lower()统一为小写,避免因大小写差异导致的错误。
数据筛选与条件查询:精准定位
在庞大的数据集中找到“你要的那部分”,是分析的核心。Pandas 的条件筛选功能非常强大。
high_sales = df[df['sales'] > 1000]
filtered_df = df[(df['sales'] > 1000) & (df['region'] == '华东')]
filtered_df = df.query('sales > 1000 and region == "华东"')
注释:
&表示“与”,|表示“或”,必须用括号包裹每个条件。
query()方法使用字符串表达式,可读性更强,特别适合复杂条件。
比喻:筛选就像在图书馆找书,你得用“作者+书名”精准定位,而不是翻遍所有书架。
数据聚合与分组统计:从个体到整体
当你想了解“不同区域的平均销售额”时,分组聚合就派上用场了。groupby() 是 Pandas 中最核心的函数之一。
grouped = df.groupby('region')['sales'].mean()
summary = df.groupby('region').agg({
'sales': ['mean', 'max', 'count'],
'profit': 'sum'
})
summary.columns = ['avg_sales', 'max_sales', 'order_count', 'total_profit']
注释:
groupby()将数据按指定列分组,agg()支持对不同列应用不同函数。
columns重命名后,输出更易读。
比喻:分组就像把学生按班级分组,再计算每个班的平均分,而不是总平均。
数据重塑与合并:连接与变形
现实中的数据常分散在多个表中。Pandas 提供了 merge() 和 concat() 来实现数据连接与拼接。
df1 = pd.read_csv('products.csv')
df2 = pd.read_csv('orders.csv')
merged_df = pd.merge(df1, df2, on='product_id', how='inner')
df_concat = pd.concat([df1, df2], axis=1)
df_concat = pd.concat([df1, df2], axis=0)
注释:
merge()类似 SQL 的 JOIN,how='inner'只保留两个表都有的键。
concat()支持axis=0(纵向)和axis=1(横向),灵活应对不同场景。
比喻:merge()像是拼图,需要匹配相同的边;concat()像是把两张纸贴在一起,不关心内容是否匹配。
数据导出与保存:让成果落地
分析完成后,把结果导出为文件,是工作闭环的关键。
df.to_csv('cleaned_sales.csv', index=False)
df.to_excel('cleaned_sales.xlsx', index=False)
df.to_json('sales.json', orient='records')
注释:
index=False避免导出时多出一列索引。
orient='records'生成 JSON 数组格式,适合 API 传输。
比喻:导出就像把分析报告打印出来,交给领导审阅。
实战案例:从零开始分析销售数据
假设你有一份销售数据,包含产品、区域、销售额、利润等字段。我们可以用 Pandas 常用函数 完成以下任务:
- 读取数据
- 清洗缺失值
- 筛选高价值客户
- 按区域分组统计
- 导出分析结果
df = pd.read_csv('sales_data.csv')
df.drop_duplicates(inplace=True)
df['sales'].fillna(df['sales'].mean(), inplace=True)
high_value = df[df['sales'] > 1500]
region_stats = high_value.groupby('region')['sales'].agg(['mean', 'sum'])
region_stats.to_csv('region_analysis.csv')
注释:这个流程展示了 Pandas 常用函数 的组合使用威力。
每一步都清晰、可复现,是真实项目中的标准操作。
总结:掌握核心,事半功倍
Pandas 的魅力在于它的简洁与强大。通过熟练掌握这些 Pandas 常用函数,你可以高效完成数据清洗、分析、聚合与导出,大幅提升工作效率。记住,不要试图一次性记住所有函数,而是从实际需求出发,逐步积累经验。
建议你动手实践:找一份真实 CSV 数据,尝试用本文介绍的函数完成一次完整分析。编程学习的本质是“做中学”,只有写过代码,才能真正理解。
数据的世界广阔无垠,而 Pandas 就是你探索的船。愿你在这条路上,越走越远,越走越稳。