数据分析基础之《matplotlib(5)—直方图》

一、直方图介绍

1、什么是直方图

直方图,形状类似柱状图却有着与柱状图完全不同的含义。直方图牵涉统计学的概念,首先要对数据进行分组,然后统计每个分组内数据元的数量。在坐标系中,横轴标出每个组的端点,纵轴表示频数,每个矩形的高,代表对应的频数,称这样的统计图为频数分布直方图

2、示例

某校初三(1)班36位同学的身高的频数分布直方图如下图所示:

(1)身高在哪一组的同学最多?

(2)身高在160.5cm以上的同学有多少人?

相关概念

组数:在统计数据时,我们把数据按照不同的范围分成几个组,分成的组的个数称为组数

组距:每一组两个端点的差

已知:最高175.5,最矮150.5,组距5,求组数

(175.5 - 150.5) / 5 = 5

二、直方图与柱状图的对比

1、柱状图是以矩形的长度表示每一组的频度或数量,其宽度(表示类别)则是固定的,利于较小的数据集分析

2、直方图描述的是一组数据的频次分布,是以矩形的长度表示每一组的频度或数量,宽度则表示各组的组距,因此其高度与宽度均有意义,利于展示大量数据集的统计结果

例如把年龄分成"0-5,5-10,...,80-85"17个组,统计一下中国人口年龄的分布情况。直方图有助于我们知道数据的分布情况,诸如众数、中位数的大致位置、数据是否存在缺口或者异常值

3、直方图展示数据的分布,柱状图比较数据的大小

这是直方图与柱状图最根本的区别。举个例子,有10个苹果,每个苹果重量不同。如果使用直方图,就展示了重量在0-100g的苹果有多少个,10-20g的苹果有多少个;如果使用柱状图,则展示每个苹果的具体重量

所以直方图展示的是一组数据中,在你划分的区间里,这些数据的分布情况,但是我们不知道在一个区间里,单个数据的具体大小

4、直方图x轴为定量数据,柱状图x轴为分类数据

5、直方图柱子无间隔,柱状图柱子有间隔

6、直方图柱子宽度可不一,柱状图柱子宽度需一致

7、直方图要素

三、直方图绘制

1、需求:电影时长分布状况

现有250部电影的时长,希望统计出这些电影时长的分布状态(比如时长为100分钟到120分钟电影的数量,出现的频率)等信息,你应该如何呈现这些数据

2、matplotlib.pyplot.hist(x, bins=None, normed=None, **kwargs)

说明:

x:这一组数据

bins:组数

绘制

设置组距

设置组数(通常对于数据较少的情况,分为5~12组,数据较多,更换图形显示方式)

通常设置组数会有相应公式:组数 = 级差 / 组距 (max - min) / distance

3、代码

python 复制代码
# 直方图绘制
# 需求:电影时长分布状况

# 1、准备数据
time = [131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 136, 126, 134,  95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117,  86,  95, 144, 105, 126, 130,126, 130, 126, 116, 123, 106, 112, 138, 123,  86, 101,  99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134, 125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109, 132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140,  83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109, 119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103, 144,  83, 123, 111, 110, 111, 100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114, 125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137,  92,121, 112, 146,  97, 137, 105,  98, 117, 112,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]

# 2、创建画布
plt.figure(figsize=(20,8), dpi=100)

# 3、绘制直方图
# 组距
distance = 2
# 组数
group_num = int((max(time) - min(time)) / distance)
plt.hist(time, group_num)

# 修改x轴刻度
plt.xticks(range(min(time), max(time) + 2, distance))

# 添加网格
plt.grid(linestyle="--", alpha=0.5)

# 添加x,y轴描述信息
plt.xlabel("电影时长大小")
plt.ylabel("电影的数据量")

# 4、显示图像
plt.show()

3、直方图注意点

(1)注意组距

组距会影响直方图呈现出来的数据分布,因此在绘制直方图的时候需要多次尝试改变组距

(2)注意y轴所代表的变量

y轴上的变量可以是频次(数据出现了多少次)、频率(频次/总次数)、频率/组数,不同的变量会让直方图描述的数据分布意义不同

四、直方图的应用场景

1、用于表示分布情况

2、通过直方图还可以观察和估计哪些数据比较集中,异常或者孤立的数据分布在何处

例如:用户年龄分布,商品价格分布

相关推荐
网络真危险!!37 分钟前
【数据分析】认清、明确
数据挖掘·数据分析
菜鸟的人工智能之路37 分钟前
极坐标气泡图:医学数据分析的可视化新视角
python·数据分析·健康医疗
菜鸟学Python38 分钟前
Python 数据分析核心库大全!
开发语言·python·数据挖掘·数据分析
EterNity_TiMe_1 小时前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
wxl78122714 小时前
如何使用本地大模型做数据分析
python·数据挖掘·数据分析·代码解释器
小尤笔记16 小时前
利用Python编写简单登录系统
开发语言·python·数据分析·python基础
FreedomLeo116 小时前
Python数据分析NumPy和pandas(四十、Python 中的建模库statsmodels 和 scikit-learn)
python·机器学习·数据分析·scikit-learn·statsmodels·numpy和pandas
穆友航18 小时前
PDF内容提取,MinerU使用
数据分析·pdf
EterNity_TiMe_19 小时前
【论文复现】神经网络的公式推导与代码实现
人工智能·python·深度学习·神经网络·数据分析·特征分析
麦田里的稻草人w19 小时前
【数据分析实战】(一)—— JOJO战力图
数据挖掘·数据分析