数据预处理02

numpy的算术运算

exp()计算e的x次方
exp2(x)计算2的x次方
power(x1,x2)计算x1的x2次幂
mod(x)返回输入数组中相应元素的除法余数
log(x)自然对数,逐元素
log2(x)以2为底x对数
log10(x)以10为底x的对数
sqrt(x)按元素方式返回数组的正平方根
square(x)返回输入的元素平方
import numpy as np;
arr1=np.array([2,2,2])
#求e的x次方
np.exp(2) #e的2次方  7.38905609893065
np.exp(arr1) #[7.3890561 7.3890561 7.3890561]
np.e**2  #7.3890560989306495
#2的x次方
np.exp2(2)#4.0
np.exp2(arr1)    #[4. 4. 4.]
#x的y次方
pow(4,2)   #16  4的2次方
pow(4,arr1)   #[16 16 16]
pow(arr1,4)    #[16 16 16]  等同于np.power(arr1,4)
#x的平方
np.square(arr1)   #[4 4 4]
#x开根号
np.sqrt(arr1)  #[1.41421356 1.41421356 1.41421356]
#求自然对数,以e为底x的对数
np.log(arr1)   #[0.69314718 0.69314718 0.69314718]
#求对数,以2为底x的对数
np.log2(arr1)  #[1. 1. 1.]
np.log10(arr1)   #[0.30103 0.30103 0.30103] 以10为底x的对数
np.log(9)/np.log(3)  #2.0  以3为底,9的对数
#取余
arr2=np.array([5,5,5])
np.mod(arr2,2)  #[1 1 1]   arr2对2取余

numpy的取整函数

np.around() 四舍五入,遇0.5取偶数
np.floor() 向下取整
np.ceil(arr3) 向上取整

#取整 np.around()  四舍五入,遇0.5取偶数
arr3=np.array([1.5878,2.5000,3.1245,9.0258,6.9510,-2.0689])
np.around(arr3)  #[ 2.  2.  3.  9.  7. -2.]
#向下取整
np.floor(arr3)   #[ 1.  2.  3.  9.  6. -3.]
#向上取整
np.ceil(arr3)  #[ 2.  3.  4. 10.  7. -2.]

numpy的统计函数
在这里插入图片描述

最大值 np.amax()
最小值 np.amin()

arr4=np.array([[6,8,1,5],[5,2,4,6],[1,5,9,3]],ndmin=2)
'''
[[6 8 1 5]
 [5 2 4 6]
 [1 5 9 3]]
'''
#最大值
np.amax(arr4) #9
np.amax(arr4,axis=0)  #[6 8 9 6]  第0个轴,横向,取每一列的最大值
np.amax(arr4,axis=1)  #[8 6 9]   第一个轴
#最小值
np.amin(arr4)  #1
np.amin(arr4,axis=0)  #[1 2 1 3]
np.amin(arr4,axis=1)   #[1 2 1]

矩阵求和

np.sum(arr4)   #55
np.sum(arr4,axis=0)  #[12 15 14 14]
np.sum(arr4,axis=1)   #[20 17 18]

平均值

np.mean(arr4)   #4.583333333333333
np.mean(arr4,axis=0)  #[4.         5.         4.66666667 4.66666667]
np.mean(arr4,axis=1)   #[5.   4.25 4.5 ]

标准差

np.std(arr4)  #2.43099202430247
np.std(arr4,axis=0)  #[2.1602469  2.44948974 3.29983165 1.24721913]
np.std(arr4,axis=1)   #[2.54950976 1.47901995 2.95803989]

方差

np.var(arr4)  #5.909722222222221
np.var(arr4,axis=0)  #[ 4.66666667  6.         10.88888889  1.55555556]
np.var(arr4,axis=1)   #[6.5    2.1875 8.75  ]

中位数

np.median(arr4)  #5.0
np.median(arr4,axis=0)  #[5. 5. 4. 5.]
np.median(arr4,axis=1)   #[5.5 4.5 4. ]

排序和索引函数
在这里插入图片描述

升序降序

arr5=np.array([23, 18, 26, 29, 7, 18, 17, 8, 2])
arr6=np.array([[17, 27, 21],[23, 12, 6],[12, 11, 2],[12, 20, 17]])
'''[[17 27 21]
 [23 12  6]
 [12 11  2]
 [12 20 17]]'''

#升序排序
np.sort(arr5)  #[ 2  7  8 17 18 18 23 26 29]
np.sort(arr6)   #默认按照最内侧轴排序,该例默认axis=1,
'''[[17 21 27]
 [ 6 12 23]
 [ 2 11 12]
 [12 17 20]]'''
#降序排序
np.sort(arr5)[::-1] #[29 26 23 18 18 17  8  7  2]

#返回非零元素在原数组中的位置

arr7=np.array([4,5,9,62,0,3,19])
np.nonzero(arr7)   #(array([0, 1, 2, 3, 5, 6], dtype=int64),)
arr7[np.nonzero(arr7)]  #[ 4  5  9 62  3 19]  切片出非零元素

#返回输入数组中满足给定条件的元素的索引

np.where(arr7>10)   #(array([3, 6], dtype=int64),)
arr7[np.where(arr7>10)]   #[62 19]  切片出符合条件的元素

arr7=np.array([4,5,9,62,0,3,19])
arr8=np.array([9,15,3,0,13,23,7])
np.where(arr7>arr8,arr7,arr8)   #[ 9 15  9 62 13 23 19]  比较arr7和arr8,前者大取arr7,后者大取arr8
np.where(arr7>arr8,1,0)   #[0 0 1 1 0 0 1]  比较arr7和arr8,前者大取1,后者大取0

去重函数

arr5  #[23 18 26 29  7 18 17  8  2]
np.unique(arr5)  #[ 2  7  8 17 18 23 26 29]  排序并去重
np.unique(arr5,return_index=True,return_counts=True)  #返回排序后索引,返回排序后各个元素在原数组中的个数
#(array([ 2,  7,  8, 17, 18, 23, 26, 29]), array([8, 4, 7, 6, 1, 0, 2, 3], dtype=int64), array([1, 1, 1, 1, 2, 1, 1, 1], dtype=int64))

集合逻辑
在这里插入图片描述

arr9=np.array([23, 18, 26, 29, 7, 18, 17, 8, 2])
arr10=np.array([ 1, 4, 1, 18, 11, 17, 15, 3, 28])

判断前者数组中各元素是否在后者中

np.in1d(arr9,arr10)  #[False  True False False False  True  True False False]
np.in1d(arr9,arr10,invert=True)  #[ True False  True  True  True False False  True  True]   结果反转
arr9[np.in1d(arr9,arr10)]  #[18 18 17]  切片取出True的元素即在arr9不在arr10
arr9[np.in1d(arr9,arr10,invert=True)]  #[23 26 29  7  8  2]  切片取出True的元素即不在arr9在arr10的

求交集(排序输出)

np.intersect1d(arr9,arr10)  #[17 18]

求并集(排序去重输出)

np.union1d(arr9,arr10)  #[ 1  2  3  4  7  8 11 15 17 18 23 26 28 29]

求差集(排序输出)

np.setdiff1d(arr9,arr10)  #[ 2  7  8 23 26 29]

Pandas

pandas简介
在这里插入图片描述
pandas特性
在这里插入图片描述
pandas中主要数据结构
在这里插入图片描述

series
在这里插入图片描述
series创建

通过数组创建一个series

np.random.seed(1234)
arr1=np.random.randint(1,10,5)  #[4 7 6 5 9]
ser1=pd.Series(arr1) #不指定索引,下标即索引
ser2=pd.Series(arr1,index=["a","b","c","d","e"]) #指定索引

通过字典创建series

dict1={"a":1,"b":2,"c":3}
ser3=pd.Series(dict1)

通过标量生成series 有点类似广播

ser4=pd.Series(3,index=["aa","bb","cc"],name="data")

series常用属性

ser4.index   #Index(['aa', 'bb', 'cc'], dtype='object')
ser4.values    #[3 3 3]
ser4.name   #data
ser4.rename("数值",inplace=True)   #修改名字需要设置inplace=True,否则默认不允许改

series特性

'''
ser4:
a    4
b    7
c    6
d    5
e    9
dtype: int32
'''

series的数组特性 个别举例如下

ser2[1]   #7  下标查找值
ser2[1:4]  #切片,返回索引和值,不包含最后
ser2[[1,3,4]]   #查找特定位置元素,将其索引组合成元组
ser2>6      #返回布尔类型
ser2[ser2>6]  #切片true元素

series的字典特性

ser2["a"]   #4
ser2["c":"e"]  #切片
ser2[["a","c","d"]]  ##查找特定位置元素,将其索引组合成元组
ser2["a"]=10   #修改元素值
ser2.get("b","不存在")  #7   后面的“不存在”是设置的没找到时的返回值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值