Python数据分析可视化之NumPy的使用

NumPy(Numerical Python)是用Python编写的科学计算库,用来存储大型矩阵和执行大型矩阵的科学计算,在数据处理特别是科学计算方法具有独特优势,它包含:

  • 一个强大的N维数组对象ndarray
  • 丰富的广播功能函数
  • 整合C/C++/Fortran代码的工具
  • 线性代数、博立叶变换、随机数生成等功能

一、数据获取

要分析某地区的空气 质量状况,首先要取得该地区空气质量的历史数据

1、通过网络爬虫获取

按需编写

2、直接从网站下载

二、数据预处理

1、读取数据

NumPy提供的loadtxt()函数,能够快速地实现文本数据的读取:

 import numpy as npdata = np.loadtxt(fname="数据集/aqi.csv",delimiter=",",skiprows=1,dtype=float)
  • 首先导入NumPy库(简称np),通过NumPy的loadtxt函数读取csv文件。

loadtxt()函数常用参数

参数含义例子
fname加载的文件路径fname="../data/aqi.csv";读取上级目录data下的aqi.csv文件
delimiter数据之间的间隔符delimiter=",";数据集之间以逗号分离
skiprows忽略数据的位置skiprows=1;忽略第一行(第一行为标题,不需要读取
dtype数据类型dtype=float;设置数据类型为float
  • 查看data中的数据:

 print(data)
  • 查看data的属性

 print(data.shape)   # 数组的维度 (1236, 11)print(data.size)    # 数组中元素总个数 13596

2、合并多个数据

2.1、垂直合并

 data1 = np.loadtxt("数据集/aqi_2017.csv",delimiter=",",skiprows=1,dtype=float)data2 = np.loadtxt("数据集/aqi_2018.csv",delimiter=",",skiprows=1,dtype=float)data3 = np.vstack((data1,data2))    # 按行合并两个文件

通过vstack()函数实现垂直合并数据功能。需要注意的是,在合并的文件中,字段的顺序和数量要保持一致

2.2、水平合并

 data4 = np.loadtxt("数据集/aqi_1.csv",delimiter=",",skiprows=1,dtype=float)data5 = np.loadtxt("数据集/aqi_2.csv",delimiter=",",skiprows=1,dtype=float)data6 = np.hstack((data4,data5))

通过hstack()函数实现水平合并数据功能。注意:在合并的文件中,数据的数量和顺序要一样

2.3、其它方法

在NumPy中,除了上述两种方法外,还可以使用row_stack()column_stack()函数实现同样的功能。另外还可以使用concatenate()函数来实现垂直合并和水平合并功能:

 np.concatenate((data1,data2),axis=0)    # axis=0表示垂直合并np.concatenate((data4,data5),axis=1)    # axis=0表示水平合并

NumPy的dstack()方法可以实现深度合并:

 r = np.array([[1,2,3],[4,5,6],[7,8,9]])g = np.array([[10,11,12],[13,14,15],[16,17,18]])b = np.array([[20,30,40],[50,60,70],[80,90,100]])color = np.dstack((r,g,b))​# 结果为:# [[[  1  10  20]#   [  2  11  30]#   [  3  12  40]]# #  [[  4  13  50]#   [  5  14  60]#   [  6  15  70]]# #  [[  7  16  80]#   [  8  17  90]#   [  9  18 100]]]# 可知,dstack方法将r,g,b中对应位置上的数合并起来,生成三位数组

3、ndarray数据结构

NumPy的多维数组对象:ndarray。类似于Python的列表。只能存储单一数据类型

参数含义
np.array(x,dtype)将x转换为ndarray对象
np.ones(shape,dtype)生成一个维度为shape、值全为1的ndarray对象
np.zeros(shape,dtype)生成一个维度为shape、值全为0的ndarray对象
np.empty(shape,dtype)生成一个维度为shape、未初始化的ndarray对象
np.eye(N)生成一个N*N的单位矩阵(对角线元素为1,其余元素为0)

4、去除冗余数据

4.1、去除无用数据

delete()函数可以删除任意行或列的数据

 data = np.delete(data,0,axis=1) # 删除第一列数据​# 如果要一次性删除多列,比如删除前三列数据:data = np.delete(data,[0,1,2],axis=1)

4.2、去除重复数据

unique()函数可以删除重复的数据

data = np.unique(data,axis=0) # 按行删除重复数据
data = np.unique(data,axis=1) # 按列删除重复数据

5、数据持久化存储

5.1、保存为文本文件

savetxt()方法可以将数据保存为文本文件:

np.savetxt("aqi2.csv",data,fmt="%.2f",newline='\n')

5.2、保存为二进制文件

save()函数以二进制格式保存数据,load()方法从二进制文件中读取数据:

np.save("aqi",data) # 保存数据
data = np.load("aqi.npy") # 读取数据

三、科学计算

1、获取任意范围样本数据

5.1、索引的使用

  • 使用索引可以定位到行或列
  • 索引的值可以从0开始
  • 索引的值也可以从-1开始
  • 使用逗号分割行和列
# 获取第1行数据:
data[0] 	# 方式1:使用索引,自上而下
data[-8]	# 方式2:使用索引,自下而上# 获取第2-4行数据:
data9[[1,2,3]] # 将所有要获取的行索引存放到列表中# 获取第3行第4列的数据:
data[2,3]	# 使用逗号分隔行和列,逗号左边代表行索引,右边代表列索引

5.2、切片的使用

  • 使用切片抽取行或列中某个范围的数据
  • 切片的起止位置用冒号分隔开
  • 将索引和切片结合起来使用,可以截取任意范围的数据
# 获取前3行数据
data[0:3,:]	# 方法1
data[:3,:]	# 方法2
data[:3,]	# 方法3# 获取第2-4行中第3-5列数据
data[1:4,3:5]	# 注意行和列的终止索引分别是4和5# 获取第2-5列数据:
data[:,1:5]	# 注意逗号左边的冒号不可以省略# 获取最后3列数据
data[:,-3:]	# 注意data[:,-3:-1]的写法是错误的

2、计算特征的最小值、最大值和平均值

ndarray常用计算函数

计算方法说明
ndarray.mean(axis)求平均值
ndarray.sum(axis)求和
ndarray.cumsum(axis)累加
ndarray.sumprod(axis)累成
ndarray.std(axis)求标准差
ndarray.var(axis)求方差
ndarray.max(axis)求最大值
ndarray.min(axis)求最小值

例子:

# 计算数据集中data中AQI的平均值、最大值和最小值
data[:,-1].mean(axis=0)	# AQI的平均值
data[:,-1].max(axis=0)	# AQI的最大值
data[:,-1].min(axis=0)	# AQI的最小值# 分别计算NO2、CO和O3的最小值
data[:,-4:-1].min(axis=0)# ndarray数组还可以与标量进行运算:
data1 = [[1,2,3],[4,5,6]]
data2 = np.array(data1)
data2 = data2*2 + 1# 将数组中所有的数都变为原来的一半
data1 = [[1,2,3],[4,5,6]]
data2 = np.array(data1)
data2 = data2/2

3、统计

where()函数能得到符合条件的数据的索引

# 首先统计空气质量等级为优的天数
t=np.where(data[:,-1]<35)	# 得到所有符合条件的索引
print(t)
style1=len(t[0]) # 得到索引的数量# 统计空气质量等级为良的天数
t=np.where((data[:,-1]>=35) & (data[:,-1]<75)) # 使用&分隔多个筛选条件
style2=len(t[0])# 统计空气质量等级为差的天数
t=len(np.where(data[:,-1]>=75)[0])

4、预测空气质量

4.1、矩阵乘法原则

已知矩阵A和矩阵B,AB表示两个矩阵相乘,计算方法是将矩阵A中的每一行分别与矩阵B中每一列对应的元素相乘再相加

矩阵A的列数必须等于矩阵B的行数

4.2、NumPy矩阵乘法

dot(A,B)函数可以实现矩阵A和矩阵B的乘法运算:

import numpy as np
data = np.loadtxt("数据集/aqi_new.csv",delimiter=",",skiprows=1,dtype=float)
A = data[:,3:-1]    # 提取特征
B = [1.4,0.2,-0.05,-0.01,2.4,0.1] # 参数
B = np.array(B) # 转换为ndarray对象
B = B.reshape(6,1)  # 转换为6行1列
result = np.dot(A,B)    # 矩阵乘法
print(result)

四、总结

数据分析流程和实现函数:

流程具体任务实现函数
项目需求分析项目介绍,项目流程和项目目标
环境搭建AnacondaPycharm的介绍和安装
数据获取获取项目需要的数据集方法1:通过网络爬虫从网络中获取。方法2:直接从提供数据的网站下载
数据预处理读取数据np.loadtxt():读取文本文件。np.load():读取二进制文件
合并多个数据np.vstack():按行合并。np.hstack():按列合并
去除冗余数据np.delete()
数据持久化存储np.savetxt():存储为文本形式。np.save():存储为二进制形式
科学计算与统计获取任意范围的样本数据索引和切片
计算特征的最小值、最大值和平均值ndarray.min()ndarray.max()ndarray.mean()
统计不同空气质量等级的数量np.where()
计算空气质量np.dot()

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

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

相关文章

MySQL高级(索引语法、创建索引、查看索引、删除索引)

创建索引 create [unique | fulltext] index index_name on table_name (index_col_name,...); 查看索引 show index from table_name; 删除索引 drop index index_name on table_name; 案例演示&#xff1a; 先来创建一张表 tb_user&#xff0c;并且查询测试数据。 cre…

男女恋爱话术聊天对话回复矩阵版h5微信抖音QQ快手小程序app开发

男女恋爱话术聊天对话回复矩阵版h5微信抖音QQ快手小程序app开发 支持SAAS、支持独立加密、支持独立开源、价格不同。 买就送28W话术数据库 聊天神器 支持16种Al语气、男女版切换、矩阵运营、送后端转化渠道 支持微信公众号微信小程序抖音快手小程序可打包APP 这是一款什么软…

java开发的4套智慧系统源码 智慧校园系统源码 智慧工地系统源码 智慧城管系统源码

4套java智慧系统源码 智慧校园系统源码 智慧工地系统源码 智慧城管系统源码 3D 智能导诊系统源码 Java智慧校园系统源码 智慧学校源码 微信小程序电子班牌 智慧校园系统简介&#xff1a; 智慧校园的建设逐渐被师生、家长认可接受&#xff0c;智慧校园通过对在校师生、教务等…

MySQL学习笔记(数据类型, DDL, DML, DQL, DCL)

Learning note 1、前言2、数据类型2.1、数值类型2.2、字符串类型2.3、日期类型 3、DDL总览数据库/表切换数据库查看表内容创建数据库/表删除数据库/表添加字段删除字段表的重命名修改字段名&#xff08;以及对应的数据类型&#xff09; 4、DML往字段里写入具体内容修改字段内容…

【蓝桥杯第九场小白赛】(部分)

最近写的零零散散的&#xff0c;感觉这两天遇到的题对于短时间提升意义已经不大了&#xff0c;还是做简单题保持手感吧哎 盖印章 #include <iostream> using namespace std; using LLlong long; int main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);LL n,m…

MySQL学习笔记2——基础操作

基础操作 一、增删改查1、添加数据2、删除数据3、修改数据4、查询语句 二、主键三、外键和连接1、外键2、连接 一、增删改查 1、添加数据 INSERT INTO 表名[(字段名[,字段名]…)] VALUES (值的列表); --[]表示里面的内容可选添加数据分为插入数据记录和插入查询结果 插入数据…

Patreon是什么?如何用虚拟卡订阅Patreon上的艺术家?详细教程

Patreon是什么&#xff1f; Patreon 是目前世界上最受欢迎的会员平台之一。 它在过去几年中引起了不小的轰动&#xff0c;目前被全球的内容创作者所使用。 内容创作者和艺术家通常很难让粉丝在经济上支持他们。 通过使用像 Patreon 这样的平台&#xff0c;创作者和艺术家可以…

arcgis使用面shp文件裁剪线shp文件报错

水系数据裁剪&#xff0c;输出为空&#xff1a; ArcGIS必会的几个工具的应用 --提取、分割、融合、裁剪&#xff08;矢&#xff09;、合并、追加、镶嵌、裁剪&#xff08;栅&#xff09;、重采样_arcgis分割-CSDN博客 下面的方法都不行&#xff1a; ArcGIS Clip&#xff08;裁…

Linux 安装系统可视化监控工具 Netdata

目录 About 监控工具 NetdataLinux 系统安装 Netdata关于 openEuler1、查看内核信息2、查看主机信息3、查看 dnf 包管理器的版本 Netdata 安装1、更新系统环境相关 rpm 包2、查看 netdata 包信息3、安装 netdata 包4、编辑 netdata.conf 配置5、启动 netdata 服务6、查看 netda…

每日一题 第八十七期 洛谷 [蓝桥杯 2018 省 AB] 全球变暖

[蓝桥杯 2018 省 AB] 全球变暖 题目描述 你有一张某海域 N N N \times N NN 像素的照片&#xff0c;. 表示海洋、 # 表示陆地&#xff0c;如下所示&#xff1a; ....... .##.... .##.... ....##. ..####. ...###. .......其中 “上下左右” 四个方向上连在一起的一片陆地组…

liunx环境变量学习总结

环境变量 在操作系统中&#xff0c;环境变量是一种特殊的变量&#xff0c;它们为运行的进程提供全局配置信息和系统环境设定。本文将介绍如何自定义、删除环境变量&#xff0c;特别是对重要环境变量PATH的管理和定制&#xff0c;以及与环境变量相关的函数使用。 自定义环境变…

李廉洋:4.9黄金屡创新高。黄金原油晚间最新分析建议。

但当下不管是战争因素所带来的避险情绪影响还是美国降息与否所带来的经济影响都无疑还是支撑着黄金继续走高&#xff0c;那么接下来&#xff0c;只要市场不出现较大的利空影响&#xff0c;黄金都不会有较大的回调力度&#xff0c;所以我们当下不管是短线还是长线仍旧以继续看多…

基于SSM+Jsp+Mysql的物流管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

到底有什么是 Node.js 无法实现的?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它使得 JavaScript 能够脱离浏览器在服务器端运行。Node.js 以其非阻塞 I/O 和事件驱动的特性而广受欢迎&#xff0c;尤其在构建快速、可伸缩的网络应用方面表现出色。然而&#xff0c;尽管 Node.js 非常强…

定制一套ERP系统怎么样?大概要多少钱?

定制一套ERP系统怎么样&#xff1f;大概要多少钱&#xff1f;这篇内容3000字&#xff0c;纯手打。全部都是我们9年来沉淀的实际经验。 作为有9年系统定制开发经验的乙方厂商&#xff0c;定制ERP系统可以粗略划分为3个方向&#xff1a; ERP管理系统模板&#xff0c;可直接查看和…

Linux学习-环境变量和可执行属性

Linux学习-环境变量和可执行属性 文件的可执行属性和环境变量 Linux下文件有一个特殊的属性即可执行属性&#xff0c;用来指示这个文件是一个可执行的脚本或可以运行的二进制文件。前面所提到的这些命令&#xff0c;都具有可执行属性。 which: 表示查看命令的路径。一般用于…

MySQL中数据库、表的操作

文章目录 一、管理数据库1.1、连接数据库1.2、创建库1.3、选择数据库1.4、修改数据库名称1.5、查看数据库信息1.6、删除库 二、定义数据表字段2.1、数据表字段的数据类型2.2、数据表字段属性2.3、约束讲解2.3.1、约束的定义1&#xff09;为什么需要约束2&#xff09;什么是约束…

Matplotlib实现数据可视化

Matplotlib是Python中应用较为广泛的绘图工具之一&#xff0c;首次发布于2007年。它在函数设计上参考了MATLAB&#xff0c;因此名字以"Mat"开头&#xff0c;中间的"plot"代表绘图功能&#xff0c;结尾的"lib"表示它是一个集合。Matplotlib支持众…

Unity多线程简单示例

using UnityEngine; using System.Threading;public class texxxst : MonoBehaviour {Thread thread;void Start(){// 创建一个新的线程&#xff0c;并传入要执行的方法thread new Thread(new ThreadStart(DoWork));// 启动线程thread.Start();}void DoWork(){for (int i 0; …