2017-02-23 4 views
1

私はpandasデータフレームとしてフォーマットされたデータセットを持っています。 sns.factorplotでhttp://seaborn.pydata.org/generated/seaborn.factorplot.html#seaborn.factorplotseaborn.factorplotのようなpandas.dataframeの各グループの平均を取得する方法

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

seabornでこの例を参照してください、私はこのインスタンスに対して(グループによるデータの平均値を見ることができ、チャートがで1/15/30分グループでパルスの平均値を示して種類")。

グラフに「値」を直接入力したいと考えています。例

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

については 私は私がしたい値を取得するために、2深ループを使用することができますが、私はそれが一般的な要件であるため、パンダでeasyier何かがあるはずだと思います。

plot内のすべての値を返すmatplotlibと異なり、seabornはFacetgridオブジェクトを返します。ファセットグリッドには私が望むデータがないようです。

答えて

3

私はあなたが列timekindaggregatemeanstdgroupbyが必要だと思う:

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 
+0

ええ、それは私が欲しいもの、実際のです。どうもありがとうございました。 – Zealseeker

関連する問題