在Seaborn箱线图中获取数值

4

我希望能够通过Seaborn生成的箱线图获取特定值(例如中位数、四分位数)。例如,在下面的箱线图中(来源:链接),是否有任何方法可以获取媒体和四分位数,而不是手动估计?

import numpy as np
import seaborn as sns
sns.set(style="ticks", palette="muted", color_codes=True)

# Load the example planets dataset
planets = sns.load_dataset("planets")

# Plot the orbital period with horizontal boxes
ax = sns.boxplot(x="distance", y="method", data=planets,
             whis=np.inf, color="c")

我尝试了 'np.median(planets)',我得到了一个值,而不是每个箱线图的中位数。我将感激任何见解。 - Omar
我建议熟悉pandas的groupby方法: http://pandas.pydata.org/pandas-docs/stable/groupby.html - mwaskom
2个回答

3

我鼓励你熟悉使用pandas从数据框中提取数量信息。例如,您可以执行以下简单操作以获取您要查找的值(和其他有用的值):

planets.groupby("method").distance.describe().unstack()

该方法会打印出每个方法的一张有用数值表。

或者,如果您只需要中位数:

planets.groupby("method").distance.median()

嘿@mwaskom。有没有办法获取给定分位数的特定列的值?例如,我的df有一个名为“ID”的列。我可以执行此操作'cp.groupby([cp['issue_date'].dt.month]).describe().unstack()并获得像您上面展示的内容一样的东西。但是,对于每个组,我想要获取落在给定分位数中的ID。 - pceccon

0
有时我将我的数据作为一个数组列表而不是 pandas 使用。所以,针对这一点,你可能需要:
min(d), np.quantile(d, 0.25), np.median(d), np.quantile(d, 0.75), max(d)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接