首页 > 解决方案 > 在动态 Python 数据框中绘制多个条形图

问题描述

我有一个如下所示的数据框“网格”:

COLUMN_NM    DISTINCT_COUNT    MAX_COL_VALUE    MIN_COL_VALUE   NULL_COUNT
COL_A         123                 456                111              56
COL_B         15678               222                4                 3456
COL_C         18994               456                76               43               
...

COLUMN_NM 中的数据是动态的,因为此 DataFrame 加载了不同的表进行分析。我想要做的是绘制驻留在 DataFrame 中的当前数据。我想要一个 DISTINCT_COUNT 的条形图,另一个 MAX_COL_VALUE 等......所有每列。所以 COLUMN_NM 将沿 x 轴表示

到目前为止,我所拥有的显然是不正确的,但是您对我正在尝试做的事情有所了解。

distinct = grid[('COLUMN_NM', 'DISTINCT_COUNT')].plot(kind=bar)
max_col = grid[('COLUMN_NM', 'MAX_COL_VALUE')].plot(kind=bar)
min_col = grid[('COLUMN_NM', 'MIN_COL_VALUE')].plot(kind=bar)
null_cnt = grid[('COLUMN_NM', 'NULL_COUNT')].plot(kind=bar)

我有所有必要的导入语句。我希望输出是 4 个图表,并且在我得到这个工作后我可以指定更多的条形图参数。另外,将其包装在 for 循环或函数中会更容易吗?

标签: pythonpandasmatplotlib

解决方案


是的,我建议循环执行此操作:

for col in ['DISTINCT_COUNT', 'MAX_COL_VALUE', 'MIN_COL_VALUE', 'NULL_COUNT']:
    grid[['COLUMN_NM', col]].set_index('COLUMN_NM').plot.bar(title=col)

您的代码的问题是:

  • grid[('COLUMN_NM', 'DISTINCT_COUNT')]不起作用,因为您使用的是元组,而不是[(...)]您想[[...]]选择列的子集
  • 您还希望将条形分组 ( COLUMN_NM) 的列设置为索引

推荐阅读