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

在动态Python数据帧中绘制多个条形图,python,pandas,matplotlib,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

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

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               
...
列_NM中的数据是动态的,因为此数据帧加载了不同的表进行分析。我要做的是绘制驻留在DataFrame中的当前数据。我想要一个用于不同计数的条形图,另一个用于最大列值等…所有这些都是每列。因此,列_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循环或函数中是否更容易?

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

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\u NM','DISTINCT\u COUNT')]
    不起作用,因为您使用的是元组,而不是
    [(…)]
    您希望
    […]
    选择列的子集
  • 您还需要将要对条进行分组的列(
    column\u NM
    )设置为索引

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

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\u NM','DISTINCT\u COUNT')]
    不起作用,因为您使用的是元组,而不是
    [(…)]
    您希望
    […]
    选择列的子集
  • 您还需要将要对条进行分组的列(
    column\u NM
    )设置为索引

谢谢!我会将其设置为已回答,但我刚刚意识到这会将列名放在底部,如果有很多列名,这看起来会很混乱。我想把它们放在右上角的盒子里。这样看起来更干净,然后在底部有一个标签,上面写着“Columns”。有什么建议吗?如果不是的话,我可以胡闹。再次感谢谢谢你!我会将其设置为已回答,但我刚刚意识到这会将列名放在底部,如果有很多列名,这看起来会很混乱。我想把它们放在右上角的盒子里。这样看起来更干净,然后在底部有一个标签,上面写着“Columns”。有什么建议吗?如果不是的话,我可以胡闹。再次感谢