当前位置:首页>python>python数据可视化技巧的100个练习 --33. 生成分布数据的山脊线图

python数据可视化技巧的100个练习 --33. 生成分布数据的山脊线图

  • 2026-10-11 06:13:37
python数据可视化技巧的100个练习 --33. 生成分布数据的山脊线图

重要性★★★★☆

难度★★★☆☆

您的任务是分析一家公司每月进行的客户满意度评分的分布情况。

该公司希望可视化过去 12 个月这些评分的变化情况。

您的任务是创建一个山脊线图,显示每个月的客户满意度评分分布。

为过去 12 个月生成合成数据,并使用山脊线图进行可视化。

【数据生成代码示例】

import numpy as npimport pandas as pd# 为过去 12 个月生成客户满意度评分的合成数据months = pd.date_range('2023-07-01', periods=12, freq='M').strftime('%Y-%m').tolist()data = [np.random.normal(loc=75, scale=10, size=200) for _ in months]# 创建 DataFramedf = pd.DataFrame({month: scores for month, scores in zip(months, data)})df = df.melt(var_name='Month', value_name='Satisfaction')

【图表答案】

【代码答案】

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns# 为过去 12 个月生成客户满意度评分的合成数据months = pd.date_range('2023-07-01', periods=12, freq='ME').strftime('%Y-%m').tolist()data = [np.random.normal(loc=75, scale=10, size=200) for _ in months]# 创建 DataFramedf = pd.DataFrame({month: scores for month, scores in zip(months, data)})df = df.melt(var_name='Month', value_name='Satisfaction')# 绘制山脊线图plt.figure(figsize=(10, 8))sns.violinplot(x='Satisfaction', y='Month', data=df, density_norm='width', inner=None)plt.title('过去 12 个月客户满意度评分的山脊线图')plt.xlabel('满意度评分')plt.ylabel('月份')plt.show()

首先,我们导入必要的库:numpy、pandas、matplotlib.pyplot 和 seaborn。

Numpy 和 pandas 用于数据处理,而 matplotlib 和 seaborn 用于数据可视化。

首先,我们为过去 12 个月生成客户满意度评分的合成数据。

我们使用 pd.date_range 创建月份列表,并将其格式化为字符串。

然后,对于每个月,我们使用 np.random.normal 生成 200 个随机满意度评分,这些评分遵循均值为 75、标准差为 10 的正态分布。

接下来,我们从生成的数据创建一个 pandas DataFrame。

DataFrame 中的每一列代表一个月,每一行代表一个满意度评分。

然后,我们使用 melt 函数将 DataFrame 转换为适合绘图的长格式。

melt 函数创建了两个列:“月份”和“满意度”,这是 seaborn 绘图函数所需的。

最后,我们使用 seaborn 的 violinplot 函数创建一个山脊线图。

我们将 x 轴设置为“Satisfaction”,y 轴设置为“Month”。

scale='width' 参数确保小提琴的宽度具有可比性。

我们使用 inner=None 去掉小提琴的内部部分,使图表看起来更整洁。

设置好图表的标题和轴标签后,我们使用 plt.show() 显示图表。

【小知识】

山脊线图适用于可视化多个类别或时间段内变量的分布。

它们特别有助于显示分布随时间的演变。

Seaborn 的 violinplot 常用于创建山脊线图,因为它提供了数据密度的清晰表示。

调整 violinplot 函数中的 scale 参数可以帮助有效比较不同的分布。

最新文章

随机文章