【无标题】

数据分析三件套实战:Pandas核心用法详解

数据分析三件套(NumPy, Pandas, Matplotlib)中,Pandas是数据处理的核心工具。以下为实战中最高频的用法,涵盖数据操作全流程:


一、数据读取与初探
import pandas as pd

# 读取CSV/Excel/SQL数据
df = pd.read_csv('data.csv')
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 基础探查
print(df.head(3))        # 查看前3行
print(df.info())         # 数据类型概览
print(df.describe())     # 数值统计分布


二、数据清洗(关键步骤)
# 处理缺失值
df['age'].fillna(df['age'].median(), inplace=True)  # 中位数填充
df.dropna(subset=['income'], inplace=True)          # 删除收入缺失行

# 处理异常值
q1 = df['price'].quantile(0.25)
q3 = df['price'].quantile(0.75)
df = df[(df['price'] > q1 - 1.5*(q3-q1)) & (df['price'] < q3 + 1.5*(q3-q1))]

# 数据类型转换
df['date'] = pd.to_datetime(df['date'])
df['category'] = df['category'].astype('category')


三、数据选择与过滤
# 列选择
df[['name', 'age']]                   # 选择多列
df.filter(like='_score')              # 模糊匹配列名

# 行选择
df[df['age'] > 30]                    # 条件过滤
df.query('income > 5000 & city == "北京"')  # 查询表达式

# 索引操作
df.set_index('id', inplace=True)      # 设置索引
df.loc[1001]                          # 按索引选取
df.iloc[10:20]                        # 按位置切片


四、数据处理与转换
# 新增计算列
df['bmi'] = df['weight'] / (df['height']**2)  # BMI计算

# 应用函数(例:薪资分级)
def salary_level(x):
    return 'high' if x > 15000 else 'medium' if x > 8000 else 'low'
df['salary_level'] = df['salary'].apply(salary_level)

# 分组标准化(Z-score)
df['score_std'] = df.groupby('department')['score'].transform(
    lambda x: (x - x.mean()) / x.std()
)


五、聚合分析与透视
# 基础聚合
df.groupby('city')['sales'].sum()     # 各城市销售总额
df.groupby(['year', 'quarter']).agg({
    'revenue': ['sum', 'mean'],
    'cost': 'median'
})

# 透视表
pd.pivot_table(df, 
               index='region', 
               columns='product', 
               values='sales', 
               aggfunc='sum',
               fill_value=0)


六、时间序列处理
# 时间特征提取
df['year'] = df['date'].dt.year
df['day_of_week'] = df['date'].dt.day_name()

# 重采样(日数据→月汇总)
monthly_sales = df.set_index('date').resample('M')['sales'].sum()


七、数据输出
# 保存处理结果
df.to_csv('cleaned_data.csv', index=False)
df.to_excel('report.xlsx', sheet_name='Summary')


实战技巧总结

  1. 链式操作:使用df.assign().query().groupby()连续处理避免中间变量
  2. 内存优化:对分类数据使用category类型可减少70%内存占用
  3. 批量处理:百万级数据优先使用vectorization(向量化)替代apply
  4. 性能监控:结合%timeit命令测试关键操作耗时

示例:统计各城市不同年龄段平均收入

(df.groupby(['city', pd.cut(df['age'], bins=[0,30,50,100])])
   ['income'].mean()
   .unstack()
   .style.format('{:.1f}'))

掌握这些核心操作可解决90%的日常数据处理需求,建议配合Jupyter Notebook实时验证操作结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值