吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6650|回复: 54
收起左侧

[Python 转载] 【笔记】python数据分析——numpy初识1

  [复制链接]
qianshang666 发表于 2021-3-2 23:05

数据分析介绍

数据分析是目前人工智能的基础,而数据分析主要就是掌握几个常见的包: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 = [1,2,3,4]
    arr1 = np.array(data1)
    print(arr1)

    打印结果:[1 2 3 4]
    我们打印出来之后就不是列表了,变成数组了,因为中间没有逗号了

  • 接下来我们创建多维数组看看

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

    打印结果:[[1 2 3 4]
    [5 6 7 8]]
    如果大家自己运行试试的话,我们就会发现他给我们自动分行了,在这里我是手打的,可能不是那么清晰,大家最好是自己运行一下试试,这个它体现的方式是两维四列

numpy数组属性

这两个属性就是dtype和shape,我们一一说明

dtype肯定与类型有关

print(arr1.dtype)
print(arr2.dtype)

两个输出结果:
int32
int32
为什么回事int32呢,这就要说一下python的这个dtype具有一个自动推导机制,你的数字不超过int32的范围,它就推导为int32,如果超过了int32,没超过int64的话,就自动推导为int64
当然了,这个dtype类型也是可以指定的

data1 = [1,2,3,4]
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. 0. 0.]
    上面这个命令就是创建都为0的单位数组,列数为3,但是大家应该发现了,每个零后面都有一个小数点,这是因为默认是浮点型的数据

  • 上面我们创建的是一维的,如果我们要创建多维的呢
    print(np.zeros((3,4)))

    运行结果:[[0. 0. 0. 0.]
    [0. 0. 0. 0.]
    [0. 0. 0. 0.]]
    我们要创建三行四列的数组的话,就要用元组的方式,将3,4放在元组中作为参数

ones函数

这个函数就是创建值都为1的数组,我们根据上面的如法炮制

  • 一维数组
    print(np.ones(3))

    运行结果:[1. 1. 1.]

  • 创建多维数组
    print(np.ones((3,4)))

    运行结果:[[1. 1. 1. 1.]
    [1. 1. 1. 1.]
    [1. 1. 1. 1.]]

empty函数

这个函数就和上面的两个不一样了,这个函数的目的是创建随机的垃圾数值的数组,我们以后做数据分析的话,要提前有一些垃圾数值,我们要是不想自己写的话,就可以使用这个函数,创建一些垃圾数值

  • 创建一维数组
    print(np.empty(3))

    运行结果:[1. 1. 1.]

  • 创建多维数组
    print(np.empty((3,4)))

    运行结果:[[1. 1. 1. 1.]
    [1. 1. 1. 1.]
    [1. 1. 1. 1.]]

  • 大家的疑惑:哎,不是说是创建随机的垃圾数值嘛,怎么输出的结果却和上面ones函数的值一模一样呢,是因为python中也有偷懒机制,如果你之前创建过了,它直接就取出之前内存中的值来使用,我们把之前的内容注释了,然后再运行一下看看结果
    print(np.empty((3,4)))

    运行结果:[[ 1.48539705e-312 -3.24721943e-109  1.09048209e-311  1.09048209e-311]
    [ 1.09048209e-311  2.33419537e-313  1.50661701e-312  1.16566772e+253]
    [ 1.09048209e-311  1.16546346e+166  2.27438781e+161  4.11368246e+223]]
    这样就是一些我们看不懂的垃圾值了

arange函数

这个函数就类似我们python中使用的range函数,都是创建范围内的值

print(np.arange(10))

运行结果:[0 1 2 3 4 5 6 7 8 9]

print(np.arange(5,15))

运行结果:[ 5  6  7  8  9 10 11 12 13 14]

eye函数和identity函数

这两个函数的作用类似,都是创建正方形的单位矩阵,单位矩阵就是斜对角线都为1的矩阵,中间只要放一个参数就行,这个参数就是n行n列的单位矩阵

print(np.eye(3))
print(np.identity(3))

运行结果:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]

这两个函数的运行结果都是这样的,但我相信在这里就有朋友要问了,我如果非要用这两个函数创建长方形矩阵呢,当然也是可以的,但是结果可能就和你想的有点差别了

print(np.eye(4,2))

为什么这个函数写法不一样了,按照之前的写法,这个函数应该这样写print(np.eye((4,2)))
但这样写会报错,这个需要大家注意一下

按照我们上面的理解,这个函数创建的应该是四行两列的长方形单位矩阵
但实际的运行结果:
[[1. 0.]
[0. 1.]
[0. 0.]
[0. 0.]]
其实后面的那个参数2是截取,就是截取前两列的意思,就不可能存在长方形的单位矩阵这种东西,所以我们在这里只是对print(np.eye(4))这个的结果截取了前两列值而已

like后缀的函数(zeros_like,ones_like,empty_like)

这三个函数分别就是创建形状相同的值全为0,1,垃圾值的数组

data1=[[2,3,4],[1,2,4]]
arr1 = np.array(data1)
print(arr1)

print(np.ones_like(arr1))
print(np.zeros_like(arr1))
print(np.empty_like(arr1))

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

免费评分

参与人数 8吾爱币 +8 热心值 +6 收起 理由
SiLi + 1 感谢分享
z331883053 + 1 + 1 我很赞同!
狐白本白 + 1 + 1 投币以表跟帖,我在培训ing,培训的走向就是数据分析师,有大佬的教程,跟.
夺笋 + 1 + 1 谢谢@Thanks!
七年木叶 + 1 用心讨论,共获提升!
海蓝浪花 + 1 + 1 热心回复!
Va1 + 1 + 1 我很赞同!
UPC + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 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
数据分析好累的说。

还好吧,主要是后面会涉及数学知识
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 04:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表