第150集:数据分析小项目
核心内容
在本集中,我们将通过一个完整的数据分析小项目,综合运用之前学习的Python数据分析知识,包括Pandas数据处理、Matplotlib/Seaborn数据可视化等技能。
项目概述:电商销售数据分析
我们将分析一家电商平台的销售数据,了解销售趋势、用户行为和产品表现,为业务决策提供数据支持。
1. 项目目标
- 了解销售数据的整体情况
- 分析销售趋势和季节性
- 识别热销产品和类别
- 分析用户购买行为
- 提出业务优化建议
2. 数据准备
我们将使用模拟的电商销售数据,包含以下字段:
| 字段名 | 描述 |
|---|---|
| order_id | 订单ID |
| user_id | 用户ID |
| product_id | 产品ID |
| product_name | 产品名称 |
| category | 产品类别 |
| price | 单价 |
| quantity | 数量 |
| order_date | 订单日期 |
| city | 购买城市 |
| payment_method | 支付方式 |
3. 数据分析步骤
3.1 数据加载与预处理
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 加载数据
df = pd.read_csv('sales_data.csv')
# 查看数据基本信息
df.info()
# 检查缺失值
df.isnull().sum()
# 数据清洗
df['order_date'] = pd.to_datetime(df['order_date'])
df['total_amount'] = df['price'] * df['quantity']3.2 销售整体情况分析
# 总销售额
total_sales = df['total_amount'].sum()
# 总订单数
total_orders = df['order_id'].nunique()
# 总用户数
total_users = df['user_id'].nunique()
# 平均订单金额
average_order_value = total_sales / total_orders
print(f"总销售额:{total_sales:.2f}元")
print(f"总订单数:{total_orders}个")
print(f"总用户数:{total_users}人")
print(f"平均订单金额:{average_order_value:.2f}元")3.3 销售趋势分析
# 按月份统计销售额
df['month'] = df['order_date'].dt.to_period('M')
monthly_sales = df.groupby('month')['total_amount'].sum()
# 可视化销售趋势
plt.figure(figsize=(12, 6))
plt.plot(monthly_sales.index.astype(str), monthly_sales.values, marker='o', linewidth=2)
plt.title('月度销售趋势', fontsize=16)
plt.xlabel('月份', fontsize=12)
plt.ylabel('销售额(元)', fontsize=12)
plt.grid(True)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()3.4 产品类别分析
# 按类别统计销售额和销量
category_stats = df.groupby('category').agg({
'total_amount': 'sum',
'quantity': 'sum',
'order_id': 'nunique'
}).rename(columns={'order_id': 'order_count'})
# 可视化各类别销售额
plt.figure(figsize=(12, 6))
sns.barplot(x=category_stats.index, y=category_stats['total_amount'])
plt.title('各类别销售额', fontsize=16)
plt.xlabel('产品类别', fontsize=12)
plt.ylabel('销售额(元)', fontsize=12)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()3.5 热销产品分析
# 按产品统计销售额
product_sales = df.groupby('product_name')['total_amount'].sum().sort_values(ascending=False)
# 可视化前10热销产品
plt.figure(figsize=(12, 8))
product_sales.head(10).plot(kind='barh')
plt.title('前10热销产品', fontsize=16)
plt.xlabel('销售额(元)', fontsize=12)
plt.ylabel('产品名称', fontsize=12)
plt.tight_layout()
plt.show()3.6 用户行为分析
# 用户购买频率分析
user_order_count = df.groupby('user_id')['order_id'].nunique().sort_values(ascending=False)
# 用户消费金额分析
user_spending = df.groupby('user_id')['total_amount'].sum().sort_values(ascending=False)
# 可视化用户消费分布
plt.figure(figsize=(12, 6))
sns.histplot(user_spending, bins=30, kde=True)
plt.title('用户消费金额分布', fontsize=16)
plt.xlabel('消费金额(元)', fontsize=12)
plt.ylabel('用户数量', fontsize=12)
plt.tight_layout()
plt.show()3.7 城市销售分析
# 按城市统计销售额
city_sales = df.groupby('city')['total_amount'].sum().sort_values(ascending=False)
# 可视化城市销售额分布
plt.figure(figsize=(12, 8))
plt.pie(city_sales.values, labels=city_sales.index, autopct='%1.1f%%', startangle=90)
plt.title('各城市销售占比', fontsize=16)
plt.axis('equal')
plt.tight_layout()
plt.show()4. 项目总结与建议
4.1 主要发现
- 销售趋势呈现[具体趋势描述]
- [类别名称]类别销售额最高,占比[具体百分比]
- 前10名热销产品贡献了约[具体百分比]的销售额
- [城市名称]是销售额最高的城市
- 用户消费分布呈现[具体分布特征]
4.2 业务建议
产品策略:
- 加大对热销产品的推广力度
- 优化表现不佳的产品类别
营销活动:
- 在销售淡季推出促销活动
- 针对高价值用户制定个性化营销方案
库存管理:
- 根据销售趋势合理调整库存
- 关注热销产品的库存情况
用户运营:
- 提高新用户转化率
- 增强老用户复购率
5. 项目拓展
- 增加用户画像分析
- 预测未来销售趋势
- 分析用户留存率
- 产品推荐系统构建
总结
通过本项目,我们综合运用了Python数据分析的各项技能,完成了从数据加载、清洗、处理到可视化分析的完整流程。希望大家能够通过这个项目,巩固所学知识,并在实际工作中灵活应用数据分析技术。