数据分析利器:Pandas数据处理实战指南

一、Pandas简介:数据分析的瑞士军刀

Pandas是Python数据分析的核心库,它提供了两种主要数据结构:

  • Series:一维带标签数组

  • DataFrame:二维表格型数据结构(类似Excel表格)

import pandas as pd

# 创建示例DataFrame
data = {
    '姓名': ['张三', '李四', '王五'],
    '年龄': [25, 30, 28],
    '城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)

二、数据读取与查看

1. 常见数据源读取

# 读取CSV文件
df = pd.read_csv('data.csv')

# 读取Excel文件
df = pd.read_excel('data.xlsx')

# 读取JSON数据
df = pd.read_json('data.json')

2. 数据快速查看

df.head()      # 查看前5行
df.tail(3)     # 查看后3行
df.info()      # 查看数据概览
df.describe()  # 数值列统计信息

三、数据清洗实战

1. 处理缺失值

# 检测缺失值
df.isnull().sum()

# 填充缺失值
df['年龄'].fillna(df['年龄'].mean(), inplace=True)

# 删除缺失行
df.dropna(subset=['城市'], inplace=True)

2. 处理重复值

# 检测重复行
df.duplicated().sum()

# 删除重复行
df.drop_duplicates(inplace=True)

3. 数据类型转换

# 转换为字符串
df['年龄'] = df['年龄'].astype(str)

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

四、数据筛选与排序

1. 条件筛选

# 单条件筛选
young_people = df[df['年龄'] < 30]

# 多条件筛选
bj_young = df[(df['城市'] == '北京') & (df['年龄'] < 30)]

2. 排序操作

# 单列排序
df.sort_values('年龄', ascending=False)

# 多列排序
df.sort_values(['城市', '年龄'], ascending=[True, False])

五、数据分组与聚合

1. 基本分组统计

# 按城市分组计算平均年龄
df.groupby('城市')['年龄'].mean()

# 多维度分组
df.groupby(['城市', '性别'])['年龄'].agg(['mean', 'count', 'max'])

2. 透视表功能

# 创建透视表
pd.pivot_table(df, 
               index='城市', 
               columns='性别', 
               values='年龄', 
               aggfunc='mean')

六、数据合并与连接

1. 数据合并

# 纵向合并(相同列名)
pd.concat([df1, df2])

# 横向合并(相同行索引)
pd.concat([df1, df2], axis=1)

2. 数据连接

# 类似SQL的JOIN操作
pd.merge(df1, df2, on='用户ID', how='left')

七、实战技巧:高效数据处理

1. 避免循环,使用向量化操作

# 不推荐写法(使用循环)
for i in range(len(df)):
    df.loc[i, '年龄段'] = '青年' if df.loc[i, '年龄'] < 30 else '中年'

# 推荐写法(向量化操作)
df['年龄段'] = np.where(df['年龄'] < 30, '青年', '中年')

2. 使用apply函数处理复杂逻辑

# 自定义函数处理数据
def age_group(age):
    if age < 20: return '少年'
    elif age < 40: return '青年'
    else: return '中年'

df['年龄段'] = df['年龄'].apply(age_group)

八、常见问题解答

Q:如何提高Pandas处理大数据的速度?
A:可以尝试:

  1. 使用df.itertuples()替代df.iterrows()

  2. 考虑使用Dask库处理超大数据

  3. 将对象类型转换为category类型节省内存

Q:怎样处理日期数据?
A:Pandas有强大的日期处理功能:

df['日期'].dt.year      # 提取年份
df['日期'].dt.month     # 提取月份
df['日期'].dt.day_name() # 获取星期名称

Q:如何导出处理后的数据?
A:与读取方法对应:

df.to_csv('output.csv', index=False)
df.to_excel('output.xlsx', sheet_name='结果')

结语

Pandas是数据分析师日常工作中最常用的工具之一。通过掌握这些核心功能,你已经能够处理80%以上的常见数据分析任务。记住:数据分析的关键不在于记住所有方法,而在于理解数据背后的业务逻辑。多加练习,你会越来越熟练!

你可能感兴趣的:(Python全栈成长笔记,数据分析,pandas,数据挖掘)