3-01-3 数据统计

3.1.3 数据统计

函数元素及描述
amin数组中的元素沿指定轴的最小值
amax数组中的元素沿指定轴的最大值
ptp计算数组中元素最大值与最小值的差
percentile百分位数
median数组中元素的中位数
mean数组中元素的算术平均值
std数组中元素的标准差
var数组中元素的方差

amin() 用于计算数组中的元素沿指定轴的最小值。
amax() 用于计算数组中的元素沿指定轴的最大值。

实例

import numpy as np 
  
x = np.random.randint(1, high = 10, size=(3,4))
print ('原始数组:\n', x)
print ('调用 amin() 函数,找出轴 0 最小值:\n', np.amin(x,0))
print ('调用 amax() 函数,找出轴 0 最大值:\n', np.amax(x,0))
  
输出结果为:
原始数组:
 [[5 7 2 5]
 [5 2 9 8]
 [8 9 9 9]]
调用 amin() 函数,找出轴 0 最小值:
 [5 2 2 5]
调用 amax() 函数,找出轴 0 最大值:
 [8 9 9 9]

ptp() 函数计算数组中元素最大值与最小值的差。

实例

import numpy as np 
  
x = np.random.randint(1, high = 10, size=(3,4))
print ('原始数组:\n', x)
print ('沿轴 0,调用 ptp() 函数:\n', np.ptp(x,0))
print ('对整个数组,调用 ptp() 函数:\n', np.ptp(x))
  
输出结果为:
  
原始数组:
 [[7 5 1 3]
 [7 4 5 3]
 [8 1 3 4]]
沿轴 0,调用 ptp() 函数:
 [1 4 4 1]
对整个数组,调用 ptp() 函数:
 7

percentile() 百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。第 p 个百分位数是这样一个值,它使得至少有 p% 的数据项小于或等于这个值,且至少有 (100-p)% 的数据项大于或等于这个值。比方说输入一笔数据里面是本次考试语文的成绩,如要得到前 30% 的分数,我们就可以利用这个函数来取得。

percentile(a, q, axis)

  • a: 输入数组
  • q: 要计算的百分位数,在 0 ~ 100 之间
  • axis: 沿着它计算百分位数的轴

实例

import numpy as np 
x = np.random.randint(0, high = 100, size=(20)) 
print ('原始数组:\n', x)
  
print ('调用 percentile() 函数:')
# 70% 的分位数
print (np.sort(x))
print (np.arange(1,len(x)+1))
below_70 = np.percentile(x, 70)
print ("70% 的分位数 \n", below_70) 
# 删除前 70% 的记录
print ("删除前 70% 的记录\n", x[x>below_70])
  
输出结果为:
  
原始数组:
 [30 79 21 11 93 78 59 13 70  9 15 13 75 26 33 45 84  1 26 77]
调用 percentile() 函数:
[ 1  9 11 13 13 15 21 26 26 30 33 45 59 70 75 77 78 79 84 93]
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20]
70% 的分位数 
 71.5
删除前 70% 的记录
 [79 93 78 75 84 77]

median() 函数用于计算数组中元素的中位数(中值),若数组 x 元素个数 n 为奇数,则中位数为 (n+1)/2;若元素个数为偶数,则中位数为 (x[n/2]+x[(n/2)+1])/2。

实例

import numpy as np 
  
x = np.random.randint(60, high = 100, size=(11)) 
print ('原始数组:\n', x) 
  
print (np.sort(x))
print (np.arange(1,len(x)+1))
print ('调用 median() 函数:\n', np.median(x))
print('将数量修改成10个')
x1 = np.resize(x,10)
print (np.sort(x1))
print (np.arange(1,len(x1)+1))
print ('调用 median() 函数:\n', np.median(x1))
  
输出结果为:
  
原始数组:
 [81 86 88 85 99 98 69 65 73 83 76]
[65 69 73 76 81 83 85 86 88 98 99]
[ 1  2  3  4  5  6  7  8  9 10 11]
调用 median() 函数:
 83.0
将数量修改成10[65 69 73 81 83 85 86 88 98 99]
[ 1  2  3  4  5  6  7  8  9 10]
调用 median() 函数:
84.0

mean() 函数返回数组中元素的算术平均值。算术平均值是沿轴的元素的总和除以元素的数量。如果提供了轴,则沿其计算。以下实例可以发现,算术平均值有可能因为数据的集中,而导致偏离中位数,所以为了要让算术平均数有意义,通常会先分数个百分位数,在针对百分数来记算算术平均数。

实例

import numpy as np 
  
x = np.random.randint(0, high = 100, size=(11)) 
print ('原始数组:\n', x) 
  
print (np.sort(x))
print (np.arange(1,len(x)+1))
print ('调用 mean() 函数:\n', np.mean(x))
输出结果为:
  
原始数组:
 [96 80 70 26 71 80 47 87 78 31 84]
[26 31 47 70 71 78 80 80 84 87 96]
[ 1  2  3  4  5  6  7  8  9 10 11]
调用 mean() 函数:
 68.18181818181819

average() 加权平均值函数可以根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。加权平均值即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。比方说考虑数组 [1,2,3,4] 和相应的权重 [2,3,2,1] ,通过将相应元素的乘积相加,并将和除以权重的和,来计算加权平均值。此外,该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开。

加权平均值 = (1*2 + 2*3 + 3*2 + 4*1 )/(2 + 3 + 2 + 1)

实例

import numpy as np 
  
x = np.array([1,2,3,4])  
print ('原始数组:\n', x) 
wts = np.array([2,3,2,1])  
print ('权重数组:\n', wts) 
print ('计算加权平均值,调用 average() 函数:')
print (np.average(a,weights = wts))
输出结果为:
  
原始数组:
 [1 2 3 4]
权重数组:
 [2 3 2 1]
计算加权平均值,调用 average() 函数:
2.25

统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。以下实例我们用 randint() 函数来观察,如果设定的随机整数范围较大,那方差的值应该有较大的几率会较大。

实例

import numpy as np
  
x = np.random.randint(0, high = 100, size=(11)) 
print ('数组 1,数值范围 0 ~ 100:\n', x) 
print ('样本方差为:',np.var(x))
  
x1 = np.random.randint(0, high = 10, size=(11)) 
print ('数组 2,数值范围 0 ~ 10:\n', x) 
print ('样本方差为:',np.var(x1))
  
输出结果为:
数组 1,数值范围 0 ~ 100[18 73 56 69 77 31 34  8 87 23 65]
样本方差为: 670.512396694215
数组 2,数值范围 0 ~ 10[18 73 56 69 77 31 34  8 87 23 65]
样本方差为: 8.066115702479339

标准差是一组数据平均值分散程度的一种度量。因此,设定的随机整数范围较大,那标准差的值会较大。标准差是方差的算术平方根。

标准差公式如下:

std = sqrt(mean((x - x.mean())**2))

实例

import numpy as np
  
x = np.random.randint(0, high = 100, size=(11)) 
print ('数组 1,数值范围 0 ~ 100:\n', x) 
print ('样本标准差为:',np.std(x))
  
x1 = np.random.randint(0, high = 10, size=(11)) 
print ('数组 2,数值范围 0 ~ 10:\n', x) 
print ('样本标准差为:',np.std(x1))
  
输出结果为:
  
数组 1,数值范围 0 ~ 100[77 68 25 40 94  0 75 12 20 27 14]
样本标准差为: 30.353836197436834
数组 2,数值范围 0 ~ 10[77 68 25 40 94  0 75 12 20 27 14]
样本标准差为: 3.2320706972056685

Python数据处理-文章目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值