次のようなパンダデータフレームがあります。
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')
これにより正しい値が追加されますが、インデックスが適切に更新されず、グラフがめちゃくちゃになります。
明確化。二重転置を使用したコードの結果は次のとおり です。これが私の望みです。ポリシーの平均だけでなく、ベンチマークと平均の両方を表示する。もっとうまくできるかどうか、ただ興味がありました。
凡例は通常めちゃくちゃであることに注意してください。修正するには:
ax = df.plot(kind='bar')
ax.legend(patches, list(df.columns), loc='best')