所以我的样本DF是这样的:
data = pd.DataFrame({
'ID':[1,1,2,2,2],
'gender':['male', 'female', 'male', 'female', 'female'],
'Dependents':['yes', 'no', 'yes', 'no', 'yes'],
'PhoneService': ['yes', 'no', 'yes', 'no', 'yes'],
'InternetService':['yes', 'no', 'yes', 'no', 'yes']
'Churn':['yes', 'no', 'yes', 'no', 'yes']
})
在类似的是/否值中还有大约15个其他列。
我想用x轴上的yes / no值相对于y轴上的Churn列绘制我的每一列的堆积条形图,以显示x轴上每个类别的Yes / No计数。
我可以这样绘制一个堆积的条形图:
gender_plot = data.groupby(['gender', 'Churn']).size().reset_index().pivot(columns='Churn', index='gender', values=0)
gender_plot.plot.bar(stacked=True)
我还可以使用for循环遍历需要绘制的所有列,如下所示:
columns_to_visualise = ['gender', 'Partner', 'Dependents', 'PhoneService', 'MultipleLines', 'InternetService', 'OnlineSecurity', 'OnlineBackup',
'DeviceProtection', 'TechSupport', 'StreamingTV', 'StreamingMovies', 'Contract', 'PaperlessBilling', 'PaymentMethod', 'SeniorCitizen']
for column in columns_to_visualise:
plot_data = data.groupby([column, 'Churn']).size().reset_index().pivot(columns='Churn', index=column, values=0)
plot_data.plot.bar(stacked=True, rot = 45)
plt.show()
显然,上述for循环的输出结果导致所有条形图都绘制在单独的轴上。
我尝试使用以前的几篇SO帖子的帮助将它们绘制在子图上,但没有一个帮助我
如何更新代码以将这16个堆积的条形图绘制为单个4x4图形中的子图?
谢谢