1. ホーム
  2. python

[解決済み] マルチインデックスを使ったパンダのプロット

2023-07-03 08:58:46

質問

を実行した後 groupby.sum() を実行すると DataFrame 意図したプロットを作ろうとして、ちょっと困っています。

import pandas as pd
import numpy as np

np.random.seed(365)
rows = 100
data = {'Month': np.random.choice(['2014-01', '2014-02', '2014-03', '2014-04'], size=rows),
        'Code': np.random.choice(['A', 'B', 'C'], size=rows),
        'ColA': np.random.randint(5, 125, size=rows),
        'ColB': np.random.randint(0, 51, size=rows),}
df = pd.DataFrame(data)

     Month Code  ColA  ColB
0  2014-03    C    59    47
1  2014-01    A    24     9
2  2014-02    C    77    50

dfg = df.groupby(['Code', 'Month']).sum()

              ColA  ColB
Code Month              
A    2014-01   124   102
     2014-02   398   282
     2014-03   474   198
     2014-04   830   237
B    2014-01   477   300
     2014-02   591   167
     2014-03   522   192
     2014-04   367   169
C    2014-01   412   180
     2014-02   275   205
     2014-03   795   291
     2014-04   901   309

サブプロットを作成するには ( kind='bar' ) を作成するにはどうしたらよいでしょうか。 Code であり, x 軸は Month であり,棒グラフは ColA であり ColB ?

どのように解決するのですか?

私はunstack(level)メソッドが完璧に動作することを発見しました。これは、Codeがいくつあるかについての先験的知識を必要としないという追加の利点があります。

ax = dfg.unstack(level=0).plot(kind='bar', subplots=True, rot=0, figsize=(9, 7), layout=(2, 3))
plt.tight_layout()