在动态Python数据框中绘制多个条形图

时间:2018-06-08 15:58:48

标签: python pandas matplotlib

我有一个数据帧'网格'看起来像这样:

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中的当前数据。对于MAX_COL_VALUE等,我想要一个DISTINCT_COUNT的条形图...每列所有。所以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)

我有所有必要的import语句。我希望输出为4个图形,并且在我开始工作后可以指定更多的条形图参数。另外,将它包装在for循环或函数中会更容易吗?

1 个答案:

答案 0 :(得分:2)

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

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)设置为索引