源码篇:python生成《蔬菜店销售数据分析报告》案例

本文将通过Python实现一个完整的蔬菜销售数据分析项目,涵盖数据生成、清洗、分析及可视化全流程。我们将利用模拟数据生成技术创建90天的销售记录,通过Pandas进行数据处理,结合Matplotlib和Seaborn实现多样化的可视化图表,并最终生成动态交互报告。

一、数据生成:模拟真实销售场景

为了模拟真实的蔬菜销售数据,我们设计了包含10种蔬菜(白菜、土豆、西红柿等)的90天销售记录。数据生成逻辑包含以下关键要素:

1、 价格波动模型

base_price = {'白菜': 2、5, 、、、}
price_fluctuation = 1 + (np、random、random() * 0、3 - 0、15)
price = round(base_price * price_fluctuation, 2)
  • 基础价格基于市场均价设定

  • 添加±15%的随机波动模拟市场变化

2、 销量生成机制

weekday = date、weekday()
day_factor = 1、3 if weekday >=5 else 1、0  # 周末销量提升30%
seasonal_factor = {'黄瓜':1、3, 、、、}  # 夏季蔬菜销量加成
quantity = int(base_quantity * day_factor * seasonal_factor)
  • 结合周内波动和季节性因素

  • 使用正态分布生成基础销量(μ=50, σ=10)

3、 利润计算逻辑

sales = price * quantity
cost_rate = np、random、uniform(0、6, 0、7)
profit = sales * (1 - cost_rate)
  • 成本率设置为60%-70%的随机值

  • 包含销售额、成本、利润等完整财务指标

最终生成的DataFrame包含以下字段:

字段名

类型

说明

日期

datetime

销售日期

蔬菜

string

品种名称

价格(元/kg)

float

当日售价

销量(kg)

int

销售重量

销售额(元)

float

当日总销售额

成本(元)

float

销售成本

利润(元)

float

销售利润

利润率

float

利润占销售额的百分比

二、数据分析:挖掘关键业务指标

1、 基础数据检查

print(df、info())
print(df、describe())
  • 数据完整性检查:90天×10种蔬菜=900条记录

  • 数值型字段统计:价格均值3、9元,销量均值50kg

2、 品类销售分析

vegetable_summary = df、groupby('蔬菜')、agg({
    '销量(kg)': 'sum',
    '销售额(元)': 'sum',
    '利润(元)': 'sum',
    '价格(元/kg)': 'mean'
})、sort_values('销售额(元)', ascending=False)
  • 发现TOP3品类:西红柿(15、8%)、黄瓜(14、2%)、土豆(13、5%)

  • 利润率排名:青椒(38、7%)、生菜(36、2%)、茄子(35、5%)

3、 时间序列分析

date_summary = df、groupby('日期')、agg({
    '销量(kg)': 'sum',
    '销售额(元)': 'sum',
    '利润(元)': 'sum'
})
  • 周度分析显示周末销量提升20-30%

  • 8月中旬(第33周)出现销售高峰

4、 利润构成分析

df['利润率'] = df['利润(元)'] / df['销售额(元)'] * 100
  • 整体平均利润率:32、4%

  • 发现成本敏感型品类:胡萝卜(利润率28、3%)

三、可视化设计:多维度数据呈现

我们设计了9种可视化图表,覆盖静态分析与动态交互:

1、 动态热力图(每周销售额)

def animate_heatmap(i):
    pivot_df = df、pivot_table(index='周', columns='蔬菜', values='销售额(元)')、iloc[:i+1, :]
    sns、heatmap(pivot_df, cmap='plasma')
  • 使用plasma色阶突出数据变化

  • 动态展示销售趋势演变(周度累计)

2、 3D关系图(价格-销量-利润)

ax = fig、add_subplot(111, projection='3d')
for veg in df['蔬菜']、unique():
    ax、scatter(avg_price, avg_quantity, avg_profit)
  • 发现高利润区:高价格×高销量(如青椒)

  • 识别价格敏感品类(如白菜)

3、 动态条形图(周销量排名)

def update_bar_rank(frame):
    week_data = df[df['周'] == frame]、groupby('蔬菜')['销量(kg)']、sum()
    plt、barh(week_data、index, week_data、values)
  • 展示品类排名的动态变化

  • 发现黄瓜在第32周销量激增现象

4、 雷达图(综合指标评价)

categories = ['销量', '销售额', '利润', '利润率']
angles = [n / len(categories) * 2 * np、pi for n in range(len(categories))]
  • 标准化处理各指标(0-1)

  • 综合评分显示:西红柿综合表现最佳

5、 瀑布图(利润构成)

values = [avg_price, -avg_cost, avg_profit]
colors = ['#72B7B2', '#F67E4B', '#54A24B']
plt、bar(indices, values, color=colors)
  • 清晰展示售价→成本→利润的转化路径

  • 发现西红柿的成本占比达68、5%

四、动态报告生成:自动化文档输出

我们使用python-docx库生成结构化报告,包含: 1、 数据字典:字段说明表格 2、 关键指标:总销售额、利润率等核心数据 3、 可视化嵌入:自动插入静态图表 4、 动态图表指引:说明GIF动画文件位置

doc、add_picture('sales_pie_chart、png', width=Inches(6))
doc、add_paragraph("图4、1: 各蔬菜销售额占比饼图")、alignment = WD_ALIGN_PARAGRAPH、CENTER
五、技术实现要点

1、 中文支持

matplotlib、rcParams['font、sans-serif'] = ['SimHei']
matplotlib、rcParams['axes、unicode_minus'] = False
  • 解决中文字符显示问题

  • 正确显示负号

2、 性能优化

  • 数据生成使用列表推导式而非循环

  • 动态图表限制帧数(min(30, len(dates)))

  • 使用Pandas的groupby进行高效聚合

3、 颜色管理

vegetable_colors = dict(zip(
    df['蔬菜']、unique(), 
    plt、cm、tab10(np、linspace(0, 1, len(df['蔬菜']、unique())))
))
  • 为每个品类分配唯一颜色

  • 使用tab10色盘保证可读性

六、业务价值与扩展方向

1、 运营建议

  • 重点推广高利润品类(青椒、生菜)

  • 优化周末库存配置(增加30%)

  • 建立价格弹性模型(如黄瓜降价测试)

2、 技术扩展

  • 增加实时数据接口

  • 引入机器学习预测销量

  • 开发交互式仪表盘(Plotly Dash)

3、 数据应用场景

  • 供应链优化

  • 定价策略制定

  • 库存管理

  • 促销活动规划

七、源代码

代码见在这个文章的末尾:源码篇:python生成《蔬菜店销售数据分析报告》案例

链接地址:

https://mp.weixin.qq.com/s/Sce3B8L96mLs_xd4HQL4gg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值