当前位置: 首页 > 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…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...

TJCTF 2025

还以为是天津的。这个比较容易&#xff0c;虽然绕了点弯&#xff0c;可还是把CP AK了&#xff0c;不过我会的别人也会&#xff0c;还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

Java多线程实现之Runnable接口深度解析

Java多线程实现之Runnable接口深度解析 一、Runnable接口概述1.1 接口定义1.2 与Thread类的关系1.3 使用Runnable接口的优势 二、Runnable接口的基本实现方式2.1 传统方式实现Runnable接口2.2 使用匿名内部类实现Runnable接口2.3 使用Lambda表达式实现Runnable接口 三、Runnabl…...