[英]Changing width of bars in bar chart created using seaborn.factorplot
[英]How to get the mean for each group in pandas.dataframe like seaborn.factorplot
我有一个格式化为pandas数据框的数据集。 请在seaborn http://seaborn.pydata.org/generation/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深度循环来获取所需的值,但是我认为在熊猫中应该有一些简单的方法,因为这是常见的要求。
与matplotlib(它将返回绘图中的所有值)不同,seaborn返回Facetgrid对象。 看来Facetgrid没有我想要的数据。
我认为您需要按time
和kind
以及aggregate
mean
和std
列time
groupby
:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.