pandas でデータの出現頻度を確認するには value_counts を使います。
Series の場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from pandas import Series ss = Series(['Tokyo', 'Nagoya', 'Nagoya', 'Osaka', 'Tokyo', 'Tokyo']) #------------- # 0 Tokyo # 1 Nagoya # 2 Nagoya # 3 Osaka # 4 Tokyo # 5 Tokyo #------------- ss.value_counts() #------------- # Tokyo 3 # Nagoya 2 # Osaka 1 #------------- |
DataFrame の場合
DataFrame で value_counts を使う場合は、あいだに apply をはさみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import pandas as pd from pandas import DataFrame df = DataFrame({'a':['Tokyo', 'Osaka', 'Nagoya', 'Osaka', 'Tokyo', 'Tokyo'], 'b':['Osaka', 'Osaka', 'Osaka', 'Tokyo', 'Tokyo', 'Tokyo']}) #----------------- # a b # 0 Tokyo Osaka # 1 Osaka Osaka # 2 Nagoya Osaka # 3 Osaka Tokyo # 4 Tokyo Tokyo # 5 Tokyo Tokyo #----------------- df.apply(pd.value_counts) #----------------- # a b # Nagoya 1 NaN # Osaka 2 3 # Tokyo 3 3 #----------------- |
NaN の置きかえは fillna
1 2 3 4 5 6 7 |
df.apply(pd.value_counts).fillna(0) #----------------- # a b # Nagoya 1 0 # Osaka 2 3 # Tokyo 3 3 #----------------- |