1. ホーム
  2. python

[解決済み] Pandas: グループ・バイとピボット・テーブルの違い

2023-04-28 13:30:34

質問

私はPandasを学び始めたばかりですが、以下のような違いがあるのでしょうか? groupby()pivot_table() という関数があります。どなたか、これらの違いを理解する手助けをしていただけませんか? ヘルプをお願いします。

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

どちらも pivot_tablegroupby はデータフレームを集約するために使用されます。違いは結果の形状に関してのみです。

を使って pd.pivot_table(df, index=["a"], columns=["b"], values=["c"], aggfunc=np.sum) を使うと、テーブルが作成されます。 a が行軸になる。 b が列の軸で、その値は c .

例です。

df = pd.DataFrame({"a": [1,2,3,1,2,3], "b":[1,1,1,2,2,2], "c":np.random.rand(6)})
pd.pivot_table(df, index=["a"], columns=["b"], values=["c"], aggfunc=np.sum)

b         1         2
a                    
1  0.528470  0.484766
2  0.187277  0.144326
3  0.866832  0.650100

使用方法 groupby を使うと、与えられた次元が列に配置され、それらの次元の組み合わせごとに行が作成されます。

この例では、値の合計の系列を作成します。 c のすべてのユニークな組み合わせでグループ化された ab .

df.groupby(['a','b'])['c'].sum()

a  b
1  1    0.528470
   2    0.484766
2  1    0.187277
   2    0.144326
3  1    0.866832
   2    0.650100
Name: c, dtype: float64

同様の使い方をする groupby を省略した場合です。 ['c'] . のユニークな値でグループ化された残りのすべてのカラムの合計のデータフレーム(系列ではない)が作成されます。 ab .

print df.groupby(["a","b"]).sum()
            c
a b          
1 1  0.528470
  2  0.484766
2 1  0.187277
  2  0.144326
3 1  0.866832
  2  0.650100