如何在数据框中子绘制多个分类列?

问题描述

所以我可以像这样单独绘制所有列:

df['cat1'].value_counts().plot.bar()

但我不知道如何在一个漂亮的子图结构中绘制我所有的分类列,所以我不会无休止地滚动。

到目前为止,我的想法可能是遍历我的列并为每个列生成一个图?:

for col in df.describe(include=['O']):
  df[col].value_counts().plot.bar()
  plt.show()

不确定从那里去哪里。

我很欣赏这可能是一个基本问题,但我已经在谷歌上搜索了太久,无法理解子情节。因此,如果您能提供任何帮助,我将不胜感激!谢谢!

解决方法

您可以创建一个子图数组并传递 plot 命令:

# assuming you have 12 columns:
fig,axes = plt.subplots(nrows=3,ncols=4,figsize=(12,8))

# use `select_dtypes` to filter instead of `describe`
for col,ax in zip(df.select_dtypes(include='O'),axes.ravel()):
    df[col].value_counts9).plot.bar(ax=ax)

plt.show()