有没有类似PandasDataFrame.hist()的方法,可以为条形图创建连接的子图?

lmyy7pcs  于 2023-01-24  发布在  其他
关注(0)|答案(1)|浏览(104)

我喜欢DataFrame方法hist选择DataFrame中的所有数值列,然后简单地返回直方图子图的综合图。

df.hist(bins=50, figsize=(15,10))
plt.show()

但是我似乎不能为所有分类列创建类似的东西,只返回条形图子图。

df.select_dtypes("object").plot(kind="bar", subplots=True) # Error because not numeric values

上面的代码是否有一些变化才能工作?subplots参数实际上是如何使用的?
或者有没有其他类似的快速和简单的方法来得到我所寻找的?
先谢了!

x6yk4ghg

x6yk4ghg1#

您可以尝试使用value_counts来获取每个分类变量的计数:

import matplotlib.pyplot as plt
from itertools import zip_longest

cols = df.select_dtypes('object').columns
ncols = 3
nrows = len(cols) // ncols + (len(cols) % 3 != 0)
fig, axs = plt.subplots(nrows, ncols, figsize=(4*ncols, 4*nrows))

for col, ax in zip_longest(cols, axs.flat):
    if col:
        df[col].value_counts(sort=False).plot(kind='bar', ax=ax, rot=45, title=col)
    else:
        fig.delaxes(ax)
    
plt.tight_layout()    
plt.show()

输出:

相关问题