Python:如何获得显示数据框不同值的条形图概述?

n.r*_*.r. 2 python bar-chart distinct-values dataframe pandas

我使用此 lambda 函数从数据框中获取所有不同值的概述:

overview = df.apply(lambda col: col.unique())
Run Code Online (Sandbox Code Playgroud)

它返回所需的结果,如下所示:

ColA            [1,2,3,...]
ColB            [4,5,6,7,8,9...]
ColC            [A,B,C]
...             ...
Run Code Online (Sandbox Code Playgroud)

如何使用子图/多个条形图可视化此结果?

我的第一次尝试只是将对象扔进数据框的绘图方法中,这显然不起作用。所以我尝试从对象中创建一个数据框:

overview = {}
for attr, value in overview.iteritems():
    overview[attr] = value

df = pd.DataFrame(overview)
Run Code Online (Sandbox Code Playgroud)

输出是:

ValueError: arrays must all be same length
Run Code Online (Sandbox Code Playgroud)

所以我尝试使用一个列表:

overview = []
for attr, value in obj_overview.iteritems():
    overview.append({attr: value})

df = pd.DataFrame(overview)
Run Code Online (Sandbox Code Playgroud)

但结果是一个交叉矩阵,其行数与列数相同,并且第 n 行引用第 n 列。这也是错误的。

如何使用显示数据框不同值的多个条形图/子图来获得概览?

事实上,我想实现两个可能的目标:

  1. 有多个条形图,其中每个图表代表原始数据框中的一列。X 轴显示所有不同/唯一值,Y 轴显示每个值的出现情况。这是一个很好的选择。我知道我目前的方法无法涵盖这一点。它基于 Alteryx 的类似插件,例如提供:

摘自有关 Alteryx 的课程

  1. 我当前的方法应该可以实现这一点:只有一个(堆叠的)条形图显示所有列,其中 x 轴显示每一列,每个相应的条形图都包含所有不同的值。

谢谢!

Hen*_*ker 5

通过以下方式单独绘图value_counts

import pandas as pd
from matplotlib import pyplot as plt

df = pd.DataFrame({'ColA': [1, 2, 4, 4, 5],
                   'ColB': [4, 4, 6, 6, 6],
                   'ColC': ['A', 'C', 'C', 'E', 'E']})


for col in df:
    df[col].value_counts().sort_index().plot(kind='bar', rot=0, ylabel='count')
    plt.show()
Run Code Online (Sandbox Code Playgroud)
可乐 科尔B 科尔C
ColA 图 ColB 图 ColC 图

melt通过+的单堆积图crosstab

import pandas as pd
from matplotlib import pyplot as plt

df = pd.DataFrame({'ColA': [1, 2, 4, 4, 5],
                   'ColB': [4, 4, 6, 6, 6],
                   'ColC': ['A', 'C', 'C', 'E', 'E']})

overview = df.melt()
overview = pd.crosstab(overview['variable'], overview['value'])

ax = overview.plot(kind='bar', stacked=True, rot=0, ylabel='count')
ax.legend(bbox_to_anchor=(1.2, 1))
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

堆积图