python - 如何获得 pandas.dataframe 中每个组的平均值,如 seaborn.factorplot

标签 python pandas seaborn

我有一个格式化为 Pandas 数据框的数据集。请在 seaborn 中查看此示例 http://seaborn.pydata.org/generated/seaborn.factorplot.html#seaborn.factorplot

>>> import seaborn as sns
>>> sns.set(style="ticks")
>>> exercise = sns.load_dataset("exercise")
>>> g = sns.factorplot(x="time", y="pulse", hue="kind", data=exercise)

借助 sns.factorplot,我可以按组查看数据的平均值(对于本例,图表显示按“种类”分组的 1/15/30 分钟脉搏平均值)。

我想直接获取图表中的“值”。 例如

time      kind     mean    standard deviation
1 min     running  xx      xx
15 min    running  xx      xx

我可以使用 2 深度循环来获得我想要的值,但我认为 pandas 中应该有一些更简单的东西,因为这是一个常见的要求。

与将返回图中所有值的 matplotlib 不同,seaborn 返回一个 Facetgrid 对象。 Facetgrid 好像没有我要的数据。

最佳答案

我想你需要groupbytimekindaggregatemeanstd:

print (exercise.groupby(['time','kind'])['pulse'].agg(['mean', 'std']))
#agg same as aggregate, only less typing ;)
#print (exercise.groupby(['time','kind'])['pulse'].aggregate(['mean', 'std']))
                 mean        std
time   kind                     
1 min  rest      90.2   6.545567
       walking   93.1   6.297266
       running   96.1   4.483302
15 min rest      90.9   6.118279
       walking   96.6   7.441625
       running  117.1  12.991023
30 min rest      91.4   5.337498
       walking   95.9   6.740425
       running  126.0  16.964014

df1 = exercise.groupby(['time','kind'])['pulse'].agg(['mean', 'std']).reset_index()
print (df1)
     time     kind   mean        std
0   1 min     rest   90.2   6.545567
1   1 min  walking   93.1   6.297266
2   1 min  running   96.1   4.483302
3  15 min     rest   90.9   6.118279
4  15 min  walking   96.6   7.441625
5  15 min  running  117.1  12.991023
6  30 min     rest   91.4   5.337498
7  30 min  walking   95.9   6.740425
8  30 min  running  126.0  16.964014

关于python - 如何获得 pandas.dataframe 中每个组的平均值,如 seaborn.factorplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416574/

相关文章:

python - 单击按钮后如何更改标签和单选按钮?

python - 使用 sorl-thumbnail 进行可疑操作

python - 修剪 pandas 中的每列值

python - 如何向堆积的 Pandas 区域图添加黑线?

python - 如何更改此条形图上条形的顺序?

python - 在 Python 中创建和注释分组条形图

python - 将箱线图排列为带有 seaborn `FacetGrid` 的网格

python - python 中的日期和时间为时间

python - manjaro linux 上 opencv 中的 ImportError

python - 为什么在我的数据中调用转置会将行索引从多重索引切换为平面索引?