如何在Python中并排显示seaborn countplot和打印数据帧?

2024-10-01 01:44:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经绘制了seaborn countplot,并在代码中显示了每个分类变量的值。代码如下:

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)

我得到以下输出,其中df1数据帧打印在countplot下面。有没有办法让他们并排看

enter image description here


Tags: 代码nametargetvaluetype绘制分类plt
1条回答
网友
1楼 · 发布于 2024-10-01 01:44:00

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

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))

enter image description here

相关问题 更多 >