python_数据分析_numpy库

一、创建ndarray

*ndarray是NumPy中表示数组的重要类型

1、使用np.array()创建

*参数列表:[1,2,3,4]

注:(1)、numpy默认ndarray的所有元素的类型是相同的
​
(2)、如果传入的数据类型不同,会被按照优先级强制转换为同一类型,其中优先级为   str >float >int
​
(3)、ndarray常见的数据类型:
    int: int8、uint8、int16、int32、int64
    float:float16、float32、float64
    str:字符串
a = [1,2,3,4,5]
n = np.array(a)
print(n)
#显示类型
print(type(n))
#显示形状
print(n.shape)
2、使用np的routines函数创建
(1)、np.ones(shape,dtype = None,order = 'C')

*创建一个所有元素都为1的多维数组

参数说明:

  • shape:形状

  • dtype=None,元素类型

order:{‘C’,‘F’},可选,默认值:C是否在内存中以行主或列主顺序存储多维数据,一般默认

n = np.ones(shape=(3,),dtype = np.int8)
(2)、np.zeros(shape,dtype = float,order = 'C')

*创建一个所有元素都为0的多维数组

参数说明:

  • *shape:形状

  • *dtype = None:元素类型

n = np.zeros(shape = (5,5),dtype = np.int16)
(3)、np.full(shape,fill_value,dtype = None,order = 'C')

*创建一个所有元素都为指定元素的多维数组

参数说明:

  • *shape:形状

  • *fill_value:填充值

  • *dtype = None:元素类型

n = np.full(shape = (3,4),fill_value = 8)
(4)、np.eye(N,M=None,k=0,dtype=float)

*对角线为1其他位置为0的二维数组

参数说明:

  • *N:行数

  • *M:列数,默认为None,表示和行数一样

  • *k :主对角线向右偏移的位置

  • *dtype = None:元素类型

n = np.eye(9,9,k=3)
(5)、np.linspace(start,stop,num = 50,endpoint = True,restep = False,dtype = None)

*创建一个等差数列

参数说明:

  • start:开始值

  • stop:结束值

  • num= 50:等差数列中默认有50个数

  • endpoint = True:是否包含结束值

  • restep = False:是否返回等差值(步长)

  • dtype = None:元素类型

n = np.linspace(1,9,5)
print(n)
(6)、np.arange(start,stop,step,dtype = None)

*创建一个数值范围的数组

*和Python中range功能类似

参数说明:

start:开始值

stop:结束值(不包含)

step:步长

dtype = None:元素类型

n = np.arange(2,10,2)
print(n)
(7)、np.random.randint(low,high = None,size = None,dtype = None)

*创建一个随机整数的多维数组

参数说明:

  • low:最小值

  • high:None:最大值

    • 注:high=None时,生成的数值在(0,low)之间

    • 如果使用high这个值,则生成的数值在(low,high)之间

  • size = None:数组形状,默认只输出一个随机值

  • dtype = None:元素类型

#随机整数:单个数
n = np.random.randint(3,10)
print(n)
#随机整数:一维数组
n = np.random.randint(3,10,size=6)
print(n)
#随机整数:二维数组
n = np.random.randint(3,10,size=(3,4))
print(n)
#随机整数:三维数组
n = np.random.randint(0,256,size=(20,40,3))
print(n)
(8)、np.random.randn(d0,d1,......,dn)

*创建一个服从标准正态分布的多维数组

*创建一个所有元素都为1的多维数组

参数说明:

  • dn:第n个维度的值

    n = np.random.randn(1,2,3)
    print(n)

(9)、np.random.normal(loc = 0.0,scale = 1.0,size = None)

*创建一个服从正态分布的多维数组

参数说明:

  • loc:均值

  • scale:标准差,对应分布的宽度,scale越大,正态分布的曲线越矮胖,scale越小,曲线越高瘦

  • size = None:数组形状

n = np.random.normal(10,0.5,size=(3,4))
print(n)
(10)、np.random.random(size = None)

*创建一个元素为0~1(左闭右开)的随机数的多维数组

参数说明:

  • size= None:数组形状

n = np.random.random(size=(3,4))
print(n)
(11)、np.random.rand(d0,d1,......,dn)

*同np.random.random(size = None)

*创建一个元素为0~1(左闭右开)的随机数的多维数组

参数说明:

  • dn:第n个维度的数值

n = np.random.rand(3,4)
print(n)

二、ndarray的属性

1、ndim(维度)
n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
2、shape(形状)

*三个数字分别表示各个维度的长度

n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
x = n.shape
print(x)
3、size(总长度)

*即:行和乘列和

n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
x = n.shape
print(x)
c = n.size
print(c)
4、dtype(元素类型)
n = np.random.rand(3,4)
print(n)
w = n.ndim
print(w)
x = n.shape
print(x)
c = n.size
print(c)
l = n.dtype
print(l)

三、ndarray的基本操作

1、索引

一维和列表索引的操作一致。

2、 根据索引修改数据

(1)、将第二行全部数字改为0.88

n= np.random.rand(3,4)
print(n)
#将第二行全部数字改为0.88
n[1]=0.88
print(n)

(2)、将第二行最后一个数改为0.88

a= np.random.rand(3,4)
print(a)
#将第二行最后一个数改为0.88
a[1][3]=0.88
print(a)
3、切片
import numpy as np
#列表有逗号间隔
# I = [1,2,3,4,5,6,7,8]
# a = I[2:6]
# b = I[::-1]   #翻转
# print(a)
# print(b)
# #数组没有逗号间隔
# n = np.array(I)
# a = n[2:6]
# print(n)
# print(a)

#对于二维数组的行切片
n = np.random.randint(0,10,size=(6,8))
# #取一行
# print(n[0])
# #连续取多行
# print(n[1:4])
# #取不连续多行
# print(n[[1,2,4]])

#对于二维数组的列切片
n = np.random.randint(0,10,size=(6,8))
print(n)
#取一列
print(n[:,0])   #取第一列
print(n[1:4,0])  # 取第二到第四行的第一列
#取连续的多列:切片
print(n[:,2:5])  #取第三到第五列的所有行
#取不连续的多列:中括号
print(n[:,[1,3,4]])  #取第二列和第四列和第五列的所有行
4、翻转

(1)、行翻转

n[::-1]

(2)、列翻转

n[:,::-1]
5、变形

使用reshape函数

import numpy as np

n = np.arange(1,21)
print(n)

#reshape:将数组改变形状  变成二维
a = np.reshape(n,newshape=(4,5))
print(a)

#使用-1:表示任意剩余维度长度
e = n.reshape(4,-1)
print(e)
r = n.reshape(-1,2)
print(r)
6、级联(合并)
#级联(合并)
a = np.concatenate((n1,n2))  #上下合并
print(a)

l = np.concatenate((n1,n2),axis=0)  #上下合并
print(l)

p = np.concatenate((n1,n2),axis=1)  #左右合并
print(p)

#左右合并
i = np.hstack((n1,n2))
print(i)

#上下合并
u = np.vstack((n1,n2))
print(u)
7、拆分

(1)、np.split()

(2)、np.hsplit()

(3)、np.vsplit()

import numpy as np

n = np.random.randint(0,100,size=(4,4))
print(n)
a = np.split(n,4)
print(a)
b = np.hsplit(n,4)
print(b)
#垂直拆分,平均拆成3份
c = np.vsplit(n,4)
print(c)
#按照指定位置拆分
d = np.vsplit(n,(1,2,4))
print(d)
#水平拆分
e = np.hsplit(n,4)
print(e)
print()
#split:做水平和垂直拆分
#axis = 0:行
#axis = 1:列
a = np.split(n,4)
a = np.split(n,4,axis=0)
print(a)
print()
m = np.split(n,4)
m = np.split(n,4,axis=1)
print(m)
8、拷贝
import numpy as np

#n2不会随着n的变化而变化
n = np.random.randint(0,10,size=(2,3))
n2 = n.copy()
n[0][0] = 0
print(n2)
print(n)

#注:如果用n3 = n,则n2会随着n的变化而变化
n3 = n
print(n3)

四、numpy的聚合操作

1、求和np.sum()
import numpy as np

n = np.arange(10)
print(n)

s = np.sum(n)
print(s)

n = np.random.randint(0,10,size=(3,5))
print(n)
s1 = np.sum(n)
print(s1)   #全部数加起来
s2 = np.sum(n,axis=0)
print(s2)   #表示每一列的多行求和
s3 = np.sum(n,axis=1)
print(s3)   #表示每一行的多列求和
2、最小值np.min
3、最大值np.max
4、平均值np.mean
5、平均值np.average
6、中位数np.median
7、百分位数np.percentile
8、最小值对应的下标np.argmin
9、最大值对应的下标np.argmax
10、标准差np.std
11、方差np.var
12、次方,求幂np.power
13、按条件查找np.argwhere
14、np.nansum
  • *nan:数值类型,not a number:不是一个正常的数值,表示空

  • *np.nan:float类型

#对于含有空的数组,要用np.nansum进行求和
n = np.array([1,2,3,np.nan])
print(n)
#实质是去掉空值后的数组进行求和
s4 = np.nansum(n)
print(s4)

五、矩阵操作

1、基本的矩阵操作

算术运算符:加减乘除

矩阵和矩阵之间运算

数与矩阵运算

2、矩阵乘积

np.dot(第一个矩阵的列数等于第二个矩阵的行数)

import numpy as np

n1 = np.random.randint(0,10,size=(4,4))
n2 = np.random.randint(0,10,size=(4,5))
print(n1,n2)
print()
n3 = np.dot(n1,n2)
print(n3)
3、矩阵的逆
n4 = np.linalg.inv(n2)
print(n4)
4、行列式的计算
n5 = np.round(np.linalg.det(n1))
print(n5)
5、矩阵的秩
n6 = np.linalg.matrix_rank(n1)
print(n6)

六、ndarray的广播机制

(1)、为缺失的维度补维度

(2)、缺失元素用已有的数组填充

import numpy as np

x = np.full(shape=(3,3),fill_value=2)
print(x)
y = np.arange(3)
print(y)
z = x+y
print(z)
#注:第二个数组会自动补上两行[0 1 2],然后在进行相加

七、数学操作

import numpy as np

n = np.array([1,2,3,5,5,44,55,66])

#绝对值
print(np.abs(n))
#平方根
print(np.sqrt(n))
#平方
print(np.square(n))
#指数
print(np.exp(n))
#自然对数
print(np.log(n))
#以2为底的对数
print(np.log2(n))
#以10为底的对数
print(np.log10(n))
#正弦函数
print(np.sin(n))
#余弦函数
print(np.cos(n))
#正切函数
print(np.tan(n))
#向上取整
print(np.ceil(n))
#四舍五入
print(np.round(n,2))
#向下取整
print(np.floor(n))
#累加
print(np.cumsum(n))

八、ndarray的排序

1、np.sort()

不改变输入

import numpy as np

n = np.array([55,44,8,2,9,7,3,6])
print(np.sort(n))
print()
2、ndarray.sort()

本地处理,不占用空间,但不改变输入

import numpy as np

n1 = np.random.randint(0,10,size=8)
print(n1)
n1.sort()
print(n1)

九、文件操作

1、保存数组到npy或npz文件

save:保存ndarray到一个npy文件。

savez:将多个array保存到一个npz文件中。

import numpy as np

x = np.arange(5)
y = np.arange(10,20)

np.save('x',x)
np.savez('arr.npz',xarr = x,yarr = y)
a = np.load('x.npy')
b = np.load('arr.npz')['yarr']

print(a)
print(b)
2、保存数组到csv或txt文件
n = np.random.randint(0,10,size=(3,4))
#存储到csv或txt
#delimiter = ',':分隔符
np.savetxt('arr.csv',n,delimiter=',')
#读取csv或txt
#注:最新版numpy不能用dtype要用astype
c = np.loadtxt('arr.csv',delimiter=',').astype(np.int8)
print(c)

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python大作业数据分析通常会使用到numpy、matplotlib和爬虫技术。下面我详细介绍一下: 1. NumpyNumpyPython中常用的数值计算库,它提供了对多维数组对象的支持以及一系列科学计算函数。在数据分析中,我们可以使用numpy来进行数据处理、数据清洗、数据转换等操作。例如,我们可以使用numpy来进行数组运算、矩阵计算、向量化操作等,大大提高了运算效率和开发速度。 2. Matplotlib:Matplotlib是Python中广泛使用的数据可视化库,它可以用来绘制各种类型的图表,如折线图、柱状图、饼图、散点图等。在数据分析中,我们可以使用matplotlib来展示和探索数据的分布、关系和趋势,帮助我们更好地理解数据。例如,我们可以使用matplotlib来绘制销售趋势图,比较不同产品的销售情况等。 3. 爬虫:爬虫是一种自动化获取网页信息的技术,通过模拟浏览器行为并提取网页中的数据,可以获取大量的结构化数据。在数据分析中,我们可以使用爬虫技术来从各种数据源(如网页、API、数据库等)中获取数据,以便进行后续的分析和处理。例如,我们可以编写爬虫程序来爬取电商网站的商品信息,然后使用numpy和matplotlib对这些数据进行分析和可视化。 综上所述,Python大作业数据分析常使用numpy、matplotlib和爬虫技术,它们分别用于数据处理、数据可视化和数据获取方面,为我们提供了强大的分析工具和方法。 ### 回答2: Python大作业数据分析主要涉及到了三个重要的模块:NumPy,Matplotlib和爬虫。 首先是NumPy,它是一个强大的Python科学计算库。我们可以使用NumPy来处理和分析大量的数据。它提供了高效的数组运算和数值计算的功能,可以进行数据处理、转换、矩阵运算等。在数据分析中,可以利用NumPy来进行数据预处理、数据清洗、数据变换等操作。 其次是Matplotlib,这是一个用于创建各种类型图表和可视化的Python绘图库。我们可以使用Matplotlib来绘制图表、直方图、散点图、饼图等,以直观的方式展示数据分析结果。Matplotlib不仅可以用于静态图表的绘制,还可以创建动态图表和交互式图表,使得数据呈现更加生动。 最后是爬虫,也就是利用Python编写程序从网页上获取所需数据的技术。爬虫可以通过发送HTTP请求,解析HTML文档,提取所需数据并保存到本地或进一步处理。在数据分析中,我们可以使用爬虫来获取特定网站上的数据,例如股票价格,天气信息等,从而进行后续的数据分析和处理。 综上所述,Python大作业数据分析涉及到的关键技术主要是NumPy、Matplotlib和爬虫。通过利用这些技术,我们可以对大量数据进行处理、分析和可视化呈现,从而得出有意义的结论和结果。 ### 回答3: Python大作业数据分析主要涉及到numpy、matplotlib和爬虫技术。 首先,numpyPython科学计算的基础库,它提供了多维数组对象和一些用于处理数组的函数。在数据分析中,可以使用numpy进行数据的存储、处理和计算,如数据清洗、分析、转换等。通过numpy的数组对象,可以方便地进行向量化计算,加快数据处理的速度。 其次,matplotlib是一个可视化库,它能够将数据以图表的形式展示出来。在数据分析中,我们可以使用matplotlib绘制各种类型的图表,如柱状图、折线图、散点图等,以便更直观地展示数据的特征和趋势。通过调用matplotlib的API,可以自定义图表的外观和样式,使其更符合数据分析的需要。 最后,爬虫技术是通过模拟HTTP请求,从网页中提取数据的一种技术。在数据分析中,我们可以使用爬虫技术从互联网上获取所需的数据,如股票数据、天气数据、新闻数据等,以便进行后续的分析和处理。通过合理的选择爬虫库和编写爬虫脚本,可以高效地获取到所需的数据。 综上所述,Python大作业数据分析主要涉及到numpy、matplotlib和爬虫技术。通过numpy进行数据的处理和计算,使用matplotlib进行数据的可视化,以及利用爬虫技术获取所需的数据。通过综合运用这些技术,可以对数据进行深入的分析和挖掘,发现数据中的规律和趋势,为决策提供有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值