2017-11-10 16 views
1

私は、以下のデータセット内のラベルごとにグループ化され、カテゴリの数と相対的な割合を取得するためにDASKを使用しようとしています:daskで相対周波数関数を実装するにはどうすればよいですか?

label category  
a  1 
a  2 
a  3 
b  1 
b  1 
b  2 

はなる:

label category count  percent 
a  1   1   33.33333% 
a  2   1   33.33333% 
a  3   1   33.33333% 
b  1   2   66.66666% 
b  2   1   33.33333% 

今私はこれを行うのは4部です。

  1. [「ラベル」、「カテゴリ」]でグループDFをし、ラベルでDF1
  2. グループによるDF1としてカウントを取得して、取得するには#2で、カウント
  3. マージ#1を加算カウントと
  4. 合計が最終的に数と総

を使用してパーセンテージを計算はDASKとパンダに新しいですが、私の方法は非効率的と思われる、この計算を行うためのより高速な方法があるかどうそう思って。

答えて

2

これは私が2つのステップを必要とする..still何ができるかです...

df1=df.groupby(['label','category']).category.count().to_frame(name='count') 
df1['percent']=df1.div(df1.groupby(level=0).sum(),level='label')*100 

df1 
Out[110]: 
       count percent 
label category     
a  1    1 33.333333 
     2    1 33.333333 
     3    1 33.333333 
b  1    2 66.666667 
     2    1 33.333333 
+0

ああ偉大なおかげで、それは私がmissngた 'to_frame'作品でした! – whisperstream

+0

@whisperstream ywは楽しい一日を過ごしています – Wen

関連する問題