👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
一、功能描述
采用python用于对零售公司商品销售情
况进行数据分析:
- 绘制商品名称和商品金额的雷达图,展示销售额排名前20的商品情况。
- 分析下单时间趋势并绘制折线图,展示每日销售数量的变化趋势。
- 分析商品金额和数量之间的关系并绘制散点图,以不同商品分类进行区分。
- 组合图:将饼状图和柱状图放置在同一图中,展示各品类销售比例和订单状态分布。
此脚本使用了Pandas进行数据处理,Matplotlib和Seaborn进行数据可视化。
👇👇👇 关注公众号,回复 “零售数据分析” 获取源码👇👇👇
部分数据如下:
二、设计思路
- 数据读取和准备:
- 使用Pandas库的
read_excel()
函数读取原始数据文件,确保文件路径正确。 - 数据文件包含订单记录,需要获取的信息包括商品分类、订单状态、商品名称、商品金额、下单时间和数量等。
- 将读取的数据存储在DataFrame对象中,方便后续的数据分析和可视化。
- 各品类销售情况分析及饼状图绘制:
- 使用
groupby()
函数按照商品分类对数据进行分组,并计算每个品类的销售数量总和。 - 将计算结果用于绘制饼状图,显示各品类销售比例。
- 使用Matplotlib库的
pie()
函数绘制饼状图,并设置相应的参数如标签、百分比显示等。
- 订单状态分析及柱状图绘制:
- 使用
value_counts()
函数统计订单状态的数量分布。 - 利用Seaborn库的
barplot()
函数绘制柱状图,展示不同订单状态的数量分布情况。 - 在柱状图上添加合适的标签,确保图表清晰易读。
👇👇👇 关注公众号,回复 “零售数据分析” 获取源码👇👇👇
- 商品名称和商品金额的雷达图绘制:
- 首先,按商品名称对数据进行分组,并计算每个商品的销售金额总和。
- 选取销售额排名前20的商品进行雷达图绘制。
- 利用Matplotlib库的
subplot()
函数创建子图,绘制雷达图。 - 设置雷达图的角度、标签、标题等参数,确保图表完整显示并清晰表达销售情况。
- 下单时间趋势分析及折线图绘制:
- 将下单时间转换为日期时间类型,并设置为数据框索引,便于按时间进行数据重采样。
- 使用
resample()
函数按照日期进行重采样,并计算每日销售数量的总和。 - 利用Matplotlib库绘制折线图,展示销售数量随时间的变化趋势。
- 设置合适的标签、标题、轴标签等参数,使图表清晰易懂。
- 商品金额和数量关系分析及散点图绘制:
- 利用Seaborn库的
scatterplot()
函数绘制散点图,以商品金额为横坐标、数量为纵坐标,并按商品分类进行着色。 - 设置散点图的标题、轴标签、图例等参数,以便理解商品金额与数量之间的关系。
- 组合图绘制:
- 使用Matplotlib库的
subplot()
函数创建包含多个子图的图表,以便同时展示不同的图表。 - 将饼状图和柱状图放置在同一个图中,并设置合适的布局、标签等参数。
- 最后使用
tight_layout()
函数调整子图的布局,使图表整体美观且易于理解。
👇👇👇 关注公众号,回复 “零售数据分析” 获取源码👇👇👇
三、可视化分析
商品名称和商品金额的雷达图绘制:
👇👇👇 关注公众号,回复 “零售数据分析” 获取源码👇👇👇
下单时间趋势分析及折线图绘制:
商品金额和数量关系分析及散点图绘制:
👇👇👇 关注公众号,回复 “零售数据分析” 获取源码👇👇👇
组合图绘制:
👇👇👇 关注公众号,回复 “零售数据分析” 获取源码👇👇👇
四、部分代码
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] # 读取数据 df = pd.read_excel('原始记录条.xlsx', engine='openpyxl') category_sales = df.groupby('商品分类')['数量'].sum() order_status_counts = df['订单状态'].value_counts() # 名称和商品金额的雷达图 # 按商品金额降序排序 top20_products = df.groupby('商品名称')['商品金额'].sum().sort_values(ascending=False).head(20) # 绘制雷达图 categories = top20_products.index values = top20_products.values # 角度 angles = np.linspace(0, 2 * np.pi, len(categories), endpoint=False) # 使雷达图封闭 values = np.concatenate((values, [values[0]])) angles = np.concatenate((angles, [angles[0]])) # 创建雷达图 fig, ax = plt.subplots(figsize=(10, 10), subplot_kw=dict(polar=True)) ax.fill(angles, values, color='orange', alpha=0.5) ax.set_yticklabels([]) ax.set_xticks(angles[:-1]) ax.set_xticklabels(categories, color='grey', size=8) ax.set_title('Top 20 商品销售额雷达图', size=15, color='blue', y=1.1) plt.show() # 剩余代码略...
👇👇👇 关注公众号,回复 “零售数据分析” 获取源码👇👇👇