首页 > 解决方案 > 带有数据框的 Python 条形图

问题描述

我有以下数据框:

df = pd.DataFrame(dict(
    A=[1, 0, 0, 1],
    B=[0, 1, 1, 1],
    C=[1, 0, 0, 0]
))

如何绘制一个条形图,其中我在一个图中包含 1 和 0 的数量,请参见: 在此处输入图像描述

标签: pythonpandasmatplotlibseabornbar-chart

解决方案


从您提供的数据集开始:

df = pd.DataFrame(dict(
    A=[1, 0, 0, 1],
    B=[0, 1, 1, 1],
    C=[1, 0, 0, 0]
))

你应该重新塑造数据框pandas.melt

df = pd.melt(frame = df,
             var_name = 'class',
             value_name = 'survived')
   class  survived
0      A         1
1      A         0
2      A         0
3      A         1
4      B         0
5      B         1
6      B         1
7      B         1
8      C         1
9      C         0
10     C         0
11     C         0

所以你可以seaborn.countplot用来得到你想要的情节:

fig, ax = plt.subplots()

sns.countplot(ax = ax, data = df, x = 'class', hue = 'survived')

plt.show()

完整代码

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns


df = pd.DataFrame(dict(
    A=[1, 0, 0, 1],
    B=[0, 1, 1, 1],
    C=[1, 0, 0, 0]
))

df = pd.melt(frame = df,
             var_name = 'class',
             value_name = 'survived')


fig, ax = plt.subplots()

sns.countplot(ax = ax, data = df, x = 'class', hue = 'survived')

plt.show()

在此处输入图像描述


推荐阅读