Python 数据可视化实战:多维度销售数据分析与图表绘制

Python 数据可视化实战:多维度销售数据分析与图表绘制

原创 IT小本本 https://mp.weixin.qq.com/s/1-f0nrER_RJbHmC0iIEXMw 2025年03月27日 11:30 北京

本文将通过一个完整的实战案例。读取现有的excel数据,演示如何使用 Python 生成模拟数据、构建多维度分析模型,并结合 matplotlib、seaborn 等库实现 9 种专业图表的绘制。

一、数据读取与存储
复制代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.patches import Circle
import mplfinance as mpf

1. 数据

  • 销售数据:包含 5 大地区 × 5 大品类 × 12 个月的模拟数据,包含销售额、利润、销售量、客户满意度等指标。

  • 股价数据: 2023 年 1 月的股票交易数据,包含开盘价、最高价、最低价、收盘价和成交量。

    with pd.ExcelWriter('sales_data.xlsx') as writer:
    df.to_excel(writer, sheet_name='销售数据', index=False)
    stock_df.to_excel(writer, sheet_name='股价数据', index=False)

sales_data.xlsx 数据内容:
二、数据可视化方案

我们将通过 9 种图表类型,从不同维度解析销售数据:

三、核心图表解析

以下是对代码中各个可视化图表的详细讲解,帮助读者理解不同图表类型的作用及实现原理:


1. 区域销售对比(条形图)

图表类型 :垂直条形图
实现方式:

复制代码
region_sales = sales_df.groupby('地区')['销售额'].sum().sort_values(ascending=False)
sns.barplot(x=region_sales.index, y=region_sales.values)

核心功能:

  • 通过groupby按地区聚合销售额总和

  • 使用sort_values降序排列,突出高销售区域

  • Seaborn的barplot自动生成带颜色主题的条形图
    分析价值:快速识别销售额最高的地区(如华东),发现区域市场差异。


2. 品类销售分布(柱状图)

图表类型 :单色柱状图
代码亮点:

复制代码
sns.barplot(..., color='green')  # 统一颜色
plt.xticks(rotation=45)          # 标签倾斜防止重叠

设计选择:

  • 使用单一颜色避免多分类颜色干扰

  • 45度标签旋转提升可读性
    业务意义:对比不同产品类别(如电子产品 vs 日用品)的销售额贡献。


3. 月度销售趋势(折线图)

关键代码:

复制代码
monthly_sales = sales_df.groupby('日期')['销售额'].sum()
plt.plot(..., marker='o')  # 添加数据点标记

数据处理:

  • 按日期聚合每日销售额总和

  • 未显式重采样,需确保日期格式为连续序列
    趋势洞察:识别销售高峰月份(如11月可能受促销影响)。


4. 品类占比(饼图)

可视化优化:

复制代码
plt.pie(..., autopct='%1.1f%%', startangle=90)  # 显示百分比,调整起始角度
plt.axis('equal')  # 强制圆形显示

适用场景:展示整体销售构成,但超过5个分类时建议改用条形图。


5. 销售额-利润关系(散点图)

代码细节:

复制代码
plt.scatter(..., alpha=0.5)  # 半透明点处理重叠

分析维度:

  • X/Y轴分别映射销售额和利润

  • 点透明度避免高密度区域遮盖
    潜在发现:识别离群点(如高销售额低利润的异常订单)。


6. 品类趋势叠加(面积图)

数据重塑:

复制代码
category_monthly = sales_df.pivot_table(...)  # 生成日期-类别矩阵

图表特性:

  • 面积堆叠显示总量趋势

  • 颜色区分品类贡献比例
    趋势解读:观察不同品类随时间的增长/衰退模式(如服饰类季节性波动)。


7. 地区占比(圆环图)

实现技巧:

复制代码
plt.pie(..., wedgeprops=dict(width=0.5))  # 控制环宽
plt.gca().add_patch(Circle(...))         # 中心挖空

对比优势:相比饼图,更突出中心区域的可注释空间。


8. 多维指标(雷达图)

关键步骤:

  1. 数据标准化:

    复制代码
    region_metrics_norm = (region_metrics - min) / (max - min)
  2. 角度计算:

    复制代码
    angles = np.linspace(0, 2*np.pi, len(metrics))

分析价值:综合比较不同地区在销售额、利润等多指标上的均衡性。


9. 三维关系(气泡图)

维度映射:

  • X轴:销售额

  • Y轴:利润

  • 气泡大小:销售量
    代码实现:

    s=data['销售量']/50 # 缩放气泡尺寸
    alpha=0.7 # 透明叠加

业务洞察:发现高销售量但低利润的问题组合(需深入分析定价策略)。


知识拓展

  1. 布局管理 :

    复制代码
    plt.tight_layout()  # 自适应间距
    plt.subplots_adjust(hspace=0.4, wspace=0.3)  # 手动调整
  2. 样式统一 :

    复制代码
    sns.set_style("whitegrid")  # 网格背景
    plt.rcParams.update({'font.size': 10})  # 统一字体
  3. 输出质量 :

    复制代码
    plt.savefig(..., dpi=300, bbox_inches='tight')  # 高清保存

通过组合这些图表,可构建完整的销售分析看板,覆盖分布、趋势、构成、关联等多维度分析需求。实际应用中需根据数据特点调整图表类型,例如时序预测可加入ARIMA模型折线,地理数据可转换地图可视化。

四、技术实现亮点
  1. 中文支持优化

    plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文显示
    plt.rcParams['axes.unicode_minus'] = False # 负号显示

  2. 图表布局管理

    plt.tight_layout() # 自动调整子图间距
    plt.savefig('sales_analysis.png', dpi=300, bbox_inches='tight') # 高质量保存

  3. 数据预处理

  • 日期格式标准化(freq='ME' 生成月末日期)

  • 异常值处理(股价数据 price = max(price + change, 50))

  • 数据聚合(groupby 和 pivot_table 灵活组合)

五、图表选择建议
分析维度 推荐图表类型 适用场景
对比分析 条形图/柱状图 地区/品类销售额对比
结构分析 饼图/圆环图 市场份额占比
趋势分析 折线图/面积图 月度销售变化
多维分析 雷达图 综合指标评估
关系分析 散点图/气泡图 指标相关性探索
时间序列 K线图 金融数据可视化

🔮 源码获取

看原文:Python 数据可视化实战:多维度销售数据分析与图表绘制

相关推荐
小咕聊编程2 天前
基于Python的豆瓣电影数据可视化系统构建分析
开发语言·python·信息可视化
总要学点什么2 天前
第81篇:数据可视化-PM2.5分布——让圆点的胖瘦替每座城市报出浓度
前端·信息可视化·echarts·cesium·空间分析
瓶瓶持续学习中2 天前
空间智能与物理AI:国内厂商如何与英伟达协同发展
大数据·人工智能·信息可视化·架构
Elastic 中国社区官方博客2 天前
使用 OpenTelemetry 在 Elastic 中实现 Claude 平台的人工智能 agent 可观测性
大数据·运维·服务器·人工智能·elasticsearch·信息可视化·全文检索
DataGear3 天前
DataGear 6.1.1 发布,数据可视化分析平台
javascript·信息可视化·数据分析·echarts·数据可视化
数字新视界4 天前
模块化机房的设计与实施原理剖析
大数据·物联网·信息可视化·信息与通信·一体化机柜
龙亘川4 天前
适应人工智能发展、构建就业友好型发展方式
大数据·运维·人工智能·信息可视化·智慧城市
2601_954005624 天前
11 种触发 × 18 种行为:ricon 交互编排系统全解
前端·后端·物联网·数学建模·信息可视化·交互
总要学点什么5 天前
第79篇:数据可视化-模拟迁徙效果——把三十条航线画成会飞的弧
3d·信息可视化·数据挖掘·数据分析·gis·webgl·cesium
Elastic 中国社区官方博客5 天前
5 分钟内将 56 页扫描文档转化为带引用的答案:面向搜索无法读取的文档的检索增强生成流水线
大数据·运维·人工智能·elasticsearch·搜索引擎·信息可视化·全文检索