15. Pandas 综合实战案例(零售数据分析)

Pandas 综合实战案例(零售数据分析)

本文以零售业务为例,完整展示 Pandas 在数据导入、清洗、汇总分析与可视化中的综合应用。从原始数据到分析洞察,帮助读者掌握一条清晰、系统的数据分析流程,提升从"看懂数据"到"用好数据"的实战能力。


1. 数据导入与清洗

假设我们拥有一份零售交易数据,包含订单编号、客户地区、产品类别、销售额与数量等信息。

python 复制代码
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

sns.set_theme(style="whitegrid", font="SimHei", rc={"axes.unicode_minus": False})

# 模拟零售数据
data = {
    "订单ID": range(1,11),
    "客户地区": ["北京","上海","北京","深圳","上海","北京","广州","深圳","广州","上海"],
    "产品类别": ["电子","服装","电子","食品","电子","服装","食品","电子","服装","食品"],
    "销售额": [200, 150, 300, 100, 250, 180, 120, 220, 160, 130],
    "数量": [2, 1, 3, 1, 2, 1, 1, 2, 1, 1]
}

df = pd.DataFrame(data)
print("原始数据:\n", df.head())

结果显示前几行订单记录:

txt 复制代码
原始数据:
    订单ID 客户地区 产品类别  销售额  数量
0     1   北京   电子  200   2
1     2   上海   服装  150   1
2     3   北京   电子  300   3
3     4   深圳   食品  100   1
4     5   上海   电子  250   2

在任何分析前,都应首先进行缺失值检查:

python 复制代码
print("缺失值统计:\n", df.isnull().sum())
# 如果有缺失值,可使用 fillna 或 dropna 处理
# df['销售额'].fillna(df['销售额'].mean(), inplace=True)
txt 复制代码
缺失值统计:
 订单ID    0
客户地区    0
产品类别    0
销售额     0
数量      0
dtype: int64

输出结果表明数据完整,无需进一步清洗处理。


2. 分类汇总与趋势分析

2.1 按地区汇总销售额

不同地区销售额的总量往往反映了区域市场的活跃度。

python 复制代码
region_sales = df.groupby('客户地区')['销售额'].sum().sort_values(ascending=False)
print("按地区汇总销售额:\n", region_sales)
txt 复制代码
按地区汇总销售额:
 客户地区
北京    680
上海    530
深圳    320
广州    280
Name: 销售额, dtype: int64

北京与上海销售额明显领先,说明一线城市依旧是主要市场。

2.2 按产品类别汇总数量

进一步分析不同产品类型的销售数量:

python 复制代码
category_quantity = df.groupby('产品类别')['数量'].sum()
print("按产品类别汇总数量:\n", category_quantity)
txt 复制代码
按产品类别汇总数量:
 产品类别
服装    3
电子    9
食品    3
Name: 数量, dtype: int64

电子类产品销量遥遥领先,体现出更高的市场需求。

2.3 透视表多维分析

通过透视表可同时观察地区与产品类别两个维度的销售表现:

python 复制代码
pivot_table = df.pivot_table(
    values='销售额',
    index='客户地区',
    columns='产品类别',
    aggfunc='sum',
    fill_value=0
)
print("透视表(地区×产品类别销售额):\n", pivot_table)
txt 复制代码
透视表(地区×产品类别销售额):
 产品类别   服装   电子   食品
客户地区               
上海    150  250  130
北京    180  500    0
广州    160    0  120
深圳      0  220  100

这张表能直观发现,北京电子类销售额占据主导,而深圳食品类销售额相对突出。


3. 区间分组分析(cut)

为评估订单价值分布,可使用 pd.cut 对销售额分层:

python 复制代码
bins = [0, 150, 200, 300, 400]
labels = ['低', '中', '高', '超高']
df['销售额等级'] = pd.cut(df['销售额'], bins=bins, labels=labels)
sales_level_count = df['销售额等级'].value_counts().sort_index()
print("销售额等级分布:\n", sales_level_count)
txt 复制代码
销售额等级分布:
 销售额等级
低     4
中     3
高     3
超高    0
Name: count, dtype: int64

大多数订单集中在中低区间,说明高价值订单比例偏少。


4. 可视化展示

4.1 销售额趋势(柱状图)

python 复制代码
region_sales.plot(kind='bar', title='各地区销售额汇总', color='skyblue')
plt.ylabel('销售额')
plt.show()

从图中可以明显看到,北京与上海形成高峰区。

4.2 产品类别数量分布(饼图)

python 复制代码
category_quantity.plot(kind='pie', autopct='%1.1f%%', startangle=90, title='产品类别销售数量占比')
plt.ylabel('')
plt.show()

电子类占比接近三分之二,是主要销售来源。

4.3 销售额等级分布(柱状图)

python 复制代码
sales_level_count.plot(kind='bar', title='销售额等级分布', color='orange')
plt.ylabel('订单数量')
plt.show()

"中""高"两档占比最高,提示适合发展中端价位策略。

4.4 地区×产品类别销售额(堆叠柱状图)

python 复制代码
pivot_table.plot(kind='bar', stacked=True, title='地区与产品类别销售额分布')
plt.ylabel('销售额')
plt.show()

堆叠图让不同地区产品结构一目了然,北京、深圳以电子类为主,广州食品类占比较高。


5. 分析洞察

  1. 地区销售差异:北京、上海的销售额较高,深圳和广州次之,表明销售策略可针对高销售地区加强促销。
  2. 产品类别分布:电子类销售额和数量均占主导,可考虑重点补货与营销。
  3. 订单销售额分级:大部分订单集中在中高销售额段,说明高价值订单比例较低,可开发会员或大额促销策略。
  4. 可视化洞察:堆叠柱状图和饼图清晰展示了销售结构,为数据驱动决策提供直观依据。

6. 小结

本案例完整展示了从数据导入与清洗汇总分析与可视化展示的全过程,体现了 Pandas 在零售业务分析中的高效性与实用性。借助分组统计与透视表,我们能够快速洞察数据背后的结构特征,而可视化分析则进一步强化了结果的直观表达,使决策依据更具说服力。

相关推荐
qq_436962184 小时前
数据民主化实践:ChatBI赋能全民数据分析
数据挖掘·数据分析
量化交易曾小健(金融号)5 小时前
Python美股量化交易填坑记录——3.盈透(Interactive Brokers)证券API接口
开发语言·python
geneculture6 小时前
融智学院十大学部知识架构示范样板
人工智能·数据挖掘·信息科学·哲学与科学统一性·信息融智学
java1234_小锋6 小时前
TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 神经网络基础原理
python·深度学习·tensorflow·tensorflow2
JJJJ_iii6 小时前
【深度学习03】神经网络基本骨架、卷积、池化、非线性激活、线性层、搭建网络
网络·人工智能·pytorch·笔记·python·深度学习·神经网络
JJJJ_iii6 小时前
【深度学习05】PyTorch:完整的模型训练套路
人工智能·pytorch·python·深度学习
WIN赢6 小时前
【二叉树的递归算法与层序遍历算法】
数据结构
Zzzzmo_6 小时前
【Java】杨辉三角、洗牌算法
java·数据结构·算法
程序员小远7 小时前
常用的测试用例
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例