3.2 分析特征间的关系
3.2 分析特征间的关系
- 3.2.1 绘制散点图 scatter()
- 例子1:绘制2000-2017年各季度国民生产总值散点图
- 例子2:使用不同颜色不同形状的点,绘制2000-2017年各产业各季度国民生产总值散点图
- 3.2.2 绘制折线图 plot()
- 例子1:绘制2000-2017年各季度国民生产总值折线图
- 例子2:使用不同颜色不同形状的点,绘制2000-2017年各产业各季度国民生产总值折线图
- 3.2.3 任务实现
- 1、绘制2000-2017年各产业与各行业的国民生产总值散点图
- 2、绘制2000-2017年各产业与各行业的国民生产总值折线图
3.2.1 绘制散点图 scatter()
散点图(scatter diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形。
值是由点在图表中的位置表示,类别是由图表中的不同标记表示,通常用于比较跨类别的数据。
散点图可以提供两类关键信息。
(1)特征之间是否存在数值或者数量的关联趋势,关联趋势是线性的还是非线性的。
(2)如果某一个点或者某几个点偏离大多数点,那这些点就是离群值。通过散点图可以一目了然,从而可以进一步分析这些离群值是否在建模分析中产生很大的影响。
散点图通过散点的疏密程度和变化趋势表示两个特征的数量关系。如果有3个特征,若其中一个特征为类别型,散点图改变不同特征的点的形状或者颜色,即可了解两个数值型特征和这个类别型之间的关系。
pyplot中绘制散点图的函数为scatter,其使用语法如下:
scatter函数
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, alpha=None, **kwargs)
常用参数及说明如下表所示:

例子1:绘制2000-2017年各季度国民生产总值散点图
# 1、绘制2000-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)
plt.figure(figsize = (8,7)) # 设置画布
plt.scatter(values[:,0],values[:,2],marker='o') # 绘制散点图
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.ylim((0,225000)) # 设置y轴范围
# 添加x轴刻度 --->1.添加刻度2.添加刻度的值,3.将值旋转45度
plt.xticks(range(0,70,4), values[range(0,70,4), 1], rotation=45)
plt.title('2000-2017各季度国民生产总值散点图')
plt.savefig('F:/书籍/Python数据分析与应用/自己实现/3.22000-2017各季度国民生产总值散点图.png')
plt.show()


例子2:使用不同颜色不同形状的点,绘制2000-2017年各产业各季度国民生产总值散点图
# 2、使用不同颜色不同形状的点,绘制2000-2017年各产业各季度国民生产总值散点图
plt.figure(figsize=(8,7)) #设置画布
# 绘制散点图1
plt.scatter(values[:,0], values[:,3], marker='o',c='red')
# 绘制散点图2
plt.scatter(values[:,0], values[:,4], marker='D',c='blue')
# 绘制散点图3
plt.scatter(values[:,0], values[:,5], marker='v',c='yellow')
plt.xlabel('年份') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加纵轴标签
plt.xticks(range(0,70,4),values[range(0,70,4),1], rotation=45)
plt.title("2000-2017年各产业各季度国民生产总值散点图")
plt.legend(['第一产业','第二产业', '第三产业']) # 添加图例
plt.savefig('F:/书籍/Python数据分析与应用/自己实现/2000-2017年各产业各季度国民生产总值散点图.png') # 保存
plt.show()

通过上图的颜色和形状的区别可以看出,第一产业增长平缓,第三产业呈现指数型增长,第二产业每年会根据季度呈现周期性波动。总体来看,各个产业都在持续增长中。
3.2.2 绘制折线图 plot()
折线图(line chart)是一种将数据点按照顺序连接起来的图形。可以看作是将散点图,按照x轴坐标顺序连接起来的图形。 折线图的主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间(根据常用比例设置)而变化的连续数据。同时还可以看出数量的差异,增长趋势的变化。
pyplot中绘制折线图的函数为plot,其基本使用语法如下。
matplotlib.pyplot.plot(*args, **kwargs)
plot函数在官方文档的语法中只要求填入不定长参数,实际可以填入的主要参数主要如下:

其中,color参数的8种常用颜色的缩写如下表:

例子1:绘制2000-2017年各季度国民生产总值折线图
# 1、绘制2000-2017年各季度国民生产总值折线图
plt.figure(figsize = (8,7)) # 设置画布
plt.plot(values[:,0],values[:,2],color='m',linestyle='--',marker='o') # 绘制散点图
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
plt.ylim((0,225000)) # 设置y轴范围
# 添加x轴刻度 --->1.添加刻度2.添加刻度的值,3.将值旋转45度
plt.xticks(range(0,70,4), values[range(0,70,4), 1], rotation=45)
plt.title('2000-2017各季度国民生产总值散点图')
plt.savefig('F:/书籍/Python数据分析与应用/自己实现/3.2.2000-2017各季度国民生产总值折线图.png')
plt.show()

plot函数一次可以接收多组数据,添加多条折线图,同时分别定义每条折线图的颜色、点的形状和类型,还可以将这三个参数连接在一起,用一个字符串表示。
例子2:使用不同颜色不同形状的点,绘制2000-2017年各产业各季度国民生产总值折线图
# 2、使用不同颜色不同形状的点,绘制2000-2017年各产业各季度国民生产总值折线图
plt.figure(figsize=(8,7)) #设置画布
# # 绘制折线图1
# plt.plot(values[:,0], values[:,3], 'bs-')
# # 绘制折线图2
# plt.plot(values[:,0], values[:,4], 'ro-')
# # 绘制折线图3
# plt.plot(values[:,0], values[:,5], 'gH-')
# plot函数一次可以接收多组数据,添加多条折线图
plt.plot(values[:,0], values[:,3], 'bs-',values[:,0], values[:,4], 'ro-',values[:,0], values[:,5], 'gH-' )
plt.xlabel('年份') # 添加横轴标签
plt.ylabel('生产总值(亿元)') # 添加纵轴标签
plt.xticks(range(0,70,4),values[range(0,70,4),1], rotation=45)
plt.title("2000-2017年各产业各季度国民生产总值散点图")
plt.legend(['第一产业','第二产业', '第三产业']) # 添加图例
plt.savefig('F:/书籍/Python数据分析与应用/自己实现/2000-2017年各产业各季度国民生产总值折线图.png') # 保存
plt.show()

3.2.3 任务实现
1、绘制2000-2017年各产业与各行业的国民生产总值散点图
国民生产总值数据包括三大产业的国民生产总值,以及农业、工业、建筑、批发、交通、餐饮、金融、房地产和其他行业各个季度的增加值。通过散点图分析三大行业的国民生产总值可以发现我国产业结构。通过比较各行业间季度的增加值则可以发现国民经济的主要贡献行业。此处分别使用两个子图绘制三大产业和细分行业各个季度的生产总值。
# 绘制2000-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)
p = plt.figure(figsize=(12,12)) # 设置画布# 子图1 三大产业
ax1 = p.add_subplot(2,1,1)
plt.scatter(values[:,0], values[:,3], marker='o',c='red') # 绘制散点图
plt.scatter(values[:,0], values[:,4], marker='D',c='blue')
plt.scatter(values[:,0], values[:,5], marker='v',c='yellow')
plt.ylabel('生产总值(亿元)')
plt.title('2000-2017年各产业与行业的国民生产总值散点图')
plt.legend(['第一产业','第二产业', '第三产业']) # 添加图例# 子图2 各行业
ax2 = p.add_subplot(2,1,2)
plt.scatter(values[:,0], values[:,6], marker='o',c='r') # 绘制散点图
plt.scatter(values[:,0], values[:,7], marker='D',c='b')
plt.scatter(values[:,0], values[:,8], marker='v',c='y')
plt.scatter(values[:,0], values[:,9], marker='8',c='g')
plt.scatter(values[:,0], values[:,10], marker='p',c='c')
plt.scatter(values[:,0], values[:,11], marker='+',c='m')
plt.scatter(values[:,0], values[:,12], marker='s',c='k')
plt.scatter(values[:,0], values[:,13], marker='*',c='purple')
plt.scatter(values[:,0], values[:,14], marker='d',c='brown')
plt.legend(['农业','工业', '建筑业', '批发', '交通', '餐饮', '金融', '房地产', '其他']) # 添加图例
plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
# 添加x轴刻度 --->1.添加刻度2.添加刻度的值,3.将值旋转45度
plt.xticks(range(0,70,4), values[range(0,70,4), 1], rotation=45)plt.savefig('F:/书籍/Python数据分析与应用/自己实现/3、2000-2017年各产业与行业的国民生产总值散点图.png')
plt.show()

可以看出,我国现阶段国民经济增长的主要动力是第三产业,其次是第二产业。从行业来看,工业、其他行业和农业对整体国民经济贡献度最大。
2、绘制2000-2017年各产业与各行业的国民生产总值折线图
通过绘制2000~2017年各产业与行业的国民生产总值折线图,分别能够发现我国经济各产业与各行业增长趋势。
绘制2000~2017年各产业与行业的国民生产总值折线图
# 2、绘制2000-2017年各产业与行业的国民生产总值折线图
p = plt.figure(figsize=(12,12)) # 设置画布# 子图1 三大产业
ax1 = p.add_subplot(2,1,1)
plt.plot(values[:,0],values[:,3], 'r-',values[:,0], values[:,4], 'b-.',values[:,0], values[:,5], 'y--')
plt.ylabel('生产总值(亿元)')
plt.title('2000-2017年各产业与行业的国民生产总值散点图')
plt.legend(['第一产业','第二产业', '第三产业']) # 添加图例# 子图2 各行业
ax2 = p.add_subplot(2,1,2)
plt.plot(values[:,0], values[:,6], 'r-',values[:,0], values[:,7], 'b-.',values[:,0], values[:,8], 'y--',values[:,0], values[:,9], 'g:',values[:,0], values[:,10], 'c-',values[:,0], values[:,11], 'm-.',values[:,0], values[:,12], 'k--',values[:,0], values[:,13], 'r:',values[:,0], values[:,14], 'b-')
plt.legend(['农业','工业', '建筑业', '批发', '交通', '餐饮', '金融', '房地产', '其他']) # 添加图例plt.xlabel('年份')
plt.ylabel('生产总值(亿元)')
# 添加x轴刻度 --->1.添加刻度2.添加刻度的值,3.将值旋转45度
plt.xticks(range(0,70,4), values[range(0,70,4), 1], rotation=45)plt.savefig('F:/书籍/Python数据分析与应用/自己实现/3、2000-2017年各产业与行业的国民生产总值散点图.png')
plt.show()

可以看出, 我国整体经济呈现增长趋势,其中第一产业增长相对较慢但是周期性最明显,农业的周期性和第一产业的周期性基本吻合。工业和第二产业的增长趋势基本一致。同时, 除了餐饮行业外,其他行业均呈现较为明显的增长趋势。
相关文章:
3.2 分析特征间的关系
3.2 分析特征间的关系 3.2.1 绘制散点图 scatter()例子1:绘制2000-2017年各季度国民生产总值散点图例子2:使用不同颜色不同形状的点,绘制2000-2017年各产业各季度国民生产总值散点图 3.2.2 绘制折线图 plot()例子1:绘制2000-2017年…...
Numpy学习
Numpy官方手册:Array objects — NumPy v1.24 Manual 创建数组 1.1 从现有数据创建 重要类型 np.ndarray # 判断是否可以迭代 注意0维标量不可以遍历 print(__iter__ in dir(np.ndarray) and __getitem__ in dir(np.ndarray))np.array(object, dtypeNone) objec…...
IDC机房相电压与线电压的关系
380V电动机(三相空调压缩机)的电流计算公式为:Ⅰ=额定功率(1.732额定电压功率因数效率)。 功率因数是电力系统的一个重要的技术数据。功率因数是衡量电气设备效率高低的一个系数。功率因数低,说…...
chatgpt赋能python:Python如何设置输入的SEO
Python如何设置输入的SEO Python是一种高级的编程语言,具有容易上手、可扩展和开源等特点,因此在软件开发过程中得到广泛的应用。然而,如果您想让您的Python项目在搜索引擎上获得更好的排名和流量,您需要考虑如何设置输入的SEO。…...
Spring Cloud Alibaba — Nacos 构建服务注册中心
文章目录 Nacos Server下载启动登录创建命名空间 Nacos Client启动样例Nacos 服务发现配置项 集成 OpenFeign 远程接口调用添加 OpenFeign 依赖开启 EnableFeignClients 注解编写远程服务接口远程接口调用 集成 Sentinel 熔断降级添加 Sentinel 依赖开启 Sentinel 熔断降级编写…...
4.2 Spark SQL数据源 - 基本操作
一、默认数据源 案例演示读取Parquet文件 查看Spark的样例数据文件users.parquet 1、在Spark Shell中演示 启动Spark Shell 查看数据帧内容 查看数据帧模式 对数据帧指定列进行查询,查询结果依然是数据帧,然后通过write成员的save()方法写入HDF…...
事件相关功能磁共振波谱技术(fMRS)
导读 质子磁共振波谱(MRS)是一种非侵入性脑成像技术,用于测量不同神经化学物质的浓度。“单体素”MRS数据通常在几分钟内采集,然后对单个瞬态进行平均,从而测量神经化学物质浓度。然而,这种方法对更快速的神经化学物质的时间动态…...
跨境电商客户服务五步法
互联网技术的革新与升级对商务客服产生了巨大的影响,过去由在线客服与客户直接电联的单一服务形式被全渠道客服系统所替代。在电子商务时代,商家与客户之间的互动变得尤为重要:一方面,卖家通过分析客户喜好及消费趋向来针对性处理…...
hadoop环境配置及HDFS配置
环境与配置 ubuntu 20.04.6 /centos8hadoop 3.3.5 指令有部分不一样但是,配置是相同的 安装步骤 创建一个虚拟机,克隆三个虚拟机,master内存改大一点4G,salve内存1Gj修改主机名和配置静态ip(管理员模式下)) hostnamectl set-hostname node1 # 修改主机名 sudo passwd root …...
HTML中 meta的基本应用
meta 标签的定义 meta 标签是 head 部分的一个辅助性标签,提供关于 HTML 文档的元数据。它并不会显示在页面上,但对于机器是可读的。可用于浏览器(如何显示内容或重新加载页面),搜索引擎(SEO)或…...
docker compose 下 Redis 主备配置
1、准备两台虚拟机或者物理机 node1 IP:192.168.123.78 node2 IP:192.168.123.82 2、安装docker和docker compose 3、安装node1,配置docker-compose.yml version: 3services:redis-rs1:container_name: redis_node1image: redis:5.0.3rest…...
Tomcat ServletConfig和ServletContext接口概述
ServletConfig是一个接口,是Servlet规范中的一员 WEB服务器实现了ServletConfig接口,这里指的是Tomcat服务器 一个Servlet对象中有一个ServletConfig对象,Servlet和ServletConfig对象是一对一 ServletConfig对象是Tomcat服务器创建的…...
linux内核open文件流程
打开文件流程 本文基本Linux5.15 当应用层通过open api打开一个文件,内核中究竟如何处理? 本身用来描述内核中对应open 系统调用的处理流程。 数据结构 fdtable 一个进程可以打开很多文件, 内核用fdtable来管理这些文件。 include/linu…...
遗传算法讲解
遗传算法(Genetic Algorithm,GA) 是模拟生物在自然环境中的遗传和进化的过程而形成的自适应全局优化搜索算法。它借用了生物遗传学的观点,通过自然选择、遗传和变异等作用机制,实现各个个体适应性的提高。 基因型 (G…...
PostgreSQL修炼之道之高可用性方案设计(十六)
20 高可用性方案设计(一) 在一个生产系统中,通常都需要用高可用方案来保证系统的不间断运行。本章将详细介绍如何实现PostgreSQL数据库的高可用方案。 20.1 高可用架构基础 通常数据库的高可用方案都是让多个数据库服务器协同工作࿰…...
Bybit面经
缘起 V2EX有广告内推,看描述还挺不错 贴主5 年半工作经验,有两年大厂工作经历,20 年 11 月来到新加坡分公司开始工作 后来是猎头Jeff找的我 0318 主面 主要一个面试官是后端开发金融背景 某条金融线的负责人;其余是交叉面试。面…...
GORM---创建
目录 模型定义使用Create创建记录一次性创建多条数据批量插入数据时开启事务默认值问题 模型定义 定义一个PersonInfo结构体。 type PersonInfo struct {Id uint64 gorm:"column:id;primary_key;NOT NULL" json:"id"UserName string gorm:"co…...
高级查询 — 分组汇总
关于分组汇总 1.概述 将查询结果按某一列或者多列的值分组。 group by子句 分组后聚合函数将作用于每一个组,即每一组都有一个函数值。 语法 select 字段列表 from 表名 where 筛选条件 group by 分组的字段;select 字段列表 from 表名 group by 分组的字段 hav…...
【多线程】阻塞队列
1. 认识阻塞队列和消息队列 阻塞队列也是一个队列,也是一个特殊的队列,也遵守先进先出的原则,但是带有特殊的功能。 如果阻塞队列为空,执行出队列操作,就会阻塞等待,阻塞到另一个线程往阻塞队列中添加元素(…...
python2升级python3
查看当前版本 [roottest-01 node-v18.16.0]# python -V Python 2.7.5 安装依赖 [roottest-01 node-v18.16.0]# yum install -y gcc gcc-c zlib zlib-devel readline-devel 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合
无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...
