如何在pandas中创建直方图

1,376 阅读4分钟

让我们了解一下如何在pandas中创建直方图以及它的作用。

直方图在统计分析中非常有用。直方图通常用来表示一个数字数组的频率分布,它被分割成大小相等的小仓。由于我们用pandas来处理表格数据,所以知道如何在pandas数据框中处理直方图是很重要的。

pandas.dataframe.histpandas.dataframe.plot.hist 是两个流行的函数。你可以用它们来直接绘制pandas数据框架中的直方图。

在这篇文章中,你将看到这两个函数的不同特点,它们之间的区别,以及你可以使用它们的场景。

创建一个样本数据集

第1步:导入pandas

import pandas as pd
import numpy as np
import warnings

warnings.filterwarnings("ignore")

第2步:创建一个数据框架

df = pd.DataFrame({
    'Subject_1': [70.5, 80.7, 50.4, 70.5, 80.9],
    'Subject_2': [40.24, 50.9, 70.6, 80.1, 50.9],
    'Subject_3': [30, 50.5, 70.8, 90.88, 30],
    'School': ['School_1', 'School_1', 'School_1', 'School_2', 'School_2']
})

df

Sample Dataframe

使用pandas的.hist()函数绘制柱状图

默认绘图

为了使用pandas绘制直方图,请将.hist() 函数链接到数据框中。这将返回pandas数据框架中每个数字列的柱状图。

注意:在代码末尾添加分号可以抑制函数的文本输出

# Histogram function on dataframe
df.hist();

Using hist function to plot histogram in pandas

定义Bins来控制直方图的条数。

Bins是我们的数据被分组的类区间。你可以根据每个区间的值的数量来创建一个图。默认情况下,hist() 函数需要10个Bins。你可以通过两种方式改变仓的数量。

1.传递分层的数量

你可以直接传递你在直方图中想要的bin数。

# Histogram with bins=3

df.hist(bins=3);

Using number of bins to plot histogram in pandas

2.传递分栏本身

你也可以传递所需的bin的列表。Pandas会用列表中的值的边缘来做宾格。

# Histogram with custom bins

df.hist(bins=[20, 35, 50, 80]);

Using list of bins to plot histogram in pandas

为一个特定的列制作直方图。

默认情况下,你将为你的数据框架的每一列获得一个直方图。如果你只想要一个特定的柱状图,那么请使用hist()函数的参数column 。你可以给特定的列名作为函数的输入。

# Histogram of 'Subject_1' column
df.hist(column='Subject_1');

Using column parameter

如何在pandas中为一个给定列中的不同组绘制直方图

hist() 在pandas中,函数提供了为不同数据组绘制独立直方图的能力。通过使用 参数,你可以指定不同组的列名。这将为每组数据创建单独的直方图。'by'

在下面的例子中,我们为Subject_1 列创建了两个直方图。这些组是根据School 列创建的。

df.hist(column='Subject_1', by='School');

在pandas中使用.plot()函数而不是.hist()绘制直方图

直方图也可以通过在pandas数据帧上使用plot() 函数来创建。.hist().plot() 函数之间的主要区别是,.plot 函数在同一个图上为数据框架的所有数字列创建直方图。在.plot 函数的情况下,不做单独的图。

Plot函数也可以像hist函数一样接收binsby 参数。plot 函数可以通过两种方式用于直方图的绘制。

1.通过使用kind 参数

plot() 函数有一个 参数,用于接收要创建的图的种类。对于直方图,你需要将该值作为 。其他图有不同的值。kind hist

df.plot(kind='hist');

Using kind parameter

请注意,plot() 函数已经自动为创建的绘图分配了颜色和图例。

2.通过使用plot 函数的hist 方法

你可以直接从plot 函数中访问直方图hist 方法。只需在.plot 函数之后添加.hist()

df.plot.hist();

Using hist method

实用提示

  1. 你应该使用pandas的快速绘图选项来获得即时的数据可视化。这样就不需要使用外部库了(尽管这些绘图功能在引擎盖下使用了matplotlib)。
  2. 你也可以使用matplotlib提供的其他参数,如旋转x标签、标题,以提高绘图的可读性。

测试你的知识

Q1: hist 函数中的哪个参数是用来绘制单列直方图的?

答: column 参数是用来绘制单列直方图的。

Q2: plot 函数中的kind 参数有什么用?

答: kind 参数用于定义绘图的类型。bar 用于绘制条形图,line 用于绘制线形图,以此类推。你可以在这里查看完整的列表

Q3: 我们可以用interval 参数来定义直方图的分档。正确/错误?

答: 错。可以使用bins 参数。