gpt4 book ai didi

python - Pandas :生成并绘制平均值

转载 作者:太空狗 更新时间:2023-10-29 22:23:08 25 4
gpt4 key购买 nike

我有一个像这样的 Pandas 数据框:

In [61]: df = DataFrame(np.random.rand(3,4), index=['art','mcf','mesa'],
columns=['pol1','pol2','pol3','pol4'])

In [62]: df
Out[62]:
pol1 pol2 pol3 pol4
art 0.661592 0.479202 0.700451 0.345085
mcf 0.235517 0.665981 0.778774 0.610344
mesa 0.838396 0.035648 0.424047 0.866920

我想生成一行,其中包含基准中策略的平均值,然后绘制它。

目前,我这样做的方式是:

df = df.T
df['average'] = df.apply(average, axis=1)
df = df.T
df.plot(kind='bar')

是否有一种优雅的方式来避免双重转置?

我试过:

df.append(DataFrame(df.apply(average)).T)
df.plot(kind='bar')

这将附加正确的值,但不会正确更新索引并且图表会乱七八糟。

澄清。双重转置代码的结果是这样的:enter image description here这就是我要的。显示政策的基准和平均值,而不仅仅是平均值。我只是好奇我是否可以做得更好。

请注意,图例通常是乱七八糟的。修复:

ax = df.plot(kind='bar')
ax.legend(patches, list(df.columns), loc='best')

最佳答案

您可以简单地使用 DataFrame 的实例方法 mean 并绘制结果。无需换位。

In [14]: df.mean()
Out[14]:
pol1 0.578502
pol2 0.393610
pol3 0.634424
pol4 0.607450

In [15]: df.mean().plot(kind='bar')
Out[15]: <matplotlib.axes.AxesSubplot at 0x4a327d0>

policies.png

更新

如果您想绘制所有列的条形图和平均值,您可以附加平均值:

In [95]: average = df.mean()

In [96]: average.name = 'average'

In [97]: df = df.append(average)

In [98]: df
Out[98]:
pol1 pol2 pol3 pol4
art 0.661592 0.479202 0.700451 0.345085
mcf 0.235517 0.665981 0.778774 0.610344
mesa 0.838396 0.035648 0.424047 0.866920
average 0.578502 0.393610 0.634424 0.607450

In [99]: df.plot(kind='bar')
Out[99]: <matplotlib.axes.AxesSubplot at 0x52f4390>

second plot

如果您的布局不适合子图 tight_layout将调整 matplotlib 参数。

关于python - Pandas :生成并绘制平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13890673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com