2017-03-27 6 views
0

パンダを使用して各カテゴリの頻度をカウントする方法を教えてください。出力はMultiIndexSeriesである - 私はあなたが列authorcategory内のすべてのカテゴリの長さを取得するためsizegroupbyを使用することができますので、私は、ユーティリティ行列を作成するために旋回することができるパンダはユーザ別にカテゴリカウントを集計します

|--|**author** | **category**| 
0| A | movies 
1| B | games 
2| C | pics 
4| A | movies 
5| C | movies 
6| B | games 




|--|**author** | **category count**| 

A | movies |2 | 
B | games |2 | 
C | movies |1 | 
C | pics |1 | 

答えて

0

これを実行したいと思います。

print (df.groupby(['author','category']).size()) 
author category 
A  movies  2 
B  games  2 
C  movies  1 
     pics  1 
dtype: int64 

その後MultiIndexから列を作成し、値の列の列名を設定するためreset_indexを追加 - 出力はDataFrameです:

df = df.groupby(['author','category']).size().reset_index(name='category count') 
print (df) 
    author category category count 
0  A movies    2 
1  B games    2 
2  C movies    1 
3  C  pics    1 

しかし、複数のソリューションがある必要crosstab場合:

#add unstack for reshape 
df1 = df.groupby(['author','category']).size().unstack(fill_value=0) 
print (df1) 
category games movies pics 
author      
A    0  2  0 
B    2  0  0 
C    0  1  1 

df1 = pd.crosstab(df['author'],df['category']) 
print (df1) 
category games movies pics 
author      
A    0  2  0 
B    2  0  0 
C    0  1  1 

df1 = df.pivot_table(index='author',columns='category', aggfunc='size', fill_value=0) 
print (df1) 
category games movies pics 
author      
A    0  2  0 
B    2  0  0 
C    0  1  1 

EDIT:

What is the difference between size and count in pandas?

+0

恐ろしい、作業溶液をありがとう。ユーティリティマトリクスのコードを表示するために余分な距離をとっていました。あなたが説明しても大丈夫なら、サイズ/リセットインデックスを使ってなぜそれが何をするのですか? –

+0

確かに、私に秒をください。 – jezrael

+0

私はいくつかの説明を加えてみてください。また、[パンダに10分](http://pandas.pydata.org/pandas-docs/stable/10min.html)と[cookbook](http://pandas.pydata.org /pandas-docs/stable/cookbook.html)。不明な点がある場合は、もっと詳しく説明します。 – jezrael

関連する問題