qianshang666 发表于 2021-3-2 23:05

【笔记】python数据分析——numpy初识1

# 数据分析介绍
数据分析是目前人工智能的基础,而数据分析主要就是掌握几个常见的包:numpy,pandas,matploblib,seaborn,pyechart,前两个是主要的包,必须要掌握,后三个则是进行数据可视化的包,掌握其一即可,我后面讲可视化的话主要是围绕matploblib这个包讲解,有兴趣从零基础开始学习的可以跟着笔记一起学习
# numpy使用准备
## numpy包下载
numpy这个包要提前下载一下,下载方式:pip install numpy,如果下载速度慢的话大家可以使用科学上网或者是清华源(清华源方式大家百度即可)
numpy这个包主要就是用于科学计算和举证运算
## numpy导包
使用的时候第一步就是导包嘛,但numpy导包要注意一点
```
import numpy as np
```
普通导包方式就是import numpy,但我们在这里加上了as np,这就相当于给numpy这个包给了一个新的引用名称np,肯定有人好奇,为什么要这样写,因为科学界的人都这样写的,约定俗成嘛,大家也都是这样写的,现在很多的数据分析书里面也是这样介绍的,所以我们也是遵循这个规则
# numpy数组
## 创建numpy数组
首先我们要想一个问题,我们要创建numpy数组肯定要往里面放数据呀,但这个数据我们是用什么样的方式来存储呢,我们必须要用现有的python数据结构出发,python现有的数据结构主要就有列表,元组,字典
- 我们先试试列表
```
data1 =
arr1 = np.array(data1)
print(arr1)
```
打印结果:
我们打印出来之后就不是列表了,变成数组了,因为中间没有逗号了

- 接下来我们创建多维数组看看
```
data2 = [,]
arr2 = np.array(data2)
print(arr2)
```
打印结果:[
]
如果大家自己运行试试的话,我们就会发现他给我们自动分行了,在这里我是手打的,可能不是那么清晰,大家最好是自己运行一下试试,这个它体现的方式是两维四列

## numpy数组属性
### 这两个属性就是dtype和shape,我们一一说明
#### dtype肯定与类型有关
```
print(arr1.dtype)
print(arr2.dtype)
```
两个输出结果:
int32
int32
为什么回事int32呢,这就要说一下python的这个dtype具有一个自动推导机制,你的数字不超过int32的范围,它就推导为int32,如果超过了int32,没超过int64的话,就自动推导为int64
当然了,这个dtype类型也是可以指定的
```
data1 =
arr1 = np.array(data1,dtype = int64)
print(arr1.dtype)
```
这时输出结果就变成了int64,这个dtype就是你自己指定的
#### shape是形状,也就是表示数组每一维度的数量,n行m列这样的形式
- 上面我们创建了一个二行四列的数组,我们输出一下他的形状我们看一下他的输出
```
print(arr2.shape)
```
运行结果:(2, 4)
- 我们再试试一维数组的形状是什么样的
```
print(arr1.shape)
```
运行结果:(4,)
这个有点意思呀,我们发现这个4是列数,但是输出的时候这个4却在行的位置,这是为什么呢,其实后面(4,)的意思就是只有一个4,那个逗号就可以当做不存在,就和python基础结构中的元组一样,你可以元组里面只有一个值,但是一个值的话后面必须要有一个逗号

# 数组创建函数
## zeros函数
我们继续顾名思义,zeros就是0的意思,接下来我们使用zeros函数创建数组,带着大家感受一下
- 我们先创建一个一维数组
```
print(np.zeros(3))
```
运行结果:
上面这个命令就是创建都为0的单位数组,列数为3,但是大家应该发现了,**每个零后面都有一个小数点,这是因为默认是浮点型的数据**
- 上面我们创建的是一维的,如果我们要创建多维的呢
```
print(np.zeros((3,4)))
```
运行结果:[

]
我们要创建三行四列的数组的话,**就要用元组的方式**,将3,4放在元组中作为参数

## ones函数
这个函数就是创建值都为1的数组,我们根据上面的如法炮制
- 一维数组
```
print(np.ones(3))
```
运行结果:
- 创建多维数组
```
print(np.ones((3,4)))
```
运行结果:[

]

## empty函数
这个函数就和上面的两个不一样了,这个函数的目的是创建随机的垃圾数值的数组,我们以后做数据分析的话,要提前有一些垃圾数值,我们要是不想自己写的话,就可以使用这个函数,创建一些垃圾数值
- 创建一维数组
```
print(np.empty(3))
```
运行结果:
- 创建多维数组
```
print(np.empty((3,4)))
```
运行结果:[

]
- 大家的疑惑:哎,不是说是创建随机的垃圾数值嘛,怎么输出的结果却和上面ones函数的值一模一样呢,是因为python中也有偷懒机制,如果你之前创建过了,它直接就取出之前内存中的值来使用,我们把之前的内容注释了,然后再运行一下看看结果
```
print(np.empty((3,4)))
```
运行结果:[[ 1.48539705e-312 -3.24721943e-1091.09048209e-3111.09048209e-311]
[ 1.09048209e-3112.33419537e-3131.50661701e-3121.16566772e+253]
[ 1.09048209e-3111.16546346e+1662.27438781e+1614.11368246e+223]]
这样就是一些我们看不懂的垃圾值了

## arange函数
这个函数就类似我们python中使用的range函数,都是创建范围内的值
```
print(np.arange(10))
```
运行结果:
```
print(np.arange(5,15))
```
运行结果:[ 56789 10 11 12 13 14]

## eye函数和identity函数
这两个函数的作用类似,都是创建正方形的单位矩阵,单位矩阵就是斜对角线都为1的矩阵,中间只要放一个参数就行,这个参数就是n行n列的单位矩阵
```
print(np.eye(3))
print(np.identity(3))
```
运行结果:
[

]

这两个函数的运行结果都是这样的,但我相信在这里就有朋友要问了,我如果非要用这两个函数创建长方形矩阵呢,当然也是可以的,但是结果可能就和你想的有点差别了
```
print(np.eye(4,2))
```
**为什么这个函数写法不一样了,按照之前的写法,这个函数应该这样写print(np.eye((4,2)))
但这样写会报错,这个需要大家注意一下**
按照我们上面的理解,这个函数创建的应该是四行两列的长方形单位矩阵
但实际的运行结果:
[


]
其实后面的那个参数2是截取,就是截取前两列的意思,就不可能存在长方形的单位矩阵这种东西,所以我们在这里只是对print(np.eye(4))这个的结果截取了前两列值而已

## like后缀的函数(zeros_like,ones_like,empty_like)
这三个函数分别就是创建形状相同的值全为0,1,垃圾值的数组
```
data1=[,]
arr1 = np.array(data1)
print(arr1)

print(np.ones_like(arr1))
print(np.zeros_like(arr1))
print(np.empty_like(arr1))
```
前三行代码是创建一个两行三列的数组,后三行代码的意思就是和arr1数组创建形状相同的数组
运行结果:
[
]
[
]
[
]
** 注意:empty_like是创建同样行列的垃圾值,但是如果上面创建过同样类型的值的话,它就会直接调用之前内存中的值**

qianshang666 发表于 2021-9-9 09:08

user1024024 发表于 2021-9-9 08:46
不懂就问 还要不要学数据挖掘什么的呢?

看你具体应用情况

qianshang666 发表于 2021-3-11 11:45

123456789999 发表于 2021-3-11 11:31
我也想学,没接触过,看了你这个,我可能完完全全的小白有点看不懂,还是要多学学,等接触了,我可能就看懂 ...

你可以跟着这个笔记走,基本上这个笔记就是面对零基础的,你有不懂得的可以在对应的帖子下面留言,我会尽我最大的努力解答的

qianshang666 发表于 2021-3-2 23:40

欢迎对数据分析有兴趣的零基础学习者共同学习,共同进步

a6622418 发表于 2021-3-2 23:52

学习了谢谢大佬

qianshang666 发表于 2021-3-3 00:02

a6622418 发表于 2021-3-2 23:52
学习了谢谢大佬

共同进步

skyyihong 发表于 2021-3-3 00:41

谢谢分享,学习了!!

wupeng010142 发表于 2021-3-3 08:03

正好最近再学习Python

lili2312280 发表于 2021-3-3 08:08

好东西,学习大佬啊

qianshang666 发表于 2021-3-3 08:20

wupeng010142 发表于 2021-3-3 08:03
正好最近再学习Python

如果对以后想走向数据分析有兴趣的话可以跟着这个笔记走走

junjie0927 发表于 2021-3-3 08:27

数据分析好累的说。

qianshang666 发表于 2021-3-3 08:37

junjie0927 发表于 2021-3-3 08:27
数据分析好累的说。

还好吧,主要是后面会涉及数学知识
页: [1] 2 3 4 5 6
查看完整版本: 【笔记】python数据分析——numpy初识1