2017-02-19 8 views
1

データフレームの列を繰り返して、2つのグループを区別する各列の積み重ねヒストグラムをプロットしたいとします(death = 0と1)。このコードを何か反復的なものに変換するにはどうしたらいいですか? (bun_maxは、例として使用されるカラムの一つである。)(また、どのように私は伝説が動作するのですか?)スタックヒストグラムを繰り返しプロットするpandas/matplotlib

df1 = temp[temp['death'] == 0] 
df2 = temp[temp['death'] == 1] 

plt.figure() 
plt.hist([df1.bun_max, df2.bun_max], bins=50, stacked=True, color=['b','r']); 
plt.title(df1.bun_max.name) 
plt.ylabel('ICU admits') 
plt.xlabel(df1.bun_max.name) 
plt.legend() 
plt.show() 

Example output

これは私がこれまで持っているものです。 "TypeError:unsizedオブジェクトのlen()"というエラーが表示されます。すべての列はintまたはfloatです。エラーの原因を理解するのに役立ちます。

for x in df1: 
    for y in df2: 
     plt.figure() 
     plt.hist([x, y], bins=50, stacked=True, color=['b','r']) 
     plt.title(df1.x.name) 
     plt.show() 

TypeError: len() of unsized object

答えて

0

私はそれを考え出した:誰かがこの使用してサブプロットをプロットすることができれば

df1 = temp[temp['death'] == 0] 
df2 = temp[temp['death'] == 1] 
df1 = df1.drop('death', axis=1) 
df2 = df2.drop('death', axis=1) 

for col1 in df1.columns: 
    for col2 in df2.columns: 
     if col1 == col2: 
      plt.figure(); 
      plt.hist([df1[col1], df2[col2]], bins=50, stacked=True, color=['b','r']); 
      plt.title(df1[col1].name) 
      plt.ylabel('ICU admits') 
      plt.xlabel(df1[col1].name) 
      plt.show(); 
+0

がいいだろう... – ACL

関連する問題