2017-11-13 3 views
1

以下のサンプルデータのようなデータフレームがあります。これらの列の値が1のとき、「正しい」列の合計を示すプロットを作成したいと思います。列はダミー変数なので、「中国語」列の1はレコードが中国人として旗を掲げた。だから私はダミー変数ごとに "正解"の合計を示す棒グラフを作成したいと思います。Plot他の列の値による列の合計

サンプルデータ:ここ

  Food Chinese Italian Food Stands \ 
176   1  0  0  0      
148   0  0  0  0      
143   0  1  0  0      
45   0  1  0  0      

    Correct 
176  0 
148  1 
143  0 
45   1 
+0

だから 'Correct'が '1'の値を持つ列を合計? – Jarad

+0

@Jarad実際には逆ですが、他のフィールドに1が入っている場合は「訂正」してください。したがって、この例では、「中国語」が1、その他のフィールドが0になるプロットになります。 – user3476463

答えて

1

行から列和を作成するだけにマスクを使用します使用pd.DataFrame.dot

df.drop('Correct', 1).T.dot(df.Correct).plot.bar() 

enter image description here

+0

ありがとう!それがトリックでした。 – user3476463

0

は実施例であり、それは正しい = 1

import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.DataFrame() 
df['Chinese'] = [0,1,1,1,0,0,1] 
df['Italian'] = [1,0,0,0,1,1,0] 
df['Correct'] = [1,1,0,1,1,0,0] 

df.mask(df['Correct'].apply(lambda x: bool(x)), inplace=True) 
df[['Italian','Chinese']].sum().plot.bar() 

plt.show() 

enter image description here

+0

すぐに私に戻ってくれてありがとう。私は元のポストで自分自身を明確にしたとは思わない。私は "Correct"列を合計したいが、それは中国語の値が1のときだけである。私は貧弱なサンプルデータも与えた。このサンプルデータでは、プロットは中国語を1だけ表示します。他のフィールドは0になります。 – user3476463

関連する問題