第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 主要发现

  1. 销售趋势呈现[具体趋势描述]
  2. [类别名称]类别销售额最高,占比[具体百分比]
  3. 前10名热销产品贡献了约[具体百分比]的销售额
  4. [城市名称]是销售额最高的城市
  5. 用户消费分布呈现[具体分布特征]

4.2 业务建议

  1. 产品策略

    • 加大对热销产品的推广力度
    • 优化表现不佳的产品类别
  2. 营销活动

    • 在销售淡季推出促销活动
    • 针对高价值用户制定个性化营销方案
  3. 库存管理

    • 根据销售趋势合理调整库存
    • 关注热销产品的库存情况
  4. 用户运营

    • 提高新用户转化率
    • 增强老用户复购率

5. 项目拓展

  1. 增加用户画像分析
  2. 预测未来销售趋势
  3. 分析用户留存率
  4. 产品推荐系统构建

总结

通过本项目,我们综合运用了Python数据分析的各项技能,完成了从数据加载、清洗、处理到可视化分析的完整流程。希望大家能够通过这个项目,巩固所学知识,并在实际工作中灵活应用数据分析技术。

« 上一篇 简单数据可视化 下一篇 » 爬虫伦理与法律