web-dev-qa-db-ja.com

グループ化された棒グラフを作成する関数

ここでの目標は、下の画像のようなサブプロットではなく、グループ化された棒グラフを作成することです

Pythonでグループ化された棒グラフを作成する簡単な方法はありますか?現在、1つのプロットに個別のバーが表示されるのではなく、個別のバープロットが表示されます。

df = pd.DataFrame([['g1','c1',10],['g1','c2',12],['g1','c3',13],['g2','c1',8],['g2','c2',10],['g2','c3',12]],columns=['group','column','val'])

%matplotlib inline
df.groupby(['group']).plot(kind='bar')

enter image description here

11
Rilcon42

パンダは列ごとにグループ化されたバーを表示します。各行のエントリは異なる列ですが、結果のプロットではグループが構成されます。したがって、列として「グループ」を持つようにデータフレームを「再形成」する必要があります。この場合、次のようにピボットできます

df.pivot("column", "group", "val")

生産

group   g1  g2
column        
c1      10   8
c2      12  10
c3      13  12

これをプロットすると、グループ化された棒グラフが作成されます。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame([['g1','c1',10],['g1','c2',12],['g1','c3',13],['g2','c1',8],
                   ['g2','c2',10],['g2','c3',12]],columns=['group','column','val'])

df.pivot("column", "group", "val").plot(kind='bar')

plt.show()

enter image description here