Pandas完全指南:数据处理与分析从入门到实战
目录
引言
一、Pandas环境配置与核心概念
1.1 安装Pandas
1.2 导入惯例
1.3 核心数据结构
二、数据结构详解
2.1 Series创建与操作
2.2 DataFrame创建
三、数据查看与基本操作
3.1 数据预览
3.2 索引与选择
3.3 数据排序
四、数据清洗实战
4.1 处理缺失值
4.2 处理重复值
4.3 数据类型转换
4.4 字符串处理
五、数据处理进阶
5.1 数据筛选
5.2 列操作
5.3 应用函数
六、数据分组与聚合
6.1 基础分组
6.2 聚合计算
6.3 透视表
七、数据合并与连接
7.1 纵向合并
7.2 横向合并
7.3 数据连接
八、时间序列处理
8.1 时间索引
九、数据可视化
9.1 内置可视化
9.2 结合Matplotlib
十、实战案例:电商数据分析
结语
引言
Pandas是Python数据分析的核心库,提供了高效便捷的数据结构和数据分析工具。无论是数据清洗、转换、分析还是可视化,Pandas都能完美胜任。
一、Pandas环境配置与核心概念
1.1 安装Pandas
pip install pandas
1.2 导入惯例
import pandas as pd # 行业标准缩写
import numpy as np # 常配合使用
1.3 核心数据结构
Series:带标签的一维数组
DataFrame:二维表格型数据结构(核心)
二、数据结构详解
2.1 Series创建与操作
# 从列表创建
s = pd.Series([10, 20, 30, 40],
index=['a', 'b', 'c', 'd'],
name='sales')
# 从字典创建
data = {'北京': 2154, '上海': 2428, '广州': 1867}
city_series = pd.Series(data)
# 常用操作
print(s.values) # 值数组 [10 20 30 40]
print(s.index) # 索引 Index(['a','b','c','d'])
2.2 DataFrame创建
# 从字典创建
data = {
'城市': ['北京', '上海', '广州', '深圳'],
'人口(万)': [2154, 2428, 1867, 1756],
'GDP(万亿)': [3.92, 4.32, 2.82, 3.24]
}
df = pd.DataFrame(data)
# 从CSV文件创建
df = pd.read_csv('data.csv', encoding='utf-8')
# 从excel文件创建
df = pd.read_excel('data.xlsx', encoding='utf-8')
三、数据查看与基本操作
3.1 数据预览
df.head(3) # 查看前3行
df.tail() # 查看后5行(默认)
df.sample(5) # 随机查看5行
df.describe() # 数值型统计概览
3.2 索引与选择
# 列选择
df['城市'] # 单列 → Series
df[['城市','GDP']] # 多列 → DataFrame
# 行选择
df.loc[1] # 按标签选择行
df.iloc[0:3] # 按位置切片
# 布尔索引
df[df['人口'] > 2000]
3.3 数据排序
df.sort_values('GDP', ascending=False) # 按GDP降序
df.sort_index(ascending=False) # 按索引倒序
四、数据清洗实战
4.1 处理缺失值
# 识别缺失值
df.isnull().sum()
# 填充缺失值
df.fillna({'人口': df['人口'].mean()}, inplace=True)
# 删除缺失值
df.dropna(subset=['GDP'], inplace=True)
4.2 处理重复值
df.duplicated() # 标记重复行
df.drop_duplicates() # 删除重复行
4.3 数据类型转换
df['人口'] = df['人口'].astype(int)
df['日期'] = pd.to_datetime(df['日期'])
4.4 字符串处理
df['城市'] = df['城市'].str.upper() # 转大写
df['地址'] = df['地址'].str.replace('市', '') # 替换字符
五、数据处理进阶
5.1 数据筛选
# 多条件筛选
df[(df['人口'] > 2000) & (df['GDP'] < 4)]
# 使用query方法
df.query("2000 < 人口 < 2500 and GDP > 3")
5.2 列操作
# 新增计算列
df['人均GDP'] = df['GDP'] / df['人口'] * 10000
# 重命名列
df.rename(columns={'人口(万)': '人口'}, inplace=True)
# 删除列
df.drop(columns=['序号'], inplace=True)
5.3 应用函数
def classify_gdp(value):
if value > 4: return '高'
elif value > 3: return '中'
else: return '低'
df['GDP等级'] = df['GDP'].apply(classify_gdp)
六、数据分组与聚合
6.1 基础分组
# 按单列分组
grouped = df.groupby('地区')
# 按多列分组
grouped = df.groupby(['年份', '季度'])
6.2 聚合计算
agg_df = df.groupby('城市').agg({
'人口': ['mean', 'max', 'min'],
'GDP': 'sum'
})
6.3 透视表
pivot_df = pd.pivot_table(df,
values='销售额',
index='地区',
columns='季度',
aggfunc=np.sum)
七、数据合并与连接
7.1 纵向合并
combined = pd.concat([df1, df2], axis=0) # 行合并
7.2 横向合并
merged = pd.merge(df1, df2,
on='ID',
how='inner') # 内连接
7.3 数据连接
joined = df1.join(df2.set_index('ID'),
on='ID',
how='left')
八、时间序列处理
8.1 时间索引
df['日期'] = pd.to_datetime(df['日期'])
df.set_index('日期', inplace=True)
# 按年统计
df.resample('Y').sum()
# 滑动窗口
df.rolling(window=7).mean() # 7天移动平均
九、数据可视化
9.1 内置可视化
df.plot(kind='line', y='销售额', title='销售趋势')
df['GDP'].plot(kind='hist', bins=20)
9.2 结合Matplotlib
import matplotlib.pyplot as plt
plt.figure(figsize=(10,6))
df.groupby('城市')['人口'].mean().plot(kind='bar')
plt.title('各城市平均人口')
plt.show()
十、实战案例:电商数据分析
# 1. 数据加载
orders = pd.read_csv('orders.csv')
products = pd.read_csv('products.csv')
# 2. 数据合并
merged = pd.merge(orders, products, on='product_id')
# 3. 计算销售额
merged['sales'] = merged['quantity'] * merged['price']
# 4. 分析指标
daily_sales = merged.groupby('order_date')['sales'].sum()
top_products = merged.groupby('product_name')['sales'].sum().nlargest(5)
# 5. 可视化展示
daily_sales.plot(title='每日销售额趋势')
top_products.plot(kind='pie', autopct='%.1f%%')
结语
Pandas是数据分析领域的瑞士军刀,本文涵盖了其80%的常用功能。建议通过以下方式精进:
每天处理一个真实数据集
掌握高效查询方法(
.query()
、.eval()
)深入理解分组聚合机制
学习性能优化技巧(向量化操作)