我也看到过类似的问题。但是我的情况有所不同,因为我想在for循环中执行操作,并且我得到了意外的行为。
df = pd.DataFrame([['1', '0', '1', '0'], ['Male', 'Female', 'Female', 'Male'], ['LabelX', 'LabelY', 'LabelY', 'LabelX']]).T
df.columns = ['col1', 'col2', 'label']
print(df.groupby('label')['col2'].value_counts().unstack(0).plot.barh())
print(df.groupby('label')['col1'].value_counts().unstack(0).plot.barh())
有时,我的图形会被一个接一个地打印,但存在一些奇怪的对齐问题,但至少会被打印。其他时间可能根本无法打印。.我只会得到
AxesSubplot(0.125,0.11;0.775x0.77)
AxesSubplot(0.125,0.11;0.775x0.77)
无情节
这是一个较小的数据集,对于上述类别的许多类别列,在仔细清理数据以确保类型object
的列没有其他混合类型之后,我想运行一个for循环,例如所以:
for col_name in df.columns:
if col_name != 'label':
print(df.groupby('label')[col_name].value_counts().unstack(0).plot.barh())
print()
上面的代码应该可以工作。有时打印图,有时不打印图。无法弄清发生了什么。
基本上,我想运行一个for循环,创建一个按我的列label
分组的条形图,如示例DataFrame中那样,并仅查看频率。但是就像我说的那样,这些图可能会打印也可能不会打印。.我不在乎条形图的外观..我只想按类别分组,并在每个类别中使用条形来显示标签的频率计数。不在乎您使用的是哪个库