🏠 首页 攻略 Python Pandas 数据分析 7 个实战技巧,效率翻倍

Python Pandas 数据分析 7 个实战技巧,效率翻倍

Pandas 数据分析实战技巧:分组聚合、缺失值处理、日期分析、数据透视表等。从入门到进阶,附完整代码示例。

做数据分析,还在一条条循环?

上周帮朋友处理销售数据,10 万行 Excel,我用 Pandas 写了 5 行代码搞定。

朋友问我:「这也能算数据分析?」

我说:「能。关键是方法对。」

今天分享 7 个实战技巧,都是平时用得最多的。

1. 缺失值处理,别只会 dropna

import pandas as pd
df = pd.read_csv('data.csv')

# 看缺失值比例
print(df.isnull().mean())

# 按列填充,数值用中位数,字符串用众数
df['age'] = df['age'].fillna(df['age'].median())
df['city'] = df['city'].fillna(df['city'].mode()[0])

dropna() 会直接删数据,很多时候不合适。填充比删除更友好。

2. 分组聚合,groupby 是核心

# 按城市分组,算平均销售额
result = df.groupby('city')['sales'].agg(['mean', 'sum', 'count'])
print(result)

# 多列分组
df.groupby(['city', 'product'])['sales'].sum().reset_index()

groupby 之后一定要 .reset_index(),不然索引会乱。

3. 日期分析,to_datetime 一步到位

# 转换日期列
df['date'] = pd.to_datetime(df['date'])

# 提取年月日
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['weekday'] = df['date'].dt.day_name()

# 按月份汇总
df.set_index('date').resample('M')['sales'].sum()

日期处理是数据分析最常见的需求,掌握 .dt accessor 就够了。

4. 数据透视表,pivot_table 比 Excel 快

# 类似 Excel 透视表
pivot = pd.pivot_table(
    df,
    values='sales',
    index='city',
    columns='product',
    aggfunc='sum',
    fill_value=0
)
print(pivot)

透视表是报表必备,Pandas 比 Excel 快得多,尤其是大数据量。

5. 条件筛选,Query 更简洁

# 普通筛选
df[df['age'] > 18]

# Query 更简洁
df.query('age > 18 and city == "北京"')

# 按列名筛选
df.query('@threshold < age < 50')

query 用字符串表达条件,代码更短,逻辑更清晰。

6. 数据合并,merge 比循环好

# 内连接
df1.merge(df2, on='id', how='inner')

# 左连接保留左边所有数据
df1.merge(df2, on='id', how='left')

# 按索引合并
df1.merge(df2, left_index=True, right_index=True)

merge 是数据分析的基础操作,内连接、左连接根据需求选。

7. 性能优化,加速 10 倍不是梦

# 用 numpy 替代 lambda
df['new_col'] = np.where(df['age'] > 18, 'adult', 'minor')

# 批量处理用 groupby + apply
result = df.groupby('category')['value'].apply(sum)

# 大数据用 parquet 格式
df.to_parquet('data.parquet')
df = pd.read_parquet('data.parquet')

Parquet 格式比 CSV 快 5-10 倍,读写都优化过。大数据必须用。

实战场景:销售数据分析

import pandas as pd
import numpy as np

# 读取数据
df = pd.read_csv('sales.csv')

# 数据清洗
df['date'] = pd.to_datetime(df['date'])
df = df[df['amount'] > 0]

# 分析维度
result = df.groupby([df['date'].dt.month, 'product'])['amount'].agg(['sum', 'mean', 'count'])

# 导出报告
result.to_excel('report.xlsx')

就这 5 步,完成一个完整的销售分析报告。

总结

Pandas 不是越长越好,用最少的代码做最多的事。

这 7 个技巧覆盖了 80% 的日常需求。

你最喜欢哪个技巧?或者有什么独家秘籍?评论区分享。


本文基于 Pandas 2.0+ 版本测试,代码示例可直接运行。