数据分析基础之《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、代码

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

# 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、通过直方图还可以观察和估计哪些数据比较集中,异常或者孤立的数据分布在何处
例如:用户年龄分布,商品价格分布
 

相关推荐

  1. 5 数据分析——matplotlib

    2023-12-09 06:10:04       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-09 06:10:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-09 06:10:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-09 06:10:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-09 06:10:04       20 阅读

热门阅读

  1. vue router之route和router的区别

    2023-12-09 06:10:04       38 阅读
  2. Hive 浅析

    2023-12-09 06:10:04       44 阅读
  3. linux系统web服务以及apache介绍

    2023-12-09 06:10:04       37 阅读
  4. WPF(Windows Presentation Foundation)的 StatusBar控件

    2023-12-09 06:10:04       42 阅读
  5. 深度学习基础回顾

    2023-12-09 06:10:04       42 阅读
  6. 【使用apache snakeyaml 管理yml文件】

    2023-12-09 06:10:04       44 阅读
  7. 《C++新经典设计模式》之第20章 访问者模式

    2023-12-09 06:10:04       29 阅读