数据预处理-数据清洗之numpy创建及属性

2023-05-16

什么是数据预处理?

数据预处理(data preprocessing)是指在主要的处理以前对数据进行的一些处理。一般我们得到的数据会存在有缺失值、重复值等,在使用之前需要进行数据预处理。它是一系列对数据操作的统称。

为什么要进行数据预处理?

现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量产生了数据预处理技术。  
数据预处理有多种方法:

  1. 数据清洗:可以用来清楚数据中的噪声,纠正不一致。
  2. 数据集成:将数据由多个数据源合并成一个一致的数据存储,如数据仓库。
  3. 数据归约:可以通过如聚集、删除冗余特征或聚类来降低数据的规模。
  4. 数据变换:(例如,规范化)可以用来把数据压缩到较小的区间,如0.0到1.0。

这些数据处理技术在数据挖掘之前使用,大大提高了数据挖掘模式的质量,降低挖掘所需要的时间。
本章总结在学习数据清洗–使用numpy包的相关内容

数据清洗–numpy包的使用

创建数组

使用了四种创建数组的方法

  1. 使用np.array()生成NDarray
  2. 使用随机数函数生成array
  3. 使用arange函数创建array
  4. 创建特殊数组函数
    np.zeros() #全0数组
    np.ones() #全1数组
    np.full() #全n数组
    np.linspace() #线性序列数组(元素之间等差)
    np.eye() #单位矩阵数组
    np.diag() #对角矩阵数组
#导入numpy包

import numpy as np

'''
使用np.array()生成NDarray
'''
arr1=np.array([1,3.14,-5,2,6.2,0],ndmin=1) #ndmin控制维数

#print(arr1)

arr2=np.array([[5,6,7,8,9],[4,3,2,1,0]])

#print(arr2)

'''
使用随机数函数生成array
'''

arr4=np.random.randint(10,size=(4,2)) #size指定形状4行2列

#print(arr4)

arr5=np.random.rand(2,3,4) #2,3,4 维度,轴。从0-1的均匀分布

#print(arr5)

arr6=np.random.uniform(size=(2,3))

#print(arr6)

arr7=np.random.uniform(1,10,size=(2,3)) #uniform默认0-1均匀分布,可以赋值通过参数控制随机生成范围

#print(arr7)

arr8=np.random.random((2,3))#随机生成[0,1)的浮点数 服从均匀分布。参数为元组

#print(arr8)

arr9=np.random.randn(2,3) #在维度上有多少元素,服从正态分布

#print(arr9)

'''
使用arange函数创建array
'''
arr10=np.arange(1,10,2)#起始值,终止值,步长。生成的默认是一维数组,如果想要生成多维,需要借助 .reshape((3,4))

#print(arr10)

arr11=np.arange(12).reshape((3,4))

#print(arr11)

'''
创建特殊数组函数
np.zeros()    #全0数组
np.ones()     #全1数组
np.full()     #全n数组
np.linspace() #线性序列数组(元素之间等差)
np.eye()      #单位矩阵数组
np.diag()     #对角矩阵数组
'''

arr12=np.zeros(5) #填一个整数或元组

arr13=np.zeros((3,3),dtype=int) #可以用dtype改变数据类型

#print(arr13)

#ones和zeros使用方法一致

arr14=np.full((3,5),4) #shape 表示维数,一个整数或元组, 一个n值,全n数组。 也可以指定类型

#print(arr14)

arr15=np.linspace(1,10)#start,stop,num=50, retstep=False (不显示步长) 默认生成50个,包括终止值
#注意:.reshape()不能和restep同时使用

#print(arr15)

arr16=np.eye(3,4,1) #n 行 m 列  k 对角线偏移,>0向右上偏移,<0向左偏移

#print(arr16)

#对角和单位类似

'''
总结:指定数组内元素都是什么,指定形状是什么样的。
'''

查看数组的相关属性

#导入包
import numpy as np

'''
数组属性介绍
ndarray.shape 返回一个包含数组维度的元组
ndarray.dtype 返回数组元素的类型
ndarray.ndim 返回数组的维数
ndarray.size 返回数组中包含元素的个数
'''

np.random.seed(123)

arr8 = np.random.randn(6) # 一维数组

arr9 = np.random.randint(10, size=(2, 3)) # 二维数组

arr10 = np.random.randint(10, size=(2,3,4)) # 三维数组

print(arr8)
print(arr9)
print(arr10)

#查看数组的形状
print(arr8.shape)
print(arr9.shape)
print(arr10.shape)

#查看维度
print(arr8.ndim)
print(arr9.ndim)
print(arr10.ndim)


#查看数组中元素的类型
print(arr8.dtype)
print(arr9.dtype)
print(arr10.dtype)


#查看元素个数
print(arr8.size)
print(arr9.size)
print(arr10.size)

'''
numpy的矢量化功能
更简便的处理两个数组间元素的运算
原生的python列表做加法会拼接两个列表,想要实现元素的运算需要用循环。
'''
#原生的python列表
a=[1,2,3]
b=[4,5,6]
print(a+b)
c=[]
for i in range(len(a)):
    c.append(a[i]+b[i])
print(c)

#numpy的array

arr1=np.array(a)
arr2=np.array(b)
print(arr1+arr2)

'''
优点:
简洁,易理解
代码越少,出错越低
执行效果更好,效率更高。numpy代码用C 比python效率更高
'''

数组的变换操作

#导入包
import numpy as np

'''
ndarray的各种变换操作
数组的维度变换    数组的类型变换   数组内元素类型变换
ndarray.reshape  ndarray.tolist  ndarray.astype
ndarray.resize
'''
arr=np.random.randint(1,100,(2,2))
print(arr)

#数组的维度变换
print(arr.reshape((4,1))) #参数为一个元组
#注意:数量不会变,不能改成(4,2)的数组
arr1=np.arange(1,10).reshape((3,3))
print(arr1)
arr2=np.linspace(1,10,12).reshape((3,4))
print(arr2)
#arange,linspace 只能定义一维可以借助reshape改变维度

arr.resize((1,4))
print(arr)
#注意:reshape不会改变原数组,如需要保留更改后结果,重新赋值变量。
#resize直接更改原数组,谨慎使用。

#数组的类型变换
print(arr.tolist())
list(arr)
#注意:想转列表使用tolist,想把列表转数组使用np.array(list)

#数组内元素类型变换
print(arr.dtype)
print(arr.astype(str))
print(arr.dtype)
#和reshape一样,不会更改原数组。

数组的广播

如果满足以下条件之一,那么数组被称为可广播的。

  • 如果数组不具有相同的秩,则将较低等级数组的形状维度添加1,直到两个形状具有相同的大小.
  • 其中一个数组的维度大小和元素个数为1,相当于对单个标量进行广播
  • 在一个数组的大小为1且另一个数组的大小大于1的任何维度中,第一个数组的行为就像沿着该维
    度复制一样

明显上面说的都不像我能懂的人话
所以给一张图做解释:
广播示意图

#导入包
import numpy as np
'''
广播功能
如果满足以下条件之一,那么数组被称为可广播的。
如果数组不具有相同的秩,则将较低等级数组的形状维度添加1,直到两个形状具有相同的大小.
其中一个数组的维度大小和元素个数为1,相当于对单个标量进行广播
在一个数组的大小为1且另一个数组的大小大于1的任何维度中,第一个数组的行为就像沿着该维
度复制一样
'''
#第一张图
arr=np.arange(3)
print(arr)
arr=np.arange(3)+5 #arr([0,1,2])+arr([5,5,5]) 
print(arr)
#第二张图
arr1=np.ones((3,3))
print(arr1)
arr2=np.ones((3,3))+np.arange(3)
print(arr2)
#第三张图
arr3=np.arange(3)
print(arr3)
arr4=np.arange(3).reshape((3,1))
print(arr4)
arr5=arr3+arr4
print(arr5)
'''
1.如果运算双方都是数组,形状不一致,一个数组经过向一个方向广播后,可以得到和另一个数组一样的形状,广播可行
2.如果运算双方都是数组,形状不一致,分别向各自一个方向广播,广播后得两个数组形状相同,广播可行
3.如果运算双方,一个是数组,一个是标量,不受广播方向约束,标量可以向两个方向广播
不满足条件的数组无法进行广播操作
'''

以上就是第一天学习数据清洗的相关内容,如果有疏漏希望大佬指正,蒟蒻会认真改进。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据预处理-数据清洗之numpy创建及属性 的相关文章

随机推荐

  • 基于容器训练OpenPCdet

    基于容器训练OpenPCdet 1 先拉取一个运行的镜像 docker pull djiajun1206 pcdet pytorch1 6 2 基于镜像创建一个容器 nvidia docker run it name pcdet privi
  • 【CUDA入门笔记】概述

    1 xff0c CUDA架构 xff08 1 xff09 一个GPU包含多个多核处理器 xff1b xff08 2 xff09 一个多核处理器包含多个线程处理器 xff08 3 xff09 线程处理器是最基本的计算单元 xff0c 有自己的
  • 【CUDA入门笔记】CUDA内核与线程配置

    1 CUDA核函数 在GPU上调用的函数成为CUDA核函数 Kernel function xff0c 核函数会被GPU上的多个线程执行 每个线程都会执行核函数里的代码 xff0c 当然由于线程编号的不同 xff0c 执行的代码路径可能会有
  • 【CUDA入门笔记】GPU存储结构模型(1)

    GPU存储结构模型 1 CPU可以读写GPU设备中的Global Memory Constant Memory以及Texture Memory内存储的内容 xff1b 主机代码可以把数据传输到设备上 xff0c 也可以从设备中读取数据 xf
  • 【CUDA入门笔记】GPU存储结构模型(2)

    GPU存储结构模型 1 CPU可以读写GPU设备中的Global Memory Constant Memory以及Texture Memory内存储的内容 xff1b 主机代码可以把数据传输到设备上 xff0c 也可以从设备中读取数据 xf
  • 基于多二维码识别的无人机运动真值获取

    基于多二维码识别的三维运动真值获取 1 背景介绍2 原理2 1 二维码基础2 2图像预处理2 3 定位标轮廓提取2 4 多二维码鲁棒识别 3 运行结果3 1对单张图片进行多二维码识别3 2 获取一系列静止图片的轨迹3 3 相机做圆周运动的轨
  • c++实现简单http服务器

    http基于tcp协议的应用层协议 xff0c 说白了就是写死的自定义协议 xff0c 代码实现了简单的get请求 xff0c 打开服务后 xff0c 可以通过网站访问本地资源 xff0c 适合新手学习的简单代码 xff0c 有助于理解ge
  • 基于NRF24L01的CAN数据透传

    闲谈 xff1a 闲来无聊 xff0c 恰好公司又经常用CAN数据的传输 xff0c 自己觉得要是用无线传送多好 xff0c 然后 xff0c 就是一个奇想 xff0c 就想做一个无线数据的透传 xff0c 恰好身边又有NRF24L01 那
  • 倾斜补偿的电子罗盘(1):地磁场,磁传感器,倾斜补偿

    倾斜补偿的电子罗盘 1 xff1a 地磁场 xff0c 磁传感器 xff0c 倾斜补偿 地磁场和磁传感器 地磁场可以用于获取方位信息 以北半球为例 xff0c 地磁场方向不是与地面水平 xff0c 而是与水平方向有一定的倾角 xff08 指
  • vscode常用插件

    vscode常用插件 1 Markdown All In One 在所有拓展插件中 xff0c 这个插件基础功能最全 xff0c 快捷键多 xff0c 方便使用 2 Markdown Toc 这个插件是用来生成目录 xff0c 这个插件我用
  • typescript中使用字典Dictionary

    key为string value为number var map key string number 61 34 t 34 3 34 o 34 5 34 g 34 10 for let k in map egret log map k
  • Qt Design Studio社区版安装与使用

    Qt Design Studio社区版免费下载 由于登录官网不能下载 xff0c 找到镜像网站进行下载 xff1a 基于msvc 2019 64位 xff1a http iso mirrors ustc edu cn qtproject o
  • vscode用conda配置Python虚拟环境

    1 到官网下载Anaconda2 下载vscode中Python插件3 以管理员身份运行vscode4 利用conda创建python虚拟环境5 在vscode中配置Setting json添加Python路径6 最后检验运行Python项
  • 阿里云搭建ftp服务器+FileZilla客户端查看文件

    文章目录 1 阿里云搭建ftp服务器1 1 安装ftp服务器1 2 设置阿里云ECS的安全组 2 FileZilla客户端查看文件 1 阿里云搭建ftp服务器 1 1 安装ftp服务器 1 安装vsftp xff0c sudo span c
  • QtCreator+windows崩溃定位分析

    文章目录 一 Qt程序Release版本记录崩溃信息 xff0c 并定位问题代码1 Release版本程序中生成pdb调试信息文件2 添加代码将程序崩溃时的堆栈保存为crash dmp文件3 使用 WinDbg 分析crash dmp文件
  • Qt项目入门

    一个简单的项目 该项目涉及tcp服务端客户端通信 xff0c 数据库操作 xff0c Log4Qt日志打印 xff0c 不过是关于工业与上位机的一个简单项目处理 xff0c 过程不一定容易理解 xff0c 附上通讯协议 Qt5 12 Min
  • delete this注意事项

    参考资料 在类中调用delete this问题
  • c++较常用的库函数

    不知道原创是谁 xff0c 转载自 xff1a https blog csdn net laozhuxinlu article details 51878947 C 43 43 常用库函数 如图1所示 xff0c 常用数学函数 头文件 in
  • 学习c++的50个网站

    原 xff1a http blog chinaunix net uid 20548989 id 2979724 html 大家都说学Java好找工作 xff0c 可是Java我都遗忘好久了 xff0c 大一大二荒废了 xff0c 没好好练编
  • 数据预处理-数据清洗之numpy创建及属性

    什么是数据预处理 xff1f 数据预处理 xff08 data preprocessing xff09 是指在主要的处理以前对数据进行的一些处理 一般我们得到的数据会存在有缺失值 重复值等 xff0c 在使用之前需要进行数据预处理 它是一系