app开发者平台在数字化时代的重要性与发展趋势解析
880
2022-10-01
【Python】数据分析.numpy.数组中常用的统计函数及numpy.nan/inf
文章目录
numpy.数组中常用的统计函数及numpy.nan/inf
一、Python --- 数据分析-numpy.数组中常用的统计函数
1.1 求和函数:sum1.2 求均值函数:mean1.3 求中值(中位数)函数:median1.4 求最大值函数:max1.5 求最小值函数:min1.6 求极值函数:ptp1.7 求标准差函数:std
二、Python --- 数据分析-numpy.nan/inf
2.1 关于Nan2.2 关于Inf
numpy.数组中常用的统计函数及numpy.nan/inf
一、Python — 数据分析-numpy.数组中常用的统计函数
假设有一个二维数组t
t = np.arange(24).reshape((4,6))print(t)# [[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]# [12 13 14 15 16 17]# [18 19 20 21 22 23]]
axis属性:指定统计的轴方向axis=0 行之间的计算axis=1 列之间的计算
1.1 求和函数:sum
t = np.arange(24).reshape((4,6))print(t)# [[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]# [12 13 14 15 16 17]# [18 19 20 21 22 23]]print(t.sum(axis=0))# [36 40 44 48 52 56]print(t.sum(axis=1))# [ 15 51 87 123]
返回顶部
1.2 求均值函数:mean
t = np.arange(24).reshape((4,6))print(t)# [[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]# [12 13 14 15 16 17]# [18 19 20 21 22 23]]print(t.mean(axis=0))# [ 9. 10. 11. 12. 13. 14.]print(t.mean(axis=1))# [ 2.5 8.5 14.5 20.5]
返回顶部
1.3 求中值(中位数)函数:median
t = np.arange(24).reshape((4,6))print(t)# [[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]# [12 13 14 15 16 17]# [18 19 20 21 22 23]]print(np.median(t,axis=0))# [ 9. 10. 11. 12. 13. 14.]print(np.median(t,axis=1))# [ 2.5 8.5 14.5 20.5]
返回顶部
1.4 求最大值函数:max
t = np.arange(24).reshape((4,6))print(t)# [[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]# [12 13 14 15 16 17]# [18 19 20 21 22 23]]print(t.max(axis=0))#[18 19 20 21 22 23]print(t.max(axis=1))#[ 5 11 17 23]
返回顶部
1.5 求最小值函数:min
t = np.arange(24).reshape((4,6))print(t)# [[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]# [12 13 14 15 16 17]# [18 19 20 21 22 23]]print(t.min(axis=0))#[0 1 2 3 4 5]print(t.min(axis=1))#[ 0 6 12 18]
返回顶部
1.6 求极值函数:ptp
t = np.arange(24).reshape((4,6))print(t)# [[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]# [12 13 14 15 16 17]# [18 19 20 21 22 23]]print(np.ptp(t,axis=0))# [18 18 18 18 18 18]print(np.ptp(t,axis=1))# [5 5 5 5]
返回顶部
1.7 求标准差函数:std
标准差表示一组数据平均分散程度的度量,反映出数据的波动稳定情况,值越大表示越不稳定。
公式:
t = np.arange(24).reshape((4,6))print(t)# [[ 0 1 2 3 4 5]# [ 6 7 8 9 10 11]# [12 13 14 15 16 17]# [18 19 20 21 22 23]]print(t.std(axis=0))#[6.70820393 6.70820393 6.70820393 6.70820393 6.70820393 6.70820393]print(t.std(axis=1))#[1.70782513 1.70782513 1.70782513 1.70782513]
返回顶部
二、Python — 数据分析-numpy.nan/inf
2.1 关于Nan
nan:not an number 表示不是一个数字
当我们读取本地文件为float的时候,如果有缺失,就会出现nan 当作了一个不合适的计算的时候,也会出现nan
umpy中的nan注意点:
1.两个nan是不相等的2.np.nan!=np.nan3.判断数组中nan的个数 — np.count_nonzero()4.nan和任何值计算结果都是nan
判断数组中nan的个数
import numpy as np#创建数组t = np.arange(12).reshape((3,4)).astype("float")t[2,2:] = np.nanprint(t)# [[ 0. 1. 2. 3.]# [ 4. 5. 6. 7.]# [ 8. 9. nan nan]]print(np.count_nonzero(t)) #不为零的元素的个数# 11print(t!=t) #判断哪些是nan(bool型为true的就是nan) # [[False False False False]# [False False False False]# [False False True True]]print(np.count_nonzero(t!=t))# true=1;false=0# 2
其中 print(t!=t)相当于print(np.isnan(t))!!!
返回顶部
2.2 关于Inf
inf: infinity 表示正无穷-inf: 表示负无穷
当一个数除以0(Python中直接报错,numpy中是inf或-inf)
一般将数据缺失的值替换为均值或是中值,如下面例子所示:
#关于numpy中的nanimport numpy as np#创建数组t = np.arange(12).reshape((3,4)).astype("float")#将部分数换为nant[1,2:] = np.nan#print(t)# [[ 0. 1. 2. 3.]# [ 4. 5. nan nan]# [ 8. 9. 10. 11.]]def fill_ndarray(t): for i in range(t.shape[1]): # 遍历每一列 temp_col = t[:,i] # 当前的一列 nan_num = np.count_nonzero(temp_col!=temp_col) if nan_num !=0: # 不为0,说明当前列中含有nan temp_not_nan_col = temp_col[temp_col==temp_col] # 当前一列不为nan的array # 选中当前为nan的位置,把值赋为不为nan的均值 temp_col[np.isnan(temp_col)] = temp_not_nan_col.mean() return tif __name__=='__main__': # 创建数组 t1 = np.arange(12).reshape((3, 4)).astype("float") t1[2,2:] = np.nan print(t1) t1 = fill_ndarray(t1) print(t1)# [[ 0. 1. 2. 3.]# [ 4. 5. 6. 7.]# [ 8. 9. nan nan]]# [[0. 1. 2. 3.]# [4. 5. 6. 7.]# [8. 9. 4. 5.]]
返回顶部
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~