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

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服务器创建的&#xf…...

linux内核open文件流程

打开文件流程 本文基本Linux5.15 当应用层通过open api打开一个文件,内核中究竟如何处理? 本身用来描述内核中对应open 系统调用的处理流程。 数据结构 fdtable 一个进程可以打开很多文件, 内核用fdtable来管理这些文件。 include/linu…...

遗传算法讲解

遗传算法(Genetic Algorithm,GA) 是模拟生物在自然环境中的遗传和进化的过程而形成的自适应全局优化搜索算法。它借用了生物遗传学的观点,通过自然选择、遗传和变异等作用机制,实现各个个体适应性的提高。 基因型 (G…...

PostgreSQL修炼之道之高可用性方案设计(十六)

20 高可用性方案设计(一) 在一个生产系统中,通常都需要用高可用方案来保证系统的不间断运行。本章将详细介绍如何实现PostgreSQL数据库的高可用方案。 20.1 高可用架构基础 通常数据库的高可用方案都是让多个数据库服务器协同工作&#xff0…...

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…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

如何为服务器生成TLS证书

TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

边缘计算网关提升水产养殖尾水处理的远程运维效率

一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...