楼主: YvonneOng
89 0

[教育经济学基本知识] 人工智能之数据分析 Pandas:第十一章 项目实践 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0173
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-6-7
最后登录
2018-6-7

楼主
YvonneOng 发表于 2025-12-10 11:59:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

人工智能之数据分析 Pandas

第十一章 项目实践

前言

本文围绕一个完整的 Pandas 实战案例,系统性地展示从数据加载、清洗、探索分析到可视化输出结论的全流程操作。通过本项目,帮助学习者深入掌握 Pandas 在真实业务场景中的核心应用。

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

项目目标:

  • 理解用户的购买行为模式
  • 识别高价值客户群体
  • 分析不同产品的销售趋势
  • 基于数据分析结果提出可行的运营优化建议

一、数据说明(模拟)

本项目使用两个主要的数据表进行分析:

  1. users.csv — 用户基本信息
    包含用户的基本属性信息。
    users.csv
user_id gender age city
U001 28 北京
U002 35 上海
  1. orders.csv — 订单记录
    包含每笔订单的详细交易信息。
    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 进行内存级处理和分析。

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

# ==============================
# 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 类型转换 ---
# 将订单日期转为 datetime 类型
orders['order_date'] = pd.to_datetime(orders['order_date'])
# 年龄列转换为支持空值的整型
users['age'] = users['age'].astype('Int16')

# --- 3.3 异常值处理 ---
# 剔除价格或数量小于等于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()

三、关键 Pandas 技能点回顾

  • 数据读取:熟练使用 pd.read_csv() 加载本地文件。
  • 缺失值处理:结合 isnull().sum() 检测并用统计值如中位数填充。
  • 类型转换:利用 pd.to_datetime()astype() 确保字段类型正确。
  • 数据合并:通过 pd.merge() 实现多表关联。
  • 特征构造:基于已有字段创建新变量,例如计算“总金额”。
  • 条件筛选:使用布尔索引过滤异常数据,提升数据质量。
  • 分组聚合:运用 groupby() 分析各类别、城市、性别的销售表现。

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

  • 引入时间序列分析,按月/季度观察销售额变化趋势。
  • 构建用户 RFM 模型,划分用户等级并制定精准营销策略。
  • 对商品类别进行销量排名,并结合利润率做进一步分析。
  • 添加地区维度的地图可视化,呈现各城市的消费能力分布。
  • 导出分析结果为 Excel 多工作表格式,便于汇报展示。

五、项目文件结构建议

为保证项目的可维护性和清晰度,推荐如下目录组织方式:

project_sales_analysis/
│
├── data/
│   ├── users.csv
│   └── orders.csv
│
├── code/
│   └── analysis.ipynb 或 analysis.py
│
├── output/
│   ├── results.csv
│   └── plots/
│       └── sales_trend.png
│
└── README.md

六、项目价值

该项目不仅涵盖了 Pandas 的常用操作,还体现了数据分析的实际流程与逻辑思维训练。适用于初学者巩固基础技能,也适合作为中级学习者的实战练手项目。通过该案例,能够有效提升数据清洗、整合、分析与洞察表达的综合能力。

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}")

df['age_group'] = pd.cut(df['age'], bins=[0, 18, 30, 50, 100], labels=['青少年', '青年', '中年', '老年'])

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

print("\\n年龄分布:")
print(df['age_group'].value_counts())

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

df['order_month'] = df['order_date'].dt.to_period('M')
monthly_sales = df.groupby('order_month')['total_amount'].sum()

users.csv

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 模型简化版)
# ==============================

today = df['order_date'].max()
rfm = df.groupby('user_id').agg({
  'order_date': lambda x: (today - x.max()).days,
  'order_id': 'count',
  'total_amount': 'sum'
}).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])

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]} 用户占比最高"""

三、关键 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()

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

  • 加入退货数据:深入分析退货率较高的商品品类,识别潜在质量问题或客户满意度风险。
  • 用户留存分析:计算用户的次月留存率,评估产品粘性与运营活动效果。
  • 关联规则挖掘:探索哪些商品经常被一起购买,为捆绑销售和推荐系统提供依据。
    mlxtend
  • 预测模型构建:基于 RFM 特征,结合 scikit-learn 等工具,建立用户流失预测模型。
  • 交互式仪表盘开发:利用 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 过渡项目的部分代码已整理归档,并将持续更新完善。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:pandas panda 数据分析 人工智能 Das

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-21 16:33