📜  如何在Python中使用 Seaborn 在 Boxplot 上显示均值?

📅  最后修改于: 2022-05-13 01:55:02.219000             🧑  作者: Mango

如何在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)



数据集的前 5 行

第 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)

现在,我们观察到均值标记为绿色三角形,这与我们的配色方案不符。

使用 showmeans 关键字参数绘制平均值

第 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)