繁体   English   中英

如何在 Python 中并排显示 seaborn countplot 和打印 dataframe?

[英]How to show seaborn countplot and print dataframe side by side in Python?

我绘制了一个 seaborn 计数图并在我的代码中显示了每个分类变量的值。 代码如下:

sns.countplot("NAME_HOUSING_TYPE",data=applicationDF,hue="TARGET",palette=['g','r'])
plt.xticks(rotation=90)
plt.legend(labels = ['Repayer','Defaulter'])
plt.yscale('log')
plt.show()
g = applicationDF.groupby("TARGET")["NAME_HOUSING_TYPE"]
df1 = pd.concat([g.value_counts(),round(g.value_counts(normalize=True).mul(100),2)],axis=1, keys=('Counts','Percentage'))
print(df1)

我得到以下 output,其中 df1 dataframe 打印在计数图下方。 有没有办法并排显示它们?

在此处输入图像描述

我查看了官方参考资料,通过反复试验在图表右侧添加了一个表格。 无法从数据框中引用表数据,因此我手动创建了它。 不幸的是,我无法控制字体大小。

import seaborn as sns
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(20,4),dpi=144)
ax = fig.add_subplot(1,2,1)

ax = sns.barplot(x='NAME_HOUSING_TYPE', y='Counts', hue='TARGET', data=df)
ax.set_xticklabels(ax.get_xticklabels(), rotation=90)
ax.set_yscale('log')
ax.set_title('NAME_HOUSING_TYPE')
handles, labels = ax.get_legend_handles_labels()
labels = ['Repayer','Defaulter']
ax.legend(handles, labels, loc='upper right')

cell_text = [[251596,13104,10228,4280,2445,1033],[21272,1736,955,601,172,89]]
ax.table(cellText=cell_text,
         rowLabels=['Repayer','Defaulter'],
         colLabels=df_tbl.columns,
         loc='right',
         bbox=(1.1,0.0,1.0,1.0))

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM