找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4439

积分

0

好友

577

主题
发表于 半小时前 | 查看: 2| 回复: 0

重要性 ★★★★☆
难度 ★★★☆☆  

作为零售公司的数据分析师,你需要比较两个季度的销售业绩。公司已提供 Q1 和 Q2 各产品类别的销售数据,现在要创建一张哑铃点图,直观展示每个品类在两个季度间的销售变化。这张图需要清晰呈现两个季度的数值以及它们之间的差异。接下来使用 Python 生成样本数据、完成处理并绘图,整个过程要加上合适的标签和格式,让图表易于解读。

数据生成代码示例

import pandas as pd
import numpy as np

np.random.seed(42)
categories = ['Electronics', 'Clothing', 'Home', 'Books', 'Sports', 'Food']
q1_sales = np.random.randint(100, 1000, len(categories))
q2_sales = q1_sales + np.random.randint(-200, 400, len(categories))
data = pd.DataFrame({'Category': categories, 'Q1_Sales': q1_sales, 'Q2_Sales': q2_sales})

图表答案

Q1与Q2销售额对比哑铃点图

代码答案

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

np.random.seed(42) 
categories = ['Electronics', 'Clothing', 'Home', 'Books', 'Sports', 'Food'] 
q1_sales = np.random.randint(100, 1000, len(categories)) 
q2_sales = q1_sales + np.random.randint(-200, 400, len(categories))
data = pd.DataFrame({'Category': categories, 'Q1_Sales': q1_sales, 'Q2_Sales': q2_sales}) 
fig, ax = plt.subplots(figsize=(10, 6)) 
y_positions = range(len(categories)) 

# Plot lines connecting Q1 and Q2 sales 
[plt.plot([row.Q1_Sales, row.Q2_Sales], [i, i], 'o-', color='gray', linewidth=1) for i, row in data.iterrows()] 

# Plot Q1 sales (blue dots) 
ax.scatter(data['Q1_Sales'], y_positions, color='blue', s=50, label='Q1 销售额') 

# Plot Q2 sales (red dots) 
ax.scatter(data['Q2_Sales'], y_positions, color='red', s=50, label='Q2 销售额') 

# Set y-axis labels and ticks 
ax.set_yticks(y_positions) 
ax.set_yticklabels(categories) 

# Set labels and title 
ax.set_xlabel('销售额($)') 
ax.set_title('Q1 与 Q2 销售额对比') 
ax.legend() 

# Add grid lines 
ax.grid(True, axis='x', linestyle='--', alpha=0.7) 

# Adjust layout and display plot 
plt.tight_layout() 
plt.show()

Python绘制哑铃点图的代码与输出结果

这段代码创建了一个哑铃点图,用于比较不同产品类别在两个季度之间的销售数据。以下是数据处理和可视化的详细步骤。

数据生成

使用 NumPy 为 Q1 和 Q2 生成随机销售数据。np.random.seed(42) 确保随机数据可重复,接着创建 pandas DataFrame 来存储类别名称和销售数据。

图表设置

使用 matplotlib 创建图表,设置图表大小为 10×6 英寸,并创建 y_positions 变量来确定每个类别的垂直位置。

绘制哑铃线

通过 plt.plot() 配合列表推导式,为每个类别绘制连接 Q1 和 Q2 销售的线段。这些线为灰色,两端带有圆形标记。

绘制销售点

使用 ax.scatter() 将 Q1 销售额绘制为蓝色点,Q2 销售额绘制为红色点,参数 s=50 设置点的大小。

Y 轴格式化

将 Y 轴刻度设置为与 y_positions 匹配,并用类别名称标记这些刻度。

标签和标题

添加 X 轴标签“销售额($)”,设置图表标题,并添加图例以区分 Q1 和 Q2 销售额。

网格线

添加垂直虚线网格,便于读取具体销售数值。

最终调整

使用 plt.tight_layout() 自动调整图表布局,最后通过 plt.show() 显示图表。

这种可视化技巧能有效展示每个产品类别从 Q1 到 Q2 的销售变化。哑铃形状便于比较两个数值,连接线的长度对应变化幅度;蓝红颜色编码进一步提升了图表的可读性。

小知识

  • 哑铃图(也称为 DNA 图或杠铃图)非常适合比较多个类别中的两个相关数值。
  • 这种图表因其外观类似哑铃而得名:两个数据点由一条线连接。
  • 哑铃图特别适用于商业环境中的前后对比,例如不同时间段的销售业绩。
  • 在数据科学中,np.random.seed() 技术至关重要,它能保证可重复性,让别人也能生成相同的“随机”数据。
  • matplotlib 高度可定制,除了哑铃图外,还可以创建各种统计图形。
  • 数据可视化中,“小倍数”原则(为不同类别重复相同的图表类型)同样适用于哑铃图。
  • 本示例中的 pandas DataFrame 展示了其在处理结构化数据方面的多功能性,无论是分析还是可视化任务都能胜任。



上一篇:特朗普被起诉:Truth Social 付费 API 卖“内幕”,最高月费 10 万美元
下一篇:Python用zipfile提取Word文档中的图片
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-8-14 04:46 , Processed in 1.191924 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表