[python] pandasで複数列の組み合わせの出現頻度を調べる方法.

pandasで複数の列にまたがった値の組み合わせの出現頻度を調べる方法を紹介.

1つの列ならば,pd.Seriesの1つのメソッドであるvalue_countsを用いれば,すぐに調べられる.

df["column"].value_counts() 

それでは,複数列でまたがったときはどうすれば,良いのか.
ここでは,複数列を文字列にし,1つのカラムにリストとしてまとめた後に,str.joinメソッドを用いて,1つのカラムに複数列をまとめる.そして,value_countsメソッドを用いればよい. 

df = pd.DataFrame({"A":[1,2,3,1,2,3], 
                   "B": ["B1","B2", "B2","B1","B2","B2"], 
                   "C":["C1", "C1", "C1", "C1", "C1", "C2"]})
cols = ["A", "B", "C"]
ser = df[cols].astype(str)\
            .apply(lambda lis: [ x for x in lis], axis=1)\
            .str.join(" | ")\
            .value_counts()
print(ser)

これで,求めることが出来た.
for を用いてないので,処理速度もそこそこ速い.

———-雑感(`・ω・´)———-
欠損値処理用のライブラリーが何か合った気がするので,見つけたら追記します.

python
スポンサーリンク
あきとしのスクラップノート

コメント

タイトルとURLをコピーしました