使用Python中的NumPy计算数据集的直方图


直方图是数据集分布的图形表示。它以一系列条形图的形式表示数据,其中每个条形图代表数据值的范围,条形图的高度代表在该范围内定义的数据值的频率。

这些主要用于表示数值数据的分布,例如班级成绩、人口分布或员工收入分布等。

在直方图中,x轴表示数据值的范围,划分为区间;y轴表示每个区间内数据值范围的频率。直方图可以通过将每个区间的频率除以总数据值来进行归一化,从而得到相对频率直方图,其中y轴表示每个区间的数值。

使用Python NumPy计算直方图

在Python中,为了创建直方图,我们有numpy、matplotlib和seaborn库。在NumPy中,我们有名为histogram()的函数来处理直方图数据。

语法

以下是为给定数据范围创建直方图的语法。

numpy.histogram(arr, bins, range, normed, weights, density)

其中:

  • arr 是输入数组

  • bins 是图表中表示数据的条形数

  • range 定义直方图中的值范围

  • normed 支持density参数

  • weights 是可选参数,用于每个数据值的权重

  • Density 是将直方图数据标准化为概率密度分布的参数。

histogram函数的输出将是一个元组,包含直方图计数和bin边缘。

示例

在下面的示例中,我们使用NumPy histogram()函数创建一个直方图。在这里,我们将一个数组作为输入参数,将bins定义为10,因此直方图将使用10个bin创建,其余参数可以保持为none。

import numpy as np
arr = np.array([10,20,25,40,35,23])
hist = np.histogram(arr,bins = 10)
print("The histogram created:",hist)

输出

The histogram created: (array([1, 0, 0, 1, 1, 1, 0, 0, 1, 1], dtype=int64), array([10., 13., 16., 19., 22., 25., 28., 31., 34., 37., 40.]))

示例

让我们看另一个例子来理解numpy库的histogram()函数。

import numpy as np
arr = np.array([[20,20,25],[40,35,23],[34,22,1]])
hist = np.histogram(arr,bins = 20)
print("The histogram created:",hist)

输出

The histogram created: (array([1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 0, 0, 0,
1, 1, 0, 1],
 dtype=int64), array([ 1. , 2.95, 4.9 , 6.85, 8.8 , 10.75, 12.7 ,
14.65, 16.6 ,
 18.55, 20.5 , 22.45, 24.4 , 26.35, 28.3 , 30.25, 32.2 , 34.15,
 36.1 , 38.05, 40. ]))

示例

在这个例子中,我们通过指定bins以及要使用的数据范围来创建直方图。以下代码可以作为参考。

import numpy as np
arr = np.array([[20,20,25],[40,35,23],[34,22,1]])
hist = np.histogram(arr,bins = 20, range = (1,10))
print("The histogram created:", hist)

输出

The histogram created: (array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0],
 dtype=int64), array([ 1. , 1.45, 1.9 , 2.35, 2.8 , 3.25, 3.7 ,4.15, 4.6 ,
 5.05, 5.5 , 5.95, 6.4 , 6.85, 7.3 , 7.75, 8.2 , 8.65,
 9.1 , 9.55, 10. ]))

更新于:2023年8月7日

138 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告