numpy和pandas的基础用法
程序员文章站
2022-08-09 18:23:23
numpy和pandas的基础用法numpynumpy创建arraynumpy的属性numpy的基础运算numpy的索引numpy的合并numpy的分割numpy的copy和deepcopypandaspandas的基本介绍pandas选择数据pandas设置值numpynumpy创建arrayimport numpy as npa = np.array([[1,2,3], [2,3,4]],dtype = np.int32) #不加32默认是64位的,这一句是在给矩...
numpy和pandas的基础用法
numpy
numpy创建array
import numpy as np
a = np.array([[1,2,3],
[2,3,4]],dtype = np.int32) #不加32默认是64位的,这一句是在给矩阵内部的元素进行定义
print(a.dtype)
#生成全部为0元素的矩阵,参数为所希a望的shape
a = np.zeros((12,3))
print(a)
#生成全部为1的矩阵,参数为所希望矩阵的shape
a = np.ones((3,4))
print(a)
#生成一个全部为空的矩阵容器
b = np.empty((3,4))
print(b)
#生成随机数,并且可以按照长度整合
a = np.arange(12).reshape((3,4))
print(a)
#生成一个从1开始,到10结束(都包含在里面)中间划分20段,生成的是一个可迭代数列
a = np.linspace(1,10,6).reshape((2,3))
print(a)
for i in a:
print(i)
numpy的属性
import numpy as np
array = np.array([[1,2,3],
[2,3,4]])
print(array)
print('number of dim(几维):',array.ndim)
print('number of shape(行和列):',array.shape) #如果是一个一维的数组,其中有三个元素那个就是(3,)
print('number of size(元素个数):',array.size)
运行结果:
numpy的基础运算
import numpy as np
a = np.array([[1,2],
[3,4]])
b = np.arange(4).reshape(2,2)
print(a)
print(b)
#两种不同的乘法
c = a*b #按照位置相乘
c_dot = np.dot(a,b) #按照矩阵运算相乘
print(c)
print(c_dot)
c = np.random.random((2,4)) #随机生成2行4列的矩阵,矩阵元素的值不超过1
print(c)
print(np.sum(c)) #求矩阵所有元素的和
print(np.min(c)) #求矩阵所有元素中的最小值
print(np.max(c)) #求矩阵中所有元素的最大值
d = np.arange(2,14).reshape((3,4))
print(d)
print(np.argmin(d)) #矩阵中最小元素的索引
print(np.argmax(d)) #矩阵中最大元素的索引
print(np.mean(d)) #求矩阵的平均值
print(np.mean(d,axis = 0)) #axis参数等于0则是对列取平均,axis参数等于1则是对行取平均
print(np.cumsum(d)) #前几个数之和
print(np.diff(d)) #两数之差
print(np.nonzero(d)) #输出的是不是数字零的行和列
print(np.sort(d)) #矩阵逐行排序
print(np.transpose(d)) #矩阵的转置
print(d.T) #矩阵的转置
print((d.T).dot(d)) #矩阵的转置乘以本身
print(np.clip(d,4,9)) #将d矩阵中小于4的变为4大于9的变为9,中间的保持不变
numpy的索引
import numpy as np
A = np.arange(3,15).reshape((3,4))
print(A)
print(A[2][1]) #行和列的索引都是从0开始索引
print(A[1,1:4]) #第二行第二个数到第4个数
for row in A:
print(row) # 迭代出行
for colum in A.T:
print(colum) #迭代出列
print(A.flatten()) #列表显示矩阵的所有值
numpy的合并
import numpy as np
A = np.array([1,1,1])[:,np.newaxis] #改变了维度
print(A)
B = np.array([2,2,2])[:,np.newaxis]
print(np.vstack((A,B))) #将A和B上下合并
print(np.hstack((A,B))) #将A和B左右合并
print(np.hstack((A,B)).shape)
print(np.concatenate((A,B,A,B), axis = 1)) #axis为0上下合并,axis为1左右合并
numpy的分割
import numpy as np
a = np.arange(12).reshape((3,4))
print(a)
print(np.split(a,2,axis = 1)) #对a矩阵在行上面把矩阵分割成两列
print(np.split(a,3,axis = 0)) #对a矩阵在列上面把矩阵分割成三行
print(np.vsplit(a,3)) #横向分割
print(np.hsplit(a,4)) #纵向分割
numpy的copy和deepcopy
import numpy as np
a = np.arange(12).reshape((3,4))
print(a)
print(np.split(a,2,axis = 1)) #对a矩阵在行上面把矩阵分割成两列
print(np.split(a,3,axis = 0)) #对a矩阵在列上面把矩阵分割成三行
print(np.vsplit(a,3)) #横向分割
print(np.hsplit(a,4)) #纵向分割
pandas
pandas的基本介绍
import pandas as pd
import numpy as np
s = pd.Series([1,2,3,np.nan,44,1])
print(s)
dates = pd.date_range('20160101',periods=4)
print(dates)
df1 = pd.DataFrame(np.arange(12).reshape((3,4)),index = ["a",'b','c'],columns = dates) #pd.DataFrame(矩阵,每一行的索引值,每一列的索引值)
print(df1)
df2 = pd.DataFrame(np.arange(12).reshape(3,4))
print(df2) #默认就是0,1,2,3,4作为行和列的序号
df3 = pd.DataFrame(
{'A':1.0,
'B':pd.Timestamp('20200525'),
'C':pd.Series(1,index=list(range(4)),dtype='float32'),
'D':np.array([3]*4,dtype='int32'),
'E':pd.Categorical(['test','train','test','train']),
'F':'foo'
}
)
print(df3)
print(df3.dtypes) #打印每一列的数据类型
print(df3.describe())
df3.sort_values(by = 'E')
print(df3)
pandas选择数据
import numpy as np
import pandas as pd
dates = pd.date_range('20200121',periods=6)
df = pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=['A','B','C','D'])
print(df)
print(df['A'])
print(df.A) #按照索引名称提取行和列
print(df[0:3]) #按照行切片选择数据
print(df.loc['20200121'],['A']) #根据行和列名称来选取数据
print(df.iloc[[1,2,3],1:3]) #挑选出固定行和相对列的数据
#print(df.ix[:3,['A']]) #1.0.0版本之后移除了这个ix函数
#是或者否的一个判断
print(df[df.A>8]) #只对比A但是,满足条件的A所在的行都会被留下(布尔型索引)
pandas设置值
import numpy as np
import pandas as pd
dates = pd.date_range('19960121',periods=6)
print(dates)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index = dates,columns = ['A','B','C','D'])
print(df)
df.iloc[3,3] = 123 #利用iloc定位并修改
print(df)
本文地址:https://blog.csdn.net/weixin_43580807/article/details/107324464