Python实现数据可视化对比
·
目录
1、编译背景:
在日常数据分析的过程中,经常需要对销售数据进行可视化对比,可视化对比说白了就是小学的统计图。
根据题目中的各种条件和数据,绘制出一个可以更加直观地读取信息的图像。
(以前给老师看vs现在给老板看)
2、运用技术:
Python3.11
pandas
matplotlib
3、整体思路:
1.首先就先将我们会用到的几个python库导入
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
2.然后就需要开始读取我们的信息了,通常数据肯定是存再一个excel表格中,所以需要利用pandas来读取一下表格
# 读取 Excel 文件
file_path = '文件路径' # Excel 文件路径
sheet_name = '表名称' # 工作表名称
# 使用 Pandas 读取 Excel 数据
data = pd.read_excel(file_path, sheet_name=sheet_name, skiprows=5)
# 输出一下表格的表头来测试表格读取是否正确
print(data.columns)
3.现在就需要输入我们对比数据的唯一标识(我这边就以货号来做展示)
product_id_1 = input("请输入第一个货号: ")
product_id_2 = input("请输入第二个货号: ")
4.现在就来判断一下我们输入的货号是否在我们的表格中,如果在就开始绘制数据折线
if product_id_1 in data["货号"].values and product_id_2 in data["货号"].values:
# 按照选择的货号过滤数据
product_data_1 = data[data["货号"] == product_id_1]
product_data_2 = data[data["货号"] == product_id_2]
# 提取月份列以及该产品的销售数据
months = data.columns[1:-1] # 获取除货号和总计以外的列作为月份
sales_data_1 = product_data_1.values[0][1:-1] # 获取第一个货号的销售数据
sales_data_2 = product_data_2.values[0][1:-1] # 获取第二个货号的销售数据
# 创建一个新的图形
plt.figure(figsize=(10, 5))
# 绘制第一个货号的折线图
plt.plot(months, sales_data_1, marker='o', linestyle='-', color='b', label=product_id_1)
# 绘制第二个货号的折线图
plt.plot(months, sales_data_2, marker='x', linestyle='--', color='r', label=product_id_2)
# 添加标题和标签
plt.title('销售数据折线图比较')
plt.xlabel('月份')
plt.ylabel('销售量')
# 旋转x轴标签以防止重叠
plt.xticks(rotation=45)
# 添加网格以提高可读性
plt.grid(True)
# 添加图例
plt.legend()
# 显示折线图
plt.tight_layout() # 调整子图间的布局
plt.show()
5.如果货号不在表格中,则输出”货号不存在,请输入两个有效的货号“
else:
print("货号不存在,请输入两个有效的货号。")
4、输出结果:

5、工作效果:
现在把系统给老板看,跟老板说,现在只要动动手指就能看到每种商品的销售曲线,老板不得夸你有细节!
6、完整代码:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 加载字体
font_path = 'C:/Windows/Fonts/simhei.ttf' # 字体路径
font_prop = fm.FontProperties(fname=font_path)
plt.rcParams['font.family'] = font_prop.get_name()
# 读取 Excel 文件
file_path = '文件路径' # Excel 文件路径
sheet_name = '工作表' # 工作表名称
# 使用 Pandas 读取 Excel 数据
data = pd.read_excel(file_path, sheet_name=sheet_name, skiprows=5)
print(data.columns)
# 输入两个需要对比的货号
product_id_1 = input("请输入第一个货号: ")
product_id_2 = input("请输入第二个货号: ")
# 检查货号是否存在于数据中
if product_id_1 in data["货号"].values and product_id_2 in data["货号"].values:
# 按照选择的货号过滤数据
product_data_1 = data[data["货号"] == product_id_1]
product_data_2 = data[data["货号"] == product_id_2]
# 提取月份列以及该产品的销售数据
months = data.columns[1:-1] # 获取除货号和总计以外的列作为月份
sales_data_1 = product_data_1.values[0][1:-1] # 获取第一个货号的销售数据
sales_data_2 = product_data_2.values[0][1:-1] # 获取第二个货号的销售数据
# 创建一个新的图形
plt.figure(figsize=(10, 5))
# 绘制第一个货号的折线图
plt.plot(months, sales_data_1, marker='o', linestyle='-', color='b', label=product_id_1)
# 绘制第二个货号的折线图
plt.plot(months, sales_data_2, marker='x', linestyle='--', color='r', label=product_id_2)
# 添加标题和标签
plt.title('销售数据折线图比较')
plt.xlabel('月份')
plt.ylabel('销售量')
# 旋转x轴标签以防止重叠
plt.xticks(rotation=45)
# 添加网格以提高可读性
plt.grid(True)
# 添加图例
plt.legend()
# 显示折线图
plt.tight_layout() # 调整子图间的布局
plt.show()
else:
print("货号不存在,请输入两个有效的货号。")
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)