3.3 分析特征内部数据分布与分散状况

news2024/11/27 5:24:50

3.3 分析特征内部数据分布与分散状况

  • 3.3.1 绘制直方图 bar()
  • 3.3.2 绘制饼图 pie()
  • 3.3.3 绘制箱线图 boxplot()
  • 3.3.4 任务实现
    • 1、绘制国民生产总值构成分布直方图
    • 2、绘制国民生产总值构成分布饼图
    • 3、绘制国民生产总值分散情况箱线图
  • 小结

3.3.1 绘制直方图 bar()

  直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。
  用直方图可以比较直观地看出产品质量特性的分布状态,便于判断其总体质量分布情况。直方图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布。
pyplot中绘制直方图的函数为bar()

matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = None,** kwargs)

常用参数及说明如下表所示:
在这里插入图片描述

# 3.3 分析特征内部数据分布与分散状况
# 3.3.1 绘制直方图 bar()
# 1、绘制2017年第一季度各产业国民生产总值直方图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
data = np.load('F:/书籍/Python数据分析与应用/37304_Python数据分析与应用_源代码和实验数据/
第3章/data/国民经济核算季度数据.npz',allow_pickle=True)
name = data['columns']  # 提取其中的columns,作为数据的标签
# print("name:\n",name)
values = data['values']   # 提取其中的values数组,视为数据的存在位置
# print("values:\n", values)
label = ['第一产业', '第二产业','第三产业']  # 刻度标签
plt.figure(figsize = (6,5))  # 设置画布
# 绘制直方图
plt.bar(range(3), values[-1,3:6], width=0.5)  # values[-1,3:6] 最后一行的第3、4、5列
plt.xlabel('产业')
plt.ylabel('生产总值(亿元)')
plt.xticks(range(3),label)# 添加x轴刻度
plt.title('2017年第一季度各产业国民生产总值直方图')
plt.savefig('F:/书籍/Python数据分析与应用/自己实现/3.2.2017年第一季度各产业国民生产总值直方图.png')
plt.show()

在这里插入图片描述

3.3.2 绘制饼图 pie()

  饼图(Pie Graph)是将各项的大小与各项总和的比例显示在一张“饼”中,以“饼”的大小来确定每一项的占比。
  饼图可以比较清楚地反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现方式直观。
pyplot中绘制饼图的函数为pie()

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, … )

常用参数及说明如下表所示:
在这里插入图片描述

plt.figure(figsize = (6,6))  # 设置画布为正方形,则绘制的饼图是正圆
label = ['第一产业', '第二产业','第三产业']  # 定义标签
ex = [0.01, 0.01, 0.01]  # 设定各项距离圆心n个半径

# 绘制饼图  # values[-1,3:6] 最后一行的第3、4、5列
plt.pie(values[-1,3:6], explode = ex, labels = label, autopct = '%1.1f%%')  

plt.title('2017年第一季度各产业国民生产总值饼图')
plt.savefig('F:/书籍/Python数据分析与应用/自己实现/3.2017年第一季度各产业国民生产总值饼图.png')
plt.show()

在这里插入图片描述
  可以明确看出3个产业在整个国民生产总值中的占比。第一产业不到5%,第三产业超过50%,说明我国经济的主要贡献为第三产业。

3.3.3 绘制箱线图 boxplot()

  箱线图(boxplot)也称箱须图,其绘制需使用常用的统计量,能提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异。
  箱线图利用数据中的五个统计量(下边缘、下四分位数、中位数、上四分位数和上边缘)来描述数据,它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息,特别可以用于对几个样本的比较。
pyplot中绘制箱线图的函数为boxplot(),其基本使用语法如下:

matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None,meanline=None, labels=None, … )

在这里插入图片描述

plt.figure(figsize = (6,4))  # 设置画布
label = ['第一产业', '第二产业','第三产业']  # 定义标签

# 绘制箱线图  # values[-1,3:6] 最后一行的第3、4、5列
gdp = (list(values[:,3]), list(values[:,4]), list(values[:,5]))
plt.boxplot(gdp, notch = True, labels = label, meanline = True)  

plt.title('2017年第一季度各产业国民生产总值箱线图')
plt.savefig('F:/书籍/Python数据分析与应用/自己实现/3.2017年第一季度各产业国民生产总值箱线图.png')
plt.show()

在这里插入图片描述

3.3.4 任务实现

1、绘制国民生产总值构成分布直方图

  通过直方图分析2000年第一季度和2017年第一季度的三大产业的国民生产总值,可以发现各产业绝对数值之间的关系,并通过对比发现产业结构的变化。同理可以得出行业间的绝对数值关系以及2000 ~2017年的行业发展状况。

# 1、绘制国民生产总值构成分布直方图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False
data = np.load('F:/书籍/Python数据分析与应用/37304_Python数据分析与应用_源代码和实验数据/第3章/data/国民经济核算季度数据.npz',allow_pickle=True)
name = data['columns']  # 提取其中的columns,作为数据的标签
values = data['values']   # 提取其中的values数组,视为数据的存在位置
label1 = ['第一产业', '第二产业','第三产业']  # 刻度标签1
label2 = ['农业','工业', '建筑业', '批发', '交通', '餐饮', '金融', '房地产', '其他']  #刻度标签2

p = plt.figure(figsize = (12,12))
# 子图1
ax1 = p.add_subplot(2,2,1)
plt.bar(range(3), values[0,3:6], width=0.5)  # 绘制直方图
plt.xlabel('产业')
plt.ylabel('生产总值(亿元)')
plt.xticks(range(3),label1)# 添加x轴刻度
plt.title('2000年第一季度国民生产总值产业构成分布直方图')
# 子图2
ax1 = p.add_subplot(2,2,2)
plt.bar(range(3), values[-1,3:6], width=0.5)  # values[-1,3:6] 最后一行的第3、4、5列
plt.xlabel('产业')
plt.ylabel('生产总值(亿元)')
plt.xticks(range(3),label1)# 添加x轴刻度
plt.title('2017年第一季度国民生产总值产业构成分布直方图')

# 子图3
ax1 = p.add_subplot(2,2,3)
plt.bar(range(9), values[0,6:], width=0.5)  #  绘制直方图
plt.xlabel('行业')
plt.ylabel('生产总值(亿元)')
plt.xticks(range(9),label2)# 添加x轴刻度
plt.title('2000年第一季度国民生产总值行业构成分布直方图')
# 子图4
ax1 = p.add_subplot(2,2,4)
plt.bar(range(9), values[-1,6:], width=0.5)  #  绘制直方图
plt.xlabel('行业')
plt.ylabel('生产总值(亿元)')
plt.xticks(range(9),label2)# 添加x轴刻度
plt.title('2017年第一季度国民生产总值行业构成分布直方图')

plt.savefig('F:/书籍/Python数据分析与应用/自己实现/3.绘制国民生产总值构成分布直方图.png')
plt.show()

在这里插入图片描述
  可以看出,第一产业与第二产业和第三产业的国民生产总值差距愈发巨大。根据坐标轴变化可以发现,国民生产总值增长接近10倍。2000~2017年,金融行业其他行业增长幅度相比较较明显。

2、绘制国民生产总值构成分布饼图

  通过分析2000年与2017年不同的产业和行业在国民生产总值中的占比,可以发现我国的产业结构变化和行业变迁。

# 绘制国民生产总值构成分布饼图
label1 = ['第一产业', '第二产业','第三产业']  # 刻度标签1
label2 = ['农业','工业', '建筑业', '批发', '交通', '餐饮', '金融', '房地产', '其他']  #刻度标签2
ex1 = [0.01, 0.01, 0.01]  # 设定各项距离圆心n个半径
ex2 = [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01]  # 设定各项距离圆心n个半径
p = plt.figure(figsize = (11,11))
# 子图1
ax1 = p.add_subplot(2,2,1)
plt.pie(values[0,3:6], explode = ex1, labels = label1, autopct = '%1.1f%%') # 绘制饼图 
plt.title('2000年第一季度国民生产总值产业构成分布饼图')
# 子图2
ax1 = p.add_subplot(2,2,2)
plt.pie(values[-1,3:6], explode = ex1, labels = label1, autopct = '%1.1f%%') # 绘制饼图
plt.title('2017年第一季度国民生产总值产业构成分布饼图')
# 子图3
ax1 = p.add_subplot(2,2,3)
plt.pie(values[0,6:], explode = ex2, labels = label2, autopct = '%1.1f%%') # 绘制饼图
plt.title('2000年第一季度国民生产总值行业构成分布饼图')
# 子图4
ax1 = p.add_subplot(2,2,4)
plt.pie(values[-1,6:], explode = ex2, labels = label2, autopct = '%1.1f%%') # 绘制饼图
plt.title('2017年第一季度国民生产总值行业构成分布饼图')

plt.savefig('F:/书籍/Python数据分析与应用/自己实现/3.绘制国民生产总值构成分布饼图.png')
plt.show()

在这里插入图片描述
  可以看出,2000~2017年第三产业在整个国民生产总值中的占比约提高了10%,第一产业和第二产业在国民生产总值中的上比分别下降了约4%和6%。工业在整个国民生产总值中的比例下降了7%,其他行业与全融行业则分别提升了6.7%与3.7%。

3、绘制国民生产总值分散情况箱线图

  通过箱线图分析2000 ~2017年不同的产业和行业在国民生产总值中的分散情况,从而判断整体增速是否加快。

# 3、绘制国民生产总值构成分布箱线
label1 = ['第一产业', '第二产业','第三产业']  # 刻度标签1
label2 = ['农业','工业', '建筑业', '批发', '交通', '餐饮', '金融', '房地产', '其他']  #刻度标签2
gdp1 = (list(values[:,3]), list(values[:,4]), list(values[:,5]))
gdp2 = ([list(values[:,i]) for i in range(6,15)])
p = plt.figure(figsize = (10,10))
# 子图1
ax1 = p.add_subplot(2,1,1)
plt.boxplot(gdp1, notch = True, labels = label1, meanline = True)  # 绘制箱线图
plt.title('2000-2017年各产业国民生产总值箱线图')
plt.ylabel('生产总值(亿元)')
# 子图2
ax1 = p.add_subplot(2,1,2)
plt.boxplot(gdp2, notch = True, labels = label2, meanline = True)  # 绘制箱线图
plt.title('2000-2017年各行业国民生产总值箱线图')
plt.ylabel('生产总值(亿元)')

plt.savefig('F:/书籍/Python数据分析与应用/自己实现/3.绘制国民生产总值构成分布箱线图.png')
plt.show()

在这里插入图片描述

小结

本章以2000至2017年各季度国民生产总值数据为例,介绍了pyplot绘图的基本语法,常用参数。
  介绍了分析特征间相关关系的散点图
  分析特征间趋势关系的折线图
  分析特征内部数据分布的直方图饼状图
  以及分析特征内部数据分散情况的箱线图
为深入学习Matplotlib数据可视化打下了深厚的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/620959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue源码解析

【尚硅谷】Vue源码解析之虚拟DOM和diff算法 【Vue源码】图解 diff算法 与 虚拟DOM-snabbdom-最小量更新原理解析-手写源码-updateChildren] 文章目录 2. snabbdom 简介 及 准备工作2.1 简介2.2 搭建初始环境1. 安装snabbdom2. 安装webpack5并配置3. 复制官方demo Example 3. …

IJCAI 2023 | 如何从离散时间事件序列中学习因果结构?

本文分享一篇我们在IJCAI 2023的最新工作,文章分析了在离散时间事件序列上存在的瞬时效应问题,提出了一种利用瞬时效应的结构霍克斯模型,且在理论上证明了事件序列上的瞬时因果关系同样是可识别的。 相关论文: Jie Qiao et al. “…

基于SpringBoot的家庭记账管理系统的设计与实现

摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

数据结构之线性表

1.线性表的定义 线性表是由n(n≥0)个类型相同的数据元素组成的有限 序列,记作:L 𝑎0, 𝑎1, ⋯ , 𝑎𝑖 , ⋯ , 𝑎𝑛−1 2 线性表的顺序存储结构实现 线性表的顺序存储结构称为顺序表(…

2023年前端面试汇总-HTML

1. src和href的区别 src和href都是用来引用外部的资源,它们的区别如下: src表示对资源的引用,它指向的内容会嵌入到当前标签所在的位置。src会将其指向的资源下载并应用到文档内,如请求js脚本。当浏览器解析到该元素时&#xff…

HyperLogLog数据结构

基数计数(cardinality counting) 通常用来统计一个集合中不重复的元素个数,例如统计某个网站的UV,或者用户搜索网站的关键词数量。数据分析、网络监控及数据库优化等领域都会涉及到基数计数的需求。 要实现基数计数,最简单的做法是记录集合中…

34岁出来面试,还被拒绝有多惨?

我强烈建议大家定期去参加一下外面的面试,尤其是BAT大厂的面试,不要一直闷在公司里,不然你很容易被这个世界遗弃。 前言 昨天,我们小组长奉命去面了一个34岁的测试员。 去了大概半个多小时吧,回来后,他的…

图数据库(二):Java操作图数据库

在上篇文章中,我们介绍了什么是Neo4j,什么是Cypher以及Neo4j的使用,今天我们学习一下如何使用Java操作Neo4j图数据库。 Cypher查询 在使用Java操作Neo4j之前,我们先了解一点,Cypher语句简单查询。 本文使用的是Neo4j…

Flutter的状态管理之Provider

Provider简介 Flutter Provider是Flutter中一个非常流行的状态管理库,它可以帮助开发者更加方便地管理应用程序中的状态。Provider提供了一种简单的方式来共享和管理应用程序中的数据,并且可以根据数据的变化来自动更新UI界面。 Provider的核心思想是将…

网络协议——什么是RIP协议?工作原理是什么?

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、什么是RIP协议? 二、为什么要使用RIP? 三、RIP用在哪里? 四、RIP协议的工作原理 五、总结 …

Redis安装布隆过滤器

目录 1 什么是布隆过滤器1.1 布隆过滤器的原理1.2 布隆过滤器缺点 2 插件形式安装2.1 下载布隆过滤器插件 3 docker方式单机安装4 Redis集群部署安装4.1 创建目录4.2 redis配置文件4.3 配置docker-compose.yml文件4.4 启动布隆过滤器集群4.5 配置集群4.6 布隆过滤器常用命令4.7…

如何将simulink中的元件(光伏板)导入到plecs中使用

simulink中有一些元件在plecs中是没有的,如果想要直接使用simulink的库,可以这样操作: 1 新建mdl文件(simulink的文件类型),并在该文件中搭建好想要的模型、元件(只放想要导出的元件就可以了&…

商城检索 DSL

模糊匹配过滤(按照属性、分类、品牌、价格区间、库存)排序分页高亮聚合分析 一. 搜索关键字 检索字段:商品sku标题 “skuTitle” : “华为 HUAWEI Mate 30 Pro 亮黑色 8GB256GB麒麟990旗舰芯片OLED环幕屏双4000万徕卡电影四摄4G全网通手机”…

基于Java+SpringBoot+Vue前后端分离考试学习一体机设计与实现(视频讲解)

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

docker-compose单机容器集群编排

docker-compose dockerfile模板文件可以定义一个独立的应用容器,如果需要多个容器就需要服务编排。服务编排有很多技术方案 docker-compose开源的项目实现对容器集群的快速编排 docker-compose将所管理的容器分为三层,分别为工程,服务&#…

Jenkins+RF持续集成测试(三) 生成测试报告并发给指定人

在上一篇《定时更新SVN完成构建》中讲了定时从SVN拉取最新的测试脚本,并自动构建的过程。这篇我将介绍怎么配置测试robot报告,并发送给指定人群。 1、要发给指定人,首先需要在job配置,构建后操作中增加“Editable Email Notificat…

day3 ARM寄存器组织

目录 寄存器 ARM寄存器 专用寄存器 CPSR寄存器 寄存器 概念:寄存器是处理器内部的存储器,没有地址; 作用:一般用于暂时存放参与运算的数据和运算结果; 分类:包括通用寄存器、专用寄存器、控制寄存器&…

腾讯云数据库2022下半年本地部署市场收入同比增速达110%,远超市场平均水平

6月7日,记者获悉,据全球领先的IT市场研究和咨询公司IDC发布的《2022年下半年中国关系型数据库软件市场跟踪报告》显示,在Top 5厂商中,腾讯云数据库整体收入同比增速、本地部署模式收入同比增速均位列第一。 具体来看,…

ChatPPT一键制作PPT,效果拉满~

💧 C h a t P P T 一 键 制 作 P P T , 效 果 拉 满 ! \color{#FF1493}{ChatPPT一键制作PPT,效果拉满!} ChatPPT一键制作PPT,效果拉满!💧 🌷 仰望天空&#xf…

网络安全面试题集及答案整理汇总(2023最新版详细)

前言 随着国家政策的扶持,网络安全行业也越来越为大众所熟知,想要进入到网络安全行业的人也越来越多。 为了拿到心仪的Offer之外,除了学好网络安全知识以外,还要应对好企业的面试。 作为一个安全老鸟,工作这么多年&…