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

人工智能之数据分析 Pandas

第十一章 项目实践


文章目录

  • [人工智能之数据分析 Pandas](#人工智能之数据分析 Pandas)
  • 前言
  • [🎯 项目名称:电商平台用户行为与销售分析(模拟数据)](#🎯 项目名称:电商平台用户行为与销售分析(模拟数据))
  • [📁 一、数据说明(模拟)](#📁 一、数据说明(模拟))
    • [1. `users.csv` --- 用户基本信息](#1. users.csv — 用户基本信息)
    • [2. `orders.csv` --- 订单记录](#2. orders.csv — 订单记录)
  • [🧪 二、完整代码实现(含注释)](#🧪 二、完整代码实现(含注释))
  • [📊 三、关键 Pandas 技能点回顾](#📊 三、关键 Pandas 技能点回顾)
  • [🧩 四、可扩展方向(进阶练习)](#🧩 四、可扩展方向(进阶练习))
  • [📦 五、项目文件结构建议](#📦 五、项目文件结构建议)
  • [✅ 六、项目价值](#✅ 六、项目价值)
  • 后续
  • 资料关注

前言

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


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

目标

  1. 理解用户购买行为
  2. 识别高价值用户
  3. 分析产品销售趋势
  4. 提出运营建议

📁 一、数据说明(模拟)

我们有两张表:

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 应用

📦 五、项目文件结构建议

复制代码
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,后续会逐步更新。

资料关注

公众号:咚咚王

gitee:https://gitee.com/wy18585051844/ai_learning

《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》

相关推荐
冷yan~8 小时前
OpenAI Codex CLI 完全指南:AI 编程助手的终端革命
人工智能·ai·ai编程
菜鸟‍8 小时前
【论文学习】通过编辑习得分数函数实现扩散模型中的图像隐藏
人工智能·学习·机器学习
AKAMAI8 小时前
无服务器计算架构的优势
人工智能·云计算
阿星AI工作室8 小时前
gemini3手势互动圣诞树保姆级教程来了!附提示词
前端·人工智能
刘一说9 小时前
时空大数据与AI融合:重塑物理世界的智能中枢
大数据·人工智能·gis
月亮月亮要去太阳9 小时前
基于机器学习的糖尿病预测
人工智能·机器学习
Oflycomm9 小时前
LitePoint 2025:以 Wi-Fi 8 与光通信测试推动下一代无线创新
人工智能·wifi模块·wifi7模块
机器之心9 小时前
「豆包手机」为何能靠超级Agent火遍全网,我们听听AI学者们怎么说
人工智能·openai
monster000w9 小时前
大模型微调过程
人工智能·深度学习·算法·计算机视觉·信息与通信
机器之心9 小时前
一手实测 | 智谱AutoGLM重磅开源: AI手机的「安卓时刻」正式到来
人工智能·openai