使用 matplotlib 绘制分类变量的直方图

Seb*_*rez 4 python matplotlib pandas

我在 pandas 数据框中有一列,它具有三个可能的分类值。当我尝试使用 matplotlib 绘制它时plt.hist(data['column']),直方图条未与 x 轴刻度对齐,并且间隔不均匀。我怎样才能解决这个问题?

在此输入图像描述

Pat*_*ald 8

直方图用于绘制数值变量(连续或离散)的频率分布。分类变量的频率分布最好用条形图显示。为此,您首先需要计算每个类别的频率value_counts,然后可以方便地直接使用 pandas 绘制它plot.bar。或者如果您愿意,也可以使用 matplotlib,如下所示。

import numpy as np               # v 1.19.2
import pandas as pd              # v 1.2.3
import matplotlib.pyplot as plt  # v 3.3.4

data = pd.DataFrame(dict(column=np.repeat(['F', 'M', '--'], [11000, 13000, 3000])))
Run Code Online (Sandbox Code Playgroud)

熊猫

data['column'].value_counts().plot.bar(rot=0)
Run Code Online (Sandbox Code Playgroud)

pandas_bar


绘图库

categories = data['column'].value_counts().index
counts = data['column'].value_counts().values
plt.bar(categories, counts, width=0.5)
Run Code Online (Sandbox Code Playgroud)

matplotlib_bar