2016-04-07 16 views
1

質問があります。パンダのデータフレームの各列内で発生するユニークな値の数はどのように数えられますか?Python Pandas:すべての列でユニークな値の頻度を数える

1 2 3 4  
a yes f c 
b no f e 
c yes d h 

私は4つの列内で一意の値の頻度を示す出力を取得したいのです:

は、私はそのdfを指定されたデータフレームは、このように見えますがあるだろう。各列の中に存在し、どれだけ多くの、

Column # of Unique Values 
1   3 
2   2 
3   2 
4   3 

私は一意の値が何であるかを知っている必要はありません。出力は次のようにものになるだろう。

私はこのような何かをいじっています

df[all_cols].value_counts() 

[all_cols]データフレーム内のすべての列のリストがあります。しかし、これは値が列内に何回現れるかを数えています。

アドバイスや提案は大きな助けになります。おかげ

答えて

2

あなたは可能性がありapplySeries.nunique

>>> df.apply(pd.Series.nunique) 
1 3 
2 2 
3 2 
4 3 
dtype: int64 

それとも、フレームの積み重ねバージョンにgroupby/nunique行うことができます。これらのいずれもあなたが使用できるシリーズを、作り出す

>>> df.unstack().groupby(level=0).nunique() 
1 3 
2 2 
3 2 
4 3 
dtype: int64 

を必要な列名を持つフレームを作成します。

+0

ありがとう、これは私が探していたものです。私は助けに感謝します! – da4l

+0

@ da4lありがとうございました、ちょうどupvoteを押してボタンを受け入れる – Private

関連する問題