使用Python的函数绘制直方图
直方图是一个统计图表,用于表示一组连续分布的数据的频率分布。它能够显示数据的分布方式,有助于我们进行数据分析和判断。在Python中,可以使用matplotlib库的hist()函数绘制直方图。
hist()函数的基本结构为:
matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)
x:指定绘图数据;
bins:指定直方图中条形的个数;
range:指定直方图中的数据范围,若不指定,则默认为最大值和最小值的范围;
density:布尔值,表示是否绘制密度曲线,默认为False;
weights:权值,可为每一个数据点设置权值;
cumulative:布尔值,表示是否需要累计直方图,默认为False;
bottom:数据的起始位置,默认为0;
histtype:指定直方图的类型,默认为bar;
align:设置条形的对齐方式,默认为mid,即中间对齐;
orientation:设置直方图的方向,默认为vertical,即竖直方向;
rwidth:设置直方图条形宽度的占比,默认为1;
log:布尔值,表示Y轴是否需要使用对数刻度,默认为False;
color:指定直方图的颜色;
label:设置图例;
stacked:布尔值,表示是否堆叠直方图,默认为False。
绘制直方图的前提是有数据,接下来就介绍一下如何获取数据。
1、使用numpy库的random模块生成随机数组
import numpy as np
np.random.seed(10) # 将生成随机数生成器的种子设为10,这样每次运行程序时,生成的随机数值序列都是一样的
data = np.random.randn(1000) # 生成1000个符合标准正态分布的随机数
2、使用pandas库的read_csv()函数读取csv文件中的数据
import pandas as pd
data = pd.read_csv('data.csv', header=None)
data = data[0] # 读取第一列的数据
以上两种方式都可以获取到数据,将它们传入hist()函数即可绘制直方图。
下面是完整的代码:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(10) # 将生成随机数生成器的种子设为10,这样每次运行程序时,生成的随机数值序列都是一样的
data = np.random.randn(1000) # 生成1000个符合标准正态分布的随机数
plt.hist(data, bins=50, color='steelblue', density=True)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()
在执行完以上代码后,会得到一张直方图,它显示了数据分布的情况,如下图所示。

可以看到,直方图中的每个条形代表一个数值区间,横轴表示数值区间,纵轴表示数据在相应的区间内出现的频数。我们可以看到,标准正态分布的数据呈钟形分布,且数据分布密度最大处位于均值附近,这也是正态分布的一个特征。
直方图是数据分析中经常用到的一种工具,能够直观地展示数据分布的情况,帮助我们理解数据和发现数据的规律,所以掌握直方图的绘制方法对于数据分析是非常重要的。
