Zea*_*ker 2 python pandas seaborn
我有一个格式化为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)
Run Code Online (Sandbox Code Playgroud)
使用sns.factorplot,我可以按组看到数据的平均值(在本例中,图表显示了按“种类”在1/15/30分钟组的脉冲平均值)。
我想直接获取图表中的“值”。例如
time kind mean standard deviation
1 min running xx xx
15 min running xx xx
Run Code Online (Sandbox Code Playgroud)
我可以使用2深度循环来获取所需的值,但我认为在熊猫中应该有一些简单的方法,因为这是常见的要求。
与matplotlib(它将返回绘图中的所有值)不同,seaborn返回Facetgrid对象。看来Facetgrid没有我想要的数据。
我认为您需要groupby按列time和kindand 和:aggregate meanstd
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
641 次 |
| 最近记录: |