データセットがある
category
cat a
cat b
cat a
次のような、一意の値とその頻度を示すものを返したいと思います。
category freq
cat a 2
cat b 1
ベストアンサー1
使用value_counts()
@DSM がコメントした通り。
In [37]:
df = pd.DataFrame({'a':list('abssbab')})
df['a'].value_counts()
Out[37]:
b 3
a 2
s 2
dtype: int64
またgroupby
、そしてcount
。ここでは猫の皮を剥ぐ方法がたくさんあります。
In [38]:
df.groupby('a').count()
Out[38]:
a
a
a 2
b 3
s 2
[3 rows x 1 columns]
見るオンラインドキュメント。
元のデータフレームに頻度を追加したい場合は、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]