1. ホーム
  2. パイソン

[解決済み】データフレームのカラムに値が出現する頻度をカウントする

2022-03-24 13:44:56

質問

あるデータセットがあります

category
cat a
cat b
cat a

のようなものを返せるようにしたいです(ユニーク値と頻度を表示)。

category   freq 
cat a       2
cat b       1

解決方法は?

使用方法 groupbycount :

In [37]:
df = pd.DataFrame({'a':list('abssbab')})
df.groupby('a').count()

Out[37]:

   a
a   
a  2
b  3
s  2

[3 rows x 1 columns]

オンラインドキュメントをご覧ください。 https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html

また value_counts() DSMのコメントにもあるように、ここでは様々な方法で猫の皮を剥ぐことができます。

In [38]:
df['a'].value_counts()

Out[38]:

b    3
a    2
s    2
dtype: int64

元のデータフレームに頻度を追加したい場合は、次のようにします。 transform を使用すると、アライメントされたインデックスが返されます。

In [41]:
df['freq'] = df.groupby('a')['a'].transform('count')
df

Out[41]:

   a freq
0  a    2
1  b    3
2  s    2
3  s    2
4  b    3
5  a    2
6  b    3

[7 rows x 2 columns]