Pandas教程:数据分析利器 - 从入门到精通
Pandas是Python中最强大的数据分析工具之一,它提供了高性能、易用的数据结构和数据分析工具。本教程将全面介绍Pandas的核心功能和实际应用。
一、Pandas基础
1.1 数据结构简介
Pandas主要有两种数据结构:
- Series(一维数据)
- DataFrame(二维数据)
import pandas as pd
import numpy as np
# 创建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)
# 创建DataFrame
df = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 28, 22],
'城市': ['北京', '上海', '广州']
})
print(df)
1.2 数据导入与导出
# 读取CSV文件
df = pd.read_csv('data.csv')
# 读取Excel文件
df = pd.read_excel('data.xlsx')
# 保存为CSV
df.to_csv('output.csv', index=False)
# 保存为Excel
df.to_excel('output.xlsx', index=False)
二、数据操作基础
2.1 查看数据
# 查看前几行数据
print(df.head())
# 查看基本信息
print(df.info())
# 查看统计摘要
print(df.describe())
# 查看数据维度
print(df.shape)
2.2 数据选择和过滤
# 选择列
print(df['姓名'])
print(df[['姓名', '年龄']])
# 条件过滤
print(df[df['年龄'] > 25])
# loc和iloc选择器
print(df.loc[0]) # 基于标签
print(df.iloc[0]) # 基于位置
三、数据清洗和预处理
3.1 处理缺失值
# 检查缺失值
print(df.isnull().sum())
# 填充缺失值
df.fillna(value=0) # 用0填充
df.fillna(method='ffill') # 用前一个值填充
df.fillna(method='bfill') # 用后一个值填充
# 删除缺失值
df.dropna()
3.2 数据转换
# 类型转换
df['年龄'] = df['年龄'].astype('int64')
# 重命名列
df = df.rename(columns={'姓名': 'name', '年龄': 'age'})
# 替换值
df['城市'] = df['城市'].replace('北京', 'Beijing')
四、数据分析和聚合
4.1 分组操作
# 按城市分组并计算平均年龄
print(df.groupby('城市')['年龄'].mean())
# 多个聚合操作
print(df.groupby('城市').agg({
'年龄': ['mean', 'max', 'min'],
'姓名': 'count'
}))
4.2 排序
# 按年龄排序
df_sorted = df.sort_values('年龄', ascending=False)
# 多列排序
df_sorted = df.sort_values(['城市', '年龄'], ascending=[True, False])
五、高级操作
5.1 合并数据
# 合并两个DataFrame
df1 = pd.DataFrame({
'编号': ['A1', 'A2', 'A3'],
'姓名': ['张三', '李四', '王五']
})
df2 = pd.DataFrame({
'编号': ['A1', 'A2', 'A4'],
'成绩': [90, 85, 88]
})
# 内连接
merged = pd.merge(df1, df2, on='编号', how='inner')
# 外连接
merged = pd.merge(df1, df2, on='编号', how='outer')
5.2 数据透视表
# 创建透视表
pivot_table = pd.pivot_table(df,
values='年龄',
index='城市',
columns='性别',
aggfunc='mean')
5.3 时间序列
# 创建日期范围
dates = pd.date_range('20230101', periods=6)
# 时间序列数据
ts = pd.Series(np.random.randn(6), index=dates)
# 重采样
print(ts.resample('M').mean()) # 按月重采样
六、实用技巧
6.1 数据可视化
import matplotlib.pyplot as plt
# 绘制折线图
df['年龄'].plot(kind='line')
plt.show()
# 绘制柱状图
df.groupby('城市')['年龄'].mean().plot(kind='bar')
plt.show()
6.2 性能优化
# 使用适当的数据类型
df['年龄'] = df['年龄'].astype('int32') # 降低内存使用
# 使用query进行高效过滤
df.query('年龄 > 25 and 城市 == "北京"')
总结
Pandas的主要优势:
- 强大的数据处理能力
- 灵活的数据结构
- 高效的数据分析工具
- 丰富的数据导入/导出功能
- 与其他数据科学工具良好的集成
使用建议:
- 熟练掌握基础操作
- 善用链式操作提高代码可读性
- 注意内存使用效率
- 充分利用Pandas的向量化操作
- 经常查阅官方文档获取最新特性