首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >人工智能之数据分析 Pandas:第十章 项目实践

人工智能之数据分析 Pandas:第十章 项目实践

原创
作者头像
咚咚王
发布2025-12-09 18:43:38
发布2025-12-09 18:43:38
1580
举报

人工智能之数据分析 Pandas

第十一章 项目实践


前言

本文通过一个完整的 Pandas 项目实践案例,从 数据加载 → 清洗 → 探索 → 分析 → 可视化 → 输出结论,全流程掌握 Pandas 在真实场景中的应用。


🎯 项目名称:电商平台用户行为与销售分析(模拟数据)

目标:理解用户购买行为 识别高价值用户 分析产品销售趋势 提出运营建议


📁 一、数据说明(模拟)

我们有两张表:

1. users.csv — 用户基本信息

user_id

gender

age

city

U001

28

北京

U002

35

上海

2. orders.csv — 订单记录

order_id

user_id

product

category

price

quantity

order_date

O001

U001

手机

电子产品

5999

1

2024-03-15

O002

U002

连衣裙

服装

299

2

2024-03-16

💡 数据量:约 10,000 行订单 + 2,000 用户(适合 Pandas 处理)


🧪 二、完整代码实现(含注释)

代码语言:python
复制
# ==============================
# 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
sns.set_style("whitegrid")

# ==============================
# 2. 数据加载
# ==============================
users = pd.read_csv('users.csv')
orders = pd.read_csv('orders.csv')

print("用户表形状:", users.shape)
print("订单表形状:", orders.shape)

# ==============================
# 3. 数据清洗
# ==============================

# --- 3.1 检查缺失值 ---
print("\n【缺失值检查】")
print("用户表:\n", users.isnull().sum())
print("订单表:\n", orders.isnull().sum())

# 假设少量年龄缺失,用中位数填充
users['age'].fillna(users['age'].median(), inplace=True)

# --- 3.2 类型转换 ---
orders['order_date'] = pd.to_datetime(orders['order_date'])
users['age'] = users['age'].astype('Int16')  # 支持缺失的整型

# --- 3.3 异常值处理 ---
# 过滤价格 <= 0 或数量 <= 0 的订单
orders = orders[(orders['price'] > 0) & (orders['quantity'] > 0)]

# --- 3.4 合并数据 ---
df = pd.merge(orders, users, on='user_id', how='left')
df['total_amount'] = df['price'] * df['quantity']  # 新增总金额

print("\n合并后数据形状:", df.shape)
print(df.head())

# ==============================
# 4. 探索性数据分析(EDA)
# ==============================

# --- 4.1 整体销售概览 ---
total_revenue = df['total_amount'].sum()
total_orders = df['order_id'].nunique()
total_users = df['user_id'].nunique()

print(f"\n【销售概览】")
print(f"总销售额: ¥{total_revenue:,.0f}")
print(f"总订单数: {total_orders:,}")
print(f"活跃用户数: {total_users:,}")
print(f"客单价: ¥{total_revenue / total_users:,.0f}")

# --- 4.2 用户画像 ---
print("\n【用户画像】")
print("性别分布:")
print(df['gender'].value_counts(normalize=True))

print("\n年龄分布:")
df['age_group'] = pd.cut(df['age'], bins=[0, 18, 30, 50, 100], labels=['青少年', '青年', '中年', '老年'])
print(df['age_group'].value_counts())

# --- 4.3 商品分析 ---
print("\n【热销品类】")
top_categories = df.groupby('category')['total_amount'].sum().sort_values(ascending=False)
print(top_categories.head())

# --- 4.4 时间趋势 ---
df['order_month'] = df['order_date'].dt.to_period('M')
monthly_sales = df.groupby('order_month')['total_amount'].sum()

# 绘制月度销售趋势
plt.figure(figsize=(10, 5))
monthly_sales.plot(kind='line', marker='o')
plt.title('月度销售额趋势')
plt.ylabel('销售额(元)')
plt.xlabel('月份')
plt.grid(True)
plt.tight_layout()
plt.show()

# ==============================
# 5. 高价值用户分析(RFM 模型简化版)
# ==============================

# Recency: 最近一次购买距今天数
today = df['order_date'].max()
rfm = df.groupby('user_id').agg({
    'order_date': lambda x: (today - x.max()).days,  # R
    'order_id': 'count',                             # F
    'total_amount': 'sum'                            # M
}).rename(columns={
    'order_date': 'Recency',
    'order_id': 'Frequency',
    'total_amount': 'Monetary'
})

# 简单分层(可替换为分位数)
rfm['R_score'] = pd.cut(rfm['Recency'], bins=3, labels=[3, 2, 1])  # 越近分数越高
rfm['F_score'] = pd.cut(rfm['Frequency'], bins=3, labels=[1, 2, 3])
rfm['M_score'] = pd.cut(rfm['Monetary'], bins=3, labels=[1, 2, 3])

# 高价值用户:R/F/M 均 ≥2
high_value = rfm[(rfm['R_score'] >= 2) & (rfm['F_score'] >= 2) & (rfm['M_score'] >= 2)]
print(f"\n高价值用户数: {len(high_value)} ({len(high_value)/len(rfm)*100:.1f}%)")

# ==============================
# 6. 关键洞察与建议
# ==============================

insights = f"""
【核心洞察】
1. 销售主力:{top_categories.index[0]} 贡献最大(¥{top_categories.iloc[0]:,.0f})
2. 核心人群:{df['age_group'].value_counts().index[0]} 用户占比最高
3. 趋势:销售额在 {monthly_sales.idxmax()} 达到峰值
4. 用户价值:{len(high_value)} 名高价值用户(占 {len(high_value)/len(rfm)*100:.1f}%),贡献显著

【运营建议】
✅ 针对“青年”群体加大 {top_categories.index[0]} 类目营销
✅ 对高价值用户推送专属优惠券,提升复购
✅ 在销售低谷期(如 {monthly_sales.idxmin()})策划促销活动
"""

print(insights)

# ==============================
# 7. 输出结果
# ==============================

# 保存清洗后数据
df.to_csv('cleaned_ecommerce_data.csv', index=False)

# 保存高价值用户列表
high_value_users = pd.merge(high_value.reset_index(), users, on='user_id')
high_value_users.to_excel('high_value_users.xlsx', index=False)

print("\n✅ 分析完成!结果已保存。")

📊 三、关键 Pandas 技能点回顾

步骤

使用的 Pandas 功能

数据加载

read_csv(), to_datetime()

缺失值处理

isnull(), fillna()

类型优化

astype('Int16')

异常值过滤

布尔索引 (df['col'] > 0)

数据合并

pd.merge()

特征工程

新增列 df['total_amount'] = ...

分组聚合

groupby().agg()

分箱离散化

pd.cut()

时间序列

.dt.to_period('M')

RFM 分析

自定义分组 + 分箱打分

结果输出

to_csv(), to_excel()


🧩 四、可扩展方向(进阶练习)

  1. 加入退货数据:分析退货率高的品类
  2. 用户留存分析:计算次月留存率
  3. 关联规则挖掘:哪些商品经常一起买?(需 mlxtend
  4. 预测模型:用 RFM 特征预测用户流失(结合 scikit-learn)
  5. 交互式仪表盘:用 Plotly + Dash 构建 Web 应用

📦 五、项目文件结构建议

代码语言:python
复制
ecommerce_analysis/
├── data/
│   ├── users.csv
│   └── orders.csv
├── src/
│   └── analysis.py          # 主分析脚本
├── output/
│   ├── cleaned_ecommerce_data.csv
│   └── high_value_users.xlsx
└── README.md                # 项目说明

✅ 六、项目价值

  • 覆盖 Pandas 80% 核心技能
  • 贴近真实业务场景(电商是数据分析高频领域)
  • 产出可落地的业务建议
  • 代码结构清晰,可复用到其他行业(如金融、物流、SaaS)

💡 提示:你可以用 Kaggle 的电商数据集 替换模拟数据,获得更真实的体验!


后续

python过渡项目部分代码已经上传至gitee,后续会逐步更新。

资料关注

公众号:咚咚王

《Python编程:从入门到实践》

《利用Python进行数据分析》

《算法导论中文第三版》

《概率论与数理统计(第四版) (盛骤) 》

《程序员的数学》

《线性代数应该这样学第3版》

《微积分和数学分析引论》

《(西瓜书)周志华-机器学习》

《TensorFlow机器学习实战指南》

《Sklearn与TensorFlow机器学习实用指南》

《模式识别(第四版)》

《深度学习 deep learning》伊恩·古德费洛著 花书

《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》

《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》

《自然语言处理综论 第2版》

《Natural-Language-Processing-with-PyTorch》

《计算机视觉-算法与应用(中文版)》

《Learning OpenCV 4》

《AIGC:智能创作时代》杜雨+&+张孜铭

《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》

《从零构建大语言模型(中文版)》

《实战AI大模型》

《AI 3.0》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 人工智能之数据分析 Pandas
  • 前言
  • 🎯 项目名称:电商平台用户行为与销售分析(模拟数据)
  • 📁 一、数据说明(模拟)
    • 1. users.csv — 用户基本信息
    • 2. orders.csv — 订单记录
  • 🧪 二、完整代码实现(含注释)
  • 📊 三、关键 Pandas 技能点回顾
  • 🧩 四、可扩展方向(进阶练习)
  • 📦 五、项目文件结构建议
  • ✅ 六、项目价值
  • 后续
  • 资料关注
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档