如何在Python中使用 Seaborn 在 Boxplot 上显示均值?
箱线图是一种强大的数据可视化工具,用于了解数据的分布。它将数据拆分为四分位数,并根据从这些四分位数得出的五个数字对其进行汇总:
- 中位数:数据的中间值。标记为 Q2,描绘了第 50 个百分位数。
- 第一个四分位数: “最小非异常值”和中位数之间的中间值。标记为 Q1,描绘了第 25 个百分位数。
- 第三四分位数: “最大非异常值”和中位数之间的中间值。标记为 Q3,描绘了第 75 个百分位数。
- “最大非异常值”:按 (Q3 + 1.5*IQR) 计算。高于此值的所有值都被视为异常值。
- “最小非异常值”:按 (Q1 – 1.5*IQR) 计算。低于此值的所有值都被视为异常值。
它还可以表示数据的对称性、偏度和分布。
在Python 3 中,我们可以使用三种方法绘制箱线图,使用 matplotlib、使用 Pandas 或使用 seaborn。在这里,我们将使用 seaborn,它是一个 matplotlib 包装器,提供与 Pandas 数据结构的紧密集成以及比 matplotlib 更好的调色板选项。我们将使用 seaborn.boxplot() 方法,然后我们将学习如何在箱线图上显示均值。
步骤 1:导入库并加载数据集
Python3
# importing useful libraries
import seaborn as sns
import matplotlib.pyplot as plt
# using titanic dataset from
# seaborn library
df = sns.load_dataset("titanic")
# to see first 5 rows of dataset
print(df.head())
Python3
# to plot a boxplot of
# age vs survived feature
plt.figure(figsize=(10, 8))
sns.boxplot(x='survived',
y='age',
data=df)
plt.ylabel("Age", size=14)
plt.xlabel("Survived", size=14)
plt.title("Titanic Dataset", size=18)
Python3
# boxplot with showmeans
plt.figure(figsize=(10, 8))
sns.boxplot(x='survived',
y='age',
data=df,
showmeans=True) # notice the change
plt.ylabel("Age", size=14)
plt.xlabel("Survived", size=14)
plt.title("Titanic Dataset", size=18)
Python3
# customizing using meanprops
plt.figure(figsize=(10, 8))
sns.boxplot(x='survived',
y='age',
data=df,
showmeans=True,
meanprops={"marker": "+",
"markeredgecolor": "black",
"markersize": "10"})
plt.ylabel("Age", size=14)
plt.xlabel("Survived", size=14)
plt.title("Titanic Dataset", size=18)
第 2 步:使用 seaborn.boxplot() 绘制基本箱线图
蟒蛇3
# to plot a boxplot of
# age vs survived feature
plt.figure(figsize=(10, 8))
sns.boxplot(x='survived',
y='age',
data=df)
plt.ylabel("Age", size=14)
plt.xlabel("Survived", size=14)
plt.title("Titanic Dataset", size=18)
我们观察到中位数显示为四分位数,但未显示平均值。
第 3 步:为了显示均值,我们在 boxplot函数中使用了一个额外的关键字参数。我们将 showmeans 设置为 True。
蟒蛇3
# boxplot with showmeans
plt.figure(figsize=(10, 8))
sns.boxplot(x='survived',
y='age',
data=df,
showmeans=True) # notice the change
plt.ylabel("Age", size=14)
plt.xlabel("Survived", size=14)
plt.title("Titanic Dataset", size=18)
现在,我们观察到均值标记为绿色三角形,这与我们的配色方案不符。
第 4 步:要设置我们自定义的标记和标记颜色,我们将使用“meanprops”关键字参数,如下面的代码所示。
蟒蛇3
# customizing using meanprops
plt.figure(figsize=(10, 8))
sns.boxplot(x='survived',
y='age',
data=df,
showmeans=True,
meanprops={"marker": "+",
"markeredgecolor": "black",
"markersize": "10"})
plt.ylabel("Age", size=14)
plt.xlabel("Survived", size=14)
plt.title("Titanic Dataset", size=18)