numpy之数据清洗功能

numpy之数据清洗功能
  1. numpy的简介
  1. numpy的数组
  1. numpy的属性
  1. numpy的变换
  1. numpy的合并切割
  1. numpy的广播功能
  1. numpy的统计函数
  1. numpy的字符串函数
  1. numpy的排序函数
  1. numpy的矩阵函数
  1. numpy的线代模块

1. Numpy的简介

1.1Numpy的简介

NumPy 是 Numerical Python 的简称,是高性能计算和数据分析的基础包。包含了多维数组以及多维数组的操作。
Numpy相比于 Python 内建的库和数据类型有以下特性:
1.强大、灵活的多维数组对象及丰富的操作
2.C 实现,执行效率高
3.线性代数、傅里叶变换、丰富的随机数功能
4.复杂的(广播)功能
5.NumPy 通常与 SciPy (Scientific Python) 和 Matplotlib(绘图库)一起使用。这种组合广泛用于替代MatLab,是一个流行的技术计算平台。Python + Numpy 作为 MatLab 的替代方案,如今被视为一种更加现代和完整的编程语言。

1.2Numpy-Ndarray对象

Numpy 的核心是 ndarray 对象,这个对象封装了同质数据类型的n维数组。(数组,即为有序的元素序列)
ndarray 是 n-dimension-array 的简写。
基本的 ndarray 可以使用 NumPy 中的数组函数创建的,如下所示:
array(object, dtype=None, copy=True, order=‘K’, subok=False, ndmin=0)
np.array 可以把 list,tuple 或者其他的序列模式的数据转创建为 ndarray,默认创建一个新的 ndarray。

一维数组
list1 = [1, 2, 3, 3]
array1 = np.array(list1)
out
array([1, 2, 3, 3])二维数组
list2 = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
np.array(list2)
out
array([[1, 2, 3],[1, 2, 3],[1, 2, 3]])

1.3Numpy的ndarray 与 python原生的list有什么区别

int整型—>float浮点型转换全部变成float。
int整型—>str字符串型全部变成string。
当只涉及 int float str的时候,其转换方向如下:
int–>float–>str
然而当我们ndarray中的元素包含序列数据,比如列表 元组时就不会转换。

list3 = [1, 2, 3, 4.5, 'abc', [1, 2]]
a = np.array(list3)
a
out
array([1, 2, 3, 4.5, 'abc',  list([1, 2])], dtype=object)

ndarray对象里面的数据类型就是所有类的父类的实例类型object, 当然具体的看是什么类型就是什么类型,这就是面向对象里面的多态。

1.4Numpy的其他函数

查看数据类型ndarray.dtype
a = np.array([ 1, 2, 3])
a.dtype
out
dtype('int32')数据类型的转换ndarray.astype
b = np.array([1, 2, 3, 4])
b.astype('int64')
out
array([1, 2, 3, 4], dtype=int64)

2. Numpy的数组

2.1常用的数组

(1)全0的数组np.zeros()
np.nzeros(shape, dtype=float, order=‘C’)

(2)全1的数组np.ones()
np.ones(shape, dtype=float64, order=‘C’)

(3)全为相同值的数组np.full()
np.full(shape, fill_value, dtype=None, order=‘C’)

(4)创建单位矩阵 (矩阵是二维数组)np.eye()
从左上角到右下角的对角线(称为主对角线)上的元素均为1,除此以外全都为0。
np.eye(N, M=None, k=0, dtype=<class ‘float’>, order=‘C’)
k: 对角线的偏移,默认是0,即偏移。大于0, 代表往主对角线上方偏移;小于0, 代表往主对角线下方偏移。

(5)初始化一个数组np.empty
np.empty(shape, dtype=float, order=‘C’)

(6)创建对角矩阵np.diag()对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵。
np.diag(v, k=0)
v, 如果是一个一维的序列,则返回以该序列为对角的二维数组如果是一个二维的数组, 则返回该二维数组的对角,
k, 偏移。

(7)设置空值np.nan
nan是一个特殊的值,常常用于表示数据的缺失。

(8)创建随机数组np.random随机生成一些整数。
np.random.randint(low, high, size)

(9)返回满足指定均值和标准差的正太分布的数
np.random.normal(loc=0.0, scale=1.0, size=None)

(10)设置随机数种子np.random.seed()
这个的目的就是让大家以同样一种随机方式,生成的随机数一样,必须和随机代码放在一个代码框里才行接收一个32位的无符号整数(0-2**32),若该数相同,则可随机出相同的数。

(11)创建线性序列的数组np.arange()
np.arange(start, stop, sep]

(12)指定在某个范围内生成指定书目的数
np.linspace(指定在某个范围内生成指定书目的数
np.linspace(start, stop, num=50, endpoint=True,)

3. Numpy的属性

3.1ndarray对象的属性

np.random.seed(3)
x1 = np.random.randint(1,10, size=3) # 一维数组数组的形状ndarray.shape
x1.shape数组的维度ndarray.ndim
x1.ndim查看数组中的元素个数ndarray.size
x1.size查看数组中的元素的数据类型ndarray.dtype
x1.dtype查看数组中每个元素所占的内存字节数ndarray.itemsize
x1.itemsize

4. Numpy的变换

4.1 ndarray对象的方法一维度变换

m = np.random.randint(1, 100,(2, 3, 4))改变数组的形状ndarray.reshape(不改变原数组)
m.reshape(3,8)改变数组的形状ndarray.resize(改变原数组)
m.resize(4,6)返回一个一维数组
n = m.flatten()np.ravel()、flatten()扁平化操作
m.ravel()
a = arange(12).reshape(3,4)
c = a.ravel()
c[1] = 99
print(a)
out
[[ 0 99  2  3][ 4  5  6  7][ 8  9 10 11]]print(c)out[ 0 99  2  3  4  5  6  7  8  9 10 11]
但因为c是a的一种展示方式,虽然他们是不同的对象,但在修改c的时候,a中相应的数也改变了,
在实际应用中应尽量使用flatten()函数,修改c的时候,a中相应的数不发生改变了 。通过reshape改变形状
m.reshape(-1,1) #这种改变的就是原数组的形状而已

4.2 ndarray的索引与切片

和字符串 列表 元祖基本上是一样的
[开始位置, 终止位置, 步长和方向]

一维ndarray的索引与切片
a = np.arange(5,16)
a[0::4]
array([ 5, 9, 13])多维ndarray的索引与切片
a = np.array([[1, 2, 3], [4, 5, 6,], [7, 8, 9]])
a[0][1]
out
2   布尔索引
x = np.arange(12).reshape(4,3)
x[x>5]
out
array([ 6, 7, 8, 9, 10, 11])

5. Numpy的合并切割

5.1 数组的合并

维度必须匹配

a = np.array([[1, 2,3], [7, 8, 9]])
b = np.array([[100, 101, 102], [103, 104, 105]])
c = np.array([[0,0], [0, 0]])np.vstack 沿纵轴拼接
np.vstack((a,b))
out
array([[ 1, 2, 3],[ 7, 8, 9],[100, 101, 102],[103, 104, 105]])np.hstack 沿横轴拼接,增加的是列,行不变
np.hstack((a,b))
out
array([[ 1, 2, 3, 100, 101, 102],[ 7, 8, 9, 103, 104, 105]])指定拼接方向的np.concatenate()参数axis=0默认在纵轴上拼接,axis=1横向拼接
np.concatenate((a,b), axis=0) #axis=0默认在纵轴上拼接
np.concatenate((a,b), axis=1) #axis=1在横轴上拼接

5.1 数组的分割

a = np.arange(1,37).reshape(4,9)np.hsplit 横向进行分割,第二个参数只写一个整数时,会在横向进行平均分割。
b = np.hsplit(a,3)
out
array([[ 1, 2, 3],[10, 11, 12],[19, 20, 21],[28, 29, 30]]),
array([[ 4, 5, 6],[13, 14, 15],[22, 23, 24],[31, 32, 33]]),
array([[ 7, 8, 9],[16, 17, 18],[25, 26, 27],[34, 35, 36]])]
np.hsplit(a,(3,5)) #在第三列和第五列的后面划一刀np.vsplit()横向进行分割
np.vsplit(a,4)
out
[array([[1, 2, 3, 4, 5, 6, 7, 8, 9]]),array([[10, 11, 12, 13, 14, 15, 16, 17, 18]]),array([[19, 20, 21, 22, 23, 24, 25, 26, 27]]),array([[28, 29, 30, 31, 32, 33, 34, 35, 36]])]可指定方向的np.array_split()
np.array_split(a,(1,3),axis=0)#axis=0默认在纵轴上分割
np.array_split(a,(1,3),axis=1)#axis=1在横轴上分割

6. Numpy的广播功能

语广播是指 NumPy 在算术运算期间处理不同形状的数组的能力。对数组的算术运算通常在 相应的元素上进行。如果两个阵列具有完全相同的形状,则这些操作被无缝执行。
如果两个数组的维数不相同,则元素到元素的操作是不可能的。然而,在 NumPy 中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。较小的数组会广播到较大数组的大小,以便使它们的形状可兼容。
必须满足一下规则才能广播:
1 两个数组的维度必须相同。
2 如果维度不同,会在维度少的数组上增加维度,并使得该维度的长度为1。
3 有且仅有一个维度的长度不同,而且该值必须是1。
4 广播会在长度为1的那个维度上进行。
5 如果是标量则会直接作用到数组中的每个元素上。

np.arange(3)+5
out
array([5, 6, 7])a = np.ones((3, 3))
b = np.arange(3)
a+b
out
array([[1., 2., 3.],[1., 2., 3.],[1., 2., 3.]])a = np.arange(3).reshape(3, 1)
b = np.arange(3)
a+b
out
array([[0, 1, 2],[1, 2, 3],[2, 3, 4]])

算术运算的相关函数
用于执行算术运算(如 add() ,subtract() ,multiply() 和 divide() )的输入数组必须具 有相同的形状或符合数组广播规则。

7. Numpy的统计函数

NumPy有很多有用的统计函数,用于从数组中给定的元素中查找最小,最大,百分标准差和方差等。

Numpy 的转置可以按照你的需要对数组的轴进行转换。

arr = np.arange(15).reshape((3, 5))
print(arr.T)
out
[[ 0 5 10][ 1 6 11][ 2 7 12][ 3 8 13][ 4 9 14]]

8. Numpy的字符串函数

加法np.char.add(a, b)字符串的拼接,类似相对于字符串的+运算
乘法np.char.multiply(a, i)字符串的重复, 类似字符串的*运算
计数np.char.count(a, object, 开始位置, 终止位置)
查找np.char.find(a, object, 开始位置, 终止位置)
索引np.char.index(a, object, 开始位置, 终止位置)
分割np.char.split(a, 分割符, 分割次数)
分割np.char.splitlines(a, keepends=None)
分割np.char.partition(a, 分隔符)
合并np.char.join(a, b)
替换np.char.replace(a, 被替换部分, 新的部分, 替换次数)
中心化np.char.center()
大写转小写np.char.lower(a)
小写转大写np.char.upper(a)

9. Numpy的排序函v数

np.sort(a, 要排序的轴)(不指定的时候, 对行进行升序,axis=0代表对列进行升序,axis=0对列进行升序。)
np.argsort(a, 排序的轴)#返回的是数组值从小到大的索引值。
np.lexsort((a, b)

a = [1,5,1,4,3,4,4]
b = [9,4,0,4,0,2,1]
ind = np.lexsort((b1, a1))
ind
out
array([2, 0, 4, 6, 5, 3, 1], dtype=int64)

np.argmax(a, 指定的轴)返回指定轴上最大元素的索引。
np.argmin(a, 指定的轴) 返回指定的轴上最小的索引。
np.nonzero(a) 返回数组中非0元素的索引。
np.where(条件) 返回输入数组中满足给定条件的元素的索引。
np.unique(a) 对数组元素进行去重。

10. Numpy的矩阵函数

NumPy 包包含一个 Matrix 库 numpy.matlib 。此模块的函数返回矩阵而不是返回 ndarray对象。矩阵是一个二维数组

np.matlib.empty(shape)#函数返回一个新的矩阵,且不初始化元素。里面的初始化数据无意义
m = np.matlib.empty((2,2))
type(m)
m
out
numpy.matrix
matrix([[1., 2.],[3., 4.]])np.matlib.zeros(shape)#返回一个全0的矩阵
np.matlib.zeros((3, 4))
out
matrix([[0., 0., 0., 0.],[0., 0., 0., 0.],[0., 0., 0., 0.]])np.matlib.ones(shape)#返回一个全1的矩阵
np.matlib.ones((3, 5))
out
matrix([[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.]])np.matlib.eye(行, 列=行, k偏移)#这个函数返回一个矩阵,对角线元素为 1,其他位置为零。
np.matlib.eye(3) # 列数默认等于行数
out
matrix([[1., 0., 0.],[0., 1., 0.],[0., 0., 1.]])np.matlib.identity(阶数)#函数返回给定大小的单位矩阵。单位矩阵是主对角线元素都为 1 的方阵
np.matlib.identity(3)
out
matrix([[1., 0., 0.],[0., 1., 0.],[0., 0., 1.]])np.matlib.rand(shape)#这个函数以[0, 1)的数组成的二维数组
np.matlib.rand(4)
out
matrix([[0.70354477, 0.10355941, 0.10140223, 0.91209582]])

11. Numpy的线代模块

NumPy 包包含 numpy.linalg 模块,提供线性代数所需的所有功能。

np.matmul(a, b)函数返回两个数组的矩阵乘积
c = np.array([[1,2],[3,4]])
d = np.array([[11,12],[13,14]])
np.matmul(a, b)
out
array([[37, 40],[85, 92]])np.linalg.det(a)求矩阵的行列式,只有方阵才有对应的行列式
b = np.array([[1, 2], [3, 4]])
np.linalg.det(b)
out
-2.0000000000000004np.linalg.solve()该函数给出了矩阵形式的线性方程的解。
A = np.array([[1, 1, 1], [0, 2, 5], [2, 5, -1]])
B = np.array([6, -4, 27])
np.linalg.solve(A, B)
out
array([ 5., 3., -2.])np.linalg.inv(a)返回矩阵的逆矩阵
a = np.array([[1,2],[3,4]])
np.linalg.inv(a)
out
array([[-2. , 1. ],[ 1.5, -0.5]])

Numpy之数据清洗功能相关推荐

  1. Numpy的广播功能

    2019独角兽企业重金招聘Python工程师标准>>> 当我学习logitic函数,想用Python画出曲线.第一个版本这么实现: import numpy as np import ...

  2. numpy.unravel_index 函数功能说明

    函数名:numpy.unravel_index(indices, dims) 功能:返回indices中的元素在维度为dims的数组中的索引值,默认按元组的形式返回. 举例: 1)numpy.unra ...

  3. numpy 排序, 查询功能

    https://docs.scipy.org/doc/numpy/reference/routines.sort.html 转载于:https://www.cnblogs.com/qingyuanju ...

  4. 数据科学必备Pandas、NumPy进行数据清洗方法详解

    作为征战多年数据科学领域的小伙伴都很清楚,获取和清理数据的初始步骤会占据工作的 80%,花费大量时间来清理数据集并归结为可以使用的形式. 因此如果是刚刚踏入这个领域或计划踏入这个领域,重要的是能够处理 ...

  5. 数据清洗常用工具之Numpy

    数据清洗常用工具之Numpy 目前在 Python 中,numpy 和 pandas 是最主流的工具 Numpy 中的向量化运算使得数据处理变得高效 Pandas 提供了大量数据清洗的高效方法 在Py ...

  6. python与机器学习(二)Numpy / Pandas /矩阵相乘速度对比

    NumPy(Numerical Python)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. NumPy的官方文档:https://nump ...

  7. [python]14、五万字详细讲解pandas的所有功能和用法以及安装jupyter

    目录 1.安装jupyter 1.1.启用jupyter 2. pandas介绍 2.1.pip3和pip的区别 2.2.pip或者pip3换源 2.2.1.临时修改 2.2.2.永久修改 2.2.3 ...

  8. 数据爬虫 + 数据清洗 + 数据可视化,完整的项目教程!

    一:数据挖掘 我选用了链家网做数据爬取场所(不得不唠叨一句,这个网站真是为了爬虫而生的,对爬虫特别友好哈哈哈,反扒措施比较少) 比如我们爬取贵阳市乌当区的所有房子的房价及其他信息: 比如我们爬取第一个 ...

  9. Numpy 一维、二维数组、size/dtype/shape属性、数组函数arange/linspace/logspace /diag/zeros/ones/random 、多维数组索引和筛选)

    参考: https://gitbook.cn/gitchat/column/undefined/topic/5e3bceadec8d9033cf924665 打开 IPython ,创建 Python ...

  10. python hstack_Python学习之Numpy速成记——基础篇(中)

    上节课我们一起学习了Numpy的基本功能和它的部分基础知识.今天我们一起接着来学习剩下的部分. 5.一维数组的索引和切片 (1)一维数组的切片操作与Python列表的切片操作很相似.例如,我们可以用下 ...

最新文章

  1. GPP加密破解工具gpp-decrypt
  2. java判断括号是否闭合_【python每日一练】有效括号
  3. python 调用另一个py_跟我自学python 第9章 类(9.4.6 在一个模块中导入另一个模块)...
  4. 利用python进行数据分析第二版pdf百度云_参考《利用Python进行数据分析(第二版)》高清中文PDF+高清英文PDF+源代码...
  5. 解决接收参数乱码,tomcat的URIEncoding=UTF-8
  6. 物联网python教程慕课_物联网小白入门
  7. 供给测结构性改革内容_智能包装结构,提高可测性
  8. 极光实时监听怎么调用_源码分析 Sentinel 实时数据采集实现原理(图文并茂)
  9. 智能硬件创业2周内快速做出产品原型
  10. 计算机机房空调设计规范,计算机机房空调设计规范
  11. C语言实现大小端转换
  12. 华为快应用-怎么使用卡片功能
  13. java zoneid 中国_关于时区:Java 8 Time API – ZonedDateTime – 在解析时指定默认的ZoneId...
  14. 一个机械研究生在计算机与机械之间的徘徊与思考-(下)之填坑
  15. win10 无线鼠标卡顿,跳帧
  16. 华为android加固,app安全加固学习记录
  17. ARMV7-M架构---Part A :Application Level Architecture---A1 Introduction
  18. JavaWeb学习笔记(HTML语言)
  19. 实训计算机硬盘分区的心得体会,计算机实训报告
  20. QML QtLocation地图应用学习-2:实现测距功能

热门文章

  1. 超简单制作栅格数据土地利用转移矩阵(Arcgis和Python实现)
  2. DSP之CCS软件使用一
  3. 整体刚度矩阵matlab,单元刚度矩阵matlab
  4. 高德地图自定义主题地图,盖住中国红色边境线
  5. 计算机职业素养结尾,IT职业素养读后感
  6. 【MMD tools for bleander,Bleander的插件】
  7. symbian的字体包
  8. SnifferProDynamipsGUI环境构建
  9. MapGIS 6.7 数字非标准分幅影像校正方法
  10. java 计算器 junit测试_Java—Junit单元测试