大家好,我是章北海
在数据分析领域,Pandas 是一个不可或缺的 Python 库。
本文将通过一个真实的销售数据分析案例,系统地介绍 Pandas 的核心操作。无论你是数据分析新手还是希望系统复习的老手,这篇文章都值得收藏。
一、项目背景
假设你是一家连锁店的数据分析师,需要处理和分析全国各地区的销售数据。数据分散在不同的文件中,包括:
销售记录(CSV 格式) 客户信息(JSON 格式)
我们的目标是将这些数据整合起来,进行清洗和分析,最终得出有价值的商业洞察。
二、数据准备
首先,让我们创建示例数据:
# 创建示例 CSV 数据
sales_data = """
date,product,price,quantity,region
2024-01-01,A,100,5,North
2024-01-02,B,200,,South
2024-01-03,A,100,3,East
2024-01-04,C,300,4,West
2024-01-05,B,200,2,North
"""
# 创建示例 JSON 数据
customer_data = """
{
"customers": [
{"id": 1, "name": "张三", "region": "North"},
{"id": 2, "name": "李四", "region": "South"}
]
}
"""
# 将数据保存到文件
with open('sales.csv', 'w') as f:
f.write(sales_data)
with open('customers.json', 'w') as f:
f.write(customer_data)
三、数据导入
Pandas 提供了丰富的数据导入功能,可以处理多种格式的数据文件:
import pandas as pd
# 导入 CSV 格式销售数据
df_sales = pd.read_csv('sales.csv')
# 导入 JSON 格式客户数据
df_customers = pd.read_json('customers.json')
# 创建日期索引
date_range = pd.date_range(start='2024-01-01', end='2024-01-05', freq='D')
# 合并数据集
df_combined = pd.concat([df_sales, df_customers], axis=1)
四、数据清洗
数据清洗是数据分析中最重要的步骤,包括处理缺失值、数据转换等操作:
# 1. 处理缺失值
df_sales = df_sales.fillna(0) # 将缺失值填充为 0
# 2. 删除无效数据
df_sales = df_sales.dropna(how='all') # 删除全为空的行
# 3. 数据排序
df_sales = df_sales.sort_values('price') # 按价格排序
# 4. 数据转换
df_sales['total'] = df_sales.apply(lambda x: x['price'] * x['quantity'], axis=1)
# 5. 分组统计
region_stats = df_sales.groupby('region').agg({
'total': 'sum',
'quantity': 'count'
})
# 6. 数据合并
df_merged = df_sales.join(df_customers.set_index('region'), on='region')
# 7. 重命名列
df_sales = df_sales.rename(columns={'quantity': 'sales_volume'})
# 8. 设置索引
df_sales = df_sales.set_index('date')
五、数据统计分析
清洗完数据后,我们可以进行统计分析:
# 1. 查看数据概览
print("数据前 5 行:")
print(df_sales.head())
print("\n数据基本信息:")
print(df_sales.info())
# 2. 基础统计
print("\n基础统计值:")
print(df_sales.describe())
# 3. 详细统计
print("\n具体统计指标:")
print("平均价格:", df_sales['price'].mean())
print("价格中位数:", df_sales['price'].median())
print("销量总计:", df_sales['sales_volume'].count())
print("价格标准差:", df_sales['price'].std())
print("最高价格:", df_sales['price'].max())
print("最低价格:", df_sales['price'].min())
六、分析结果示例
数据前5行:
product price sales_volume region total
2024-01-01 A 100 5 North 500
2024-01-02 B 200 0 South 0
2024-01-03 A 100 3 East 300
2024-01-04 C 300 4 West 1200
2024-01-05 B 200 2 North 400
平均价格: 180.0
价格中位数: 200.0
销量总计: 5
价格标准差: 84.85
最高价格: 300
最低价格: 100
七、实战技巧总结
数据导入技巧
使用适当的 read_*() 函数导入不同格式的数据 合理使用 concat() 合并多个数据源
数据清洗要点
始终检查并处理缺失值 使用 groupby() 进行分组分析 灵活运用 apply() 进行数据转换
统计分析方法
先用 describe() 获取整体概览 根据业务需求选择合适的统计指标 注意异常值的处理
八、结语
本文通过一个完整的案例,展示了 Pandas 中最常用的数据处理操作。这些操作覆盖了数据分析工作中 90% 的日常需求。建议大家在实践中多加练习,熟能生巧。
记住,数据分析不仅仅是掌握这些技术操作,更重要的是培养数据思维,学会从数据中发现问题和洞察。
108页PDF小册子:搭建机器学习开发环境及Python基础
全网最全 Python、机器学习、AI、LLM 速查表(100 余张)