欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

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和pandas的基础用法

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