人工智能之数据分析 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》

相关推荐
NAGNIP19 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab21 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab21 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP1 天前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年1 天前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼1 天前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS1 天前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区1 天前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈1 天前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang1 天前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx