当前位置: 首页 > news >正文

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

相关文章:

  • 分布式环境认证和授权-基于springboot+JWT+拦截器实现-实操+源码下载
  • 什么是 AWS IAM?如何使用 IAM 数据库身份验证连接到 Amazon RDS(上)
  • 【python中类的介绍】
  • jquery实现省市区三级联动
  • 线性回归与逻辑回归:深入解析机器学习的基石模型
  • 计算机网络:应用层(一)
  • web如何实现录制音频,满满干货(上篇)
  • 大文件分割,合并------C++ ------fstream
  • OpenCL学习笔记(三)手动编译开发库(win10+mingw64)
  • leetcode 101.对称二叉树
  • iphone/安卓手机如何使用burp抓包
  • 前端知识(十一)———js判断上传的文件是GBK编码还是UTF-8
  • Apollo配置发布原理解析
  • 简单自定义vuex的设计思路
  • RabbitMQ学习
  • 【前端学习】-粗谈选择器
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • interface和setter,getter
  • java2019面试题北京
  • JavaScript设计模式与开发实践系列之策略模式
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Python3爬取英雄联盟英雄皮肤大图
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Redis学习笔记 - pipline(流水线、管道)
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 分类模型——Logistics Regression
  • 诡异!React stopPropagation失灵
  • 中文输入法与React文本输入框的问题与解决方案
  • PostgreSQL之连接数修改
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​低代码平台的核心价值与优势
  • ​第20课 在Android Native开发中加入新的C++类
  • #1015 : KMP算法
  • #微信小程序:微信小程序常见的配置传值
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (十六)Flask之蓝图
  • (四)汇编语言——简单程序
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ***通过什么方式***网吧
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .net解析传过来的xml_DOM4J解析XML文件
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [BUUCTF 2018]Online Tool(特详解)
  • [C++] 多线程编程-thread::yield()-sleep_for()
  • [Editor]Unity Editor类常用方法
  • [Flutter]WindowsPlatform上运行遇到的问题总结
  • [leetcode 数位计算]2520. 统计能整除数字的位数
  • [Machine Learning] 领域适应和迁移学习