数据分析-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还有一些其他的知识,之后会在这篇博客上进行补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值