2017-08-15 5 views
1

私は、平均を見つけるためにデータフレームを使っています。私のグループ化されたdfの平均値に変換しようとしているときに詰まっています。コードは以下の通りです:パンダが文字列の出現の平均を見つけました

df2 = df.groupby(['school', 'Race/Ethnicity']).size() 

school   Race/Ethnicity       
school1   African American/Black      15 
       American Indian/Alaska Native    1 
       Bi-racial/Multi-racial      4 
       Latino/a         53 
       Other - Write In (Required)     1 
       White          2 
school2   African American/Black      1 
       American Indian/Alaska Native    5 
       Asian          1 
       Bi-Racial/Multi-Racial      1 
       Latino/a         26 

私はたくさんの異なる学校があり、サイズの代わりに各学校の各レースの平均を見つけたいと思います。グループを繰り返して、各グループの合計を求め、グループの合計で各ラインを分割するにはどうすればよいですか?

+2

サンプルデータを見ると便利ですが、 'df2'を' df.groupby( 'school')。size() 'で分割できるように思えます。 –

+0

@AndrewLありがとう、それは私が必要としていたものです!私は、必要以上に物事をより困難にしていることを知っていました。 – Cameron

答えて

1

ます。また、仕分け

df.groupby('school')['Race/Ethnicity'].value_counts(normalize=True, sort=False) 

school Race/Ethnicity    
school1 African American/Black   0.197368 
     American Indian/Alaska Native 0.013158 
     Bi-racial/Multi-racial   0.052632 
     Latino/a       0.697368 
     Other - Write In (Required)  0.013158 
     White       0.026316 
school2 African American/Black   0.029412 
     American Indian/Alaska Native 0.147059 
     Asian       0.029412 
     Bi-Racial/Multi-Racial   0.029412 
     Latino/a       0.764706 
Name: Race/Ethnicity, dtype: float64 

セットアップ

をスキップすることができ value_counts

df.groupby('school')['Race/Ethnicity'].value_counts(normalize=True) 

school Race/Ethnicity    
school1 Latino/a       0.697368 
     African American/Black   0.197368 
     Bi-racial/Multi-racial   0.052632 
     White       0.026316 
     American Indian/Alaska Native 0.013158 
     Other - Write In (Required)  0.013158 
school2 Latino/a       0.764706 
     American Indian/Alaska Native 0.147059 
     African American/Black   0.029412 
     Asian       0.029412 
     Bi-Racial/Multi-Racial   0.029412 
Name: Race/Ethnicity, dtype: float64 

normalizeパラメータを使用します10

df = pd.DataFrame(
    [['school1', 'African American/Black']] * 15 + 
    [['school1', 'American Indian/Alaska Native']] * 1 + 
    [['school1', 'Bi-racial/Multi-racial']] * 4 + 
    [['school1', 'Latino/a']] * 53 + 
    [['school1', 'Other - Write In (Required)']] * 1 + 
    [['school1', 'White']] * 2 + 
    [['school2', 'African American/Black']] * 1 + 
    [['school2', 'American Indian/Alaska Native']] * 5 + 
    [['school2', 'Asian']] * 1 + 
    [['school2', 'Bi-Racial/Multi-Racial']] * 1 + 
    [['school2', 'Latino/a']] * 26, 
    columns=['school', 'Race/Ethnicity'] 
) 
関連する問題