2016-01-10 18 views

答えて

30

pivot_tablegroupbyの両方を使用してデータフレームを集約します。違いは、結果の形状のみです。

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

例:groupbyを使用

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 

、与えられた寸法は列に配置され、行は、これらの寸法の組み合わせ毎に作成されます。

この例では、一連の合計値cを、abのすべての固有の組み合わせでグループ化しています。我々は['c']を省略した場合

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の同様の使い方があります。この場合、ユニークな値でグループ化された残りのすべての列の合計のデータフレーム(系列ではありません)を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 
+3

ありがとうございました。あなたが投稿したものに関して私は疑いがある。 df.groupby(["a"、 "b"])["c"] sum()はdf.groupby(["a"、 "b"] ["c"])とどのように違うのですか? .sum() ' – user4943236

+4

あなたが投稿した行は構文的には正しくありませんが、' df.groupby(["a"、 "b"、 "c"])。sum() 'を意味すると思います。これは、a、b、cの固有の組み合わせでグループ化し、残りの列を合計します(上記の例では存在しません)。 –

関連する問題