数据分析-numpy

it2023-06-04  74

数据分析-numpy

基本操作numpy读取数据数组的转置numpy索引和切片numpy中数值的修改

**numpy:**一个在Python中做科学计算的基础库,重在数值计算,也是大部分PYTHON科学计算库的基础库,多用于在大型、多维数组上执行数值运算

**特点:**快速、方便、科学计算的基础库

基本操作

创建数组(矩阵)

import numpy as np a = np.array([1, 2, 3, 4, 5]) b = np.array(range(1, 6)) c = np.arange(1, 6) print(a) print(b) print(c) # 上面a,b,c的内容相同,注意arange和range的区别

输出结果:

数组的形状

import numpy as np a = np.array([[3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9]]) print(a) print("********") print(a.shape) # 查看数组的形状 (2,6)表示2行6列 print("********") print(a.reshape(3, 4)) # 修改数组的形状 修改为3行4列的矩阵

输出结果:

数组和数的计算

import numpy as np a = np.array([[3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9]]) print(a) print("********") print(a+1) print("********") print(a*3)

输出结果:

数组和数组的计算

numpy拥有广播机制,在运算过程中,加减乘除的值被广播到所有元素上面

import numpy as np a = np.array([[3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9]]) b = np.array([[21, 22, 23, 24, 25, 26], [27, 28, 29, 30, 31, 32]]) print(a + b) print("********") print(a * b)

输出结果:

numpy读取数据

不是很建议使用numpy去读数据,后面会讲到用pandas去读取数据,功能更强大

CSV:Comma-Separated Value,逗号分隔值文件

显示:表格状态

源文件:换行和逗号分隔行列的格式化文本,每一行的数据表示一条记录

由于csv便于展示,读取和写入,所以很多地方也是用csv的格式存储和传输中小型的数据,为了方便教学,我们会经常操作csv格式的文件,但是操作数据库中的数据也是很容易的实现的

np.loadtxt(fname,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)

loadtxt表示从文本文件读内容

fname表示文件的位置

dtype表示文件读出来之后,给它指定一个什么样的类型

delimiter表示数据是怎么样分割开的

unpack:默认是False(()),默认情况下,有多少条数据,就会有多少行,为True的情况下,每一列的数据会组成一行,原始数据有多少列,加载出来的数据就会有多少行,相当于转置的效果

现在这里有一个英国和美国各自youtube1000多个视频的点击,喜欢,不喜欢,评论数量([“views”,“likes”,“dislikes”,“comment_total”]) 的csv,运用刚刚所学习的知识,我们尝试来对其进行操作

数据来源

import numpy as np # 当前路径下的文件路径 us_file_path = "./youtube_video_data/US_video_data_numbers.csv" t1 = np.loadtxt(us_file_path, delimiter=",", dtype="int", unpack=True) t2 = np.loadtxt(us_file_path, delimiter=",", dtype="int") print(t1) print("*" * 100) print(t2)

输出结果:

.png)]

数组的转置

那么问题来了,什么是转置?

转置是一种变换,对于numpy中的数组来说,就是在对角线方向交换数据,目的也是为了更方便的去处理数据

import numpy as np t2 = np.arange(24).reshape(4, 6) print(t2) print("*" * 100) # 对矩阵进行转置 print(t2.transpose()) # print(t2.T) # print(t2.swapaxes(0, 1))

输出结果:

那么,结合之前的所学的matplotlib把英国和美国的数据呈现出来?

看到这个问题,我们应该考虑什么?

1.我们想要反映出什么样的结果,解决什么问题?

2.选择什么样的呈现方式?

3.数据还需要做什么样的处理?

4.写代码

numpy索引和切片

直接看代码吧,建议自己敲一敲,就知道每行代码什么含义啦

import numpy as np # 当前路径下的文件路径 us_file_path = "./youtube_video_data/US_video_data_numbers.csv" uk_file_path = "./youtube_video_data/GB_video_data_numbers.csv" t1 = np.loadtxt(us_file_path,delimiter=",",dtype="int",unpack=True) t2 = np.loadtxt(us_file_path, delimiter=",", dtype="int") print(t1) print(t2) print("*" * 100) # 注意:需明白矩阵是从第0行开始的 # 取行 print(t2[2]) # 取连续的多行 print(t2[2:]) # 取不连续的多行 print(t2[[2,8,10]]) print(t2[1,:]) # 1表示取第2行 # ,左边表示行,右边表示列 # :表示每列都要 print(t2[2:,:]) print(t2[[2,10,3],:]) # 取列 print(t2[:,0]) # 取连续的多列 print(t2[:,2:]) # 取不连续的多列 print(t2[:,[0,2]]) # 取行和列,取第3行,第四列的值 a = t2[2,3] print(a) print(type(a)) # 取多行和多列,取第3行到第五行,第2列到第4列的结果 # 去的是行和列交叉点的位置 b = t2[2:5, 1:4] print(b) # 取多个不相邻的点 # 选出来的结果是(0,0) (2,1) (2,3) c = t2[[0, 2, 2], [0, 1, 3]] print(c)

numpy中数值的修改

import numpy as np t1 = np.arange(24).reshape(4, 6) print(t1) print("*" * 100) # 数值修改,将矩阵中小于8的值修改为6 t1[t1 < 8] = 6 print(t1)

输出结果:

numpy还有一些其他的知识,之后会在这篇博客上进行补充

最新回复(0)