Python零基础投喂(3.统计相关)

统计相关

一、次序统计量

1.计算最小值

# numpy.amin(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,
# where=np._NoValue]) Return the minimum of an array or minimum along an axis.
# 【例】计算最小值
import numpy as np
x=np.array([[11,12,13,14,15],
            [16,17,18,19,20],
            [21,22,23,24,25],
            [26,27,28,29,30],
            [31,32,33,34,35]])
y=np.amin(x)
print(y)

#axis=0,行,axis=1,列
y=np.amin(x,axis=0)
print(y)

y=np.amin(x,axis=1)
print(y)
11
[11 12 13 14 15]
[11 16 21 26 31]

2.计算最大值

# 参数
'''numpy.amax(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,
where=np._NoValue]) Return the maximum of an array or maximum along an axis.'''
'numpy.amax(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,\nwhere=np._NoValue]) Return the maximum of an array or maximum along an axis.'
x = np.array([[11, 12, 13, 14, 15],
              [16, 17, 18, 19, 20],
              [21, 22, 23, 24, 25],
              [26, 27, 28, 29, 30],
              [31, 32, 33, 34, 35]])
y=np.amax(x)
print(y)

y=np.amax(x,axis=0)
print(y)

y=np.amax(x,axis=1)
print(y)
35
[31 32 33 34 35]
[15 20 25 30 35]

3.计算极差

'''numpy.ptp(a, axis=None, out=None, keepdims=np._NoValue) Range of values (maximum -
minimum) along an axis. The name of the function comes from the acronym for 'peak to
peak'.
'''
np.random.seed(20200623)
x=np.random.randint(0,20,size=[4,5])
print(x)

print(np.ptp(x))
#行极差
print(np.ptp(x,axis=0))
#列极差
print(np.ptp(x,axis=1))
[[10  2  1  1 16]
 [18 11 10 14 10]
 [11  1  9 18  8]
 [16  2  0 15 16]]
18
[ 8 10 10 17  8]
[15  8 17 16]

4.计算分位数

'''numpy.percentile(a, q, axis=None, out=None, overwrite_input=False,
interpolation='linear', keepdims=False) Compute the q-th percentile of the data along
the specified axis. Returns the q-th percentile(s) of the array elements.
a:array,用来算分位数的对象,可以是多维的数组。
q:介于0-100的float,用来计算是几分位的参数,如四分之一位就是25,如要算两个位置
的数就[25,75]。
axis:坐标轴的方向,一维的就不用考虑了,多维的就用这个调整计算的维度方向,取值范
围0/1。'''

np.random.seed(20200623)
x=np.random.randint(0,20,size=[4,5])
print(x)

print(np.percentile(x,[25,50]))
print(np.percentile(x,[25,50],axis=0))
print(np.percentile(x,[25,50],axis=1))

二、均值与方差

1.计算中位数

'''numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False) Compute
the median along the specified axis. Returns the median of the array elements.'''
# 【例】计算中位数
np.random.randint(0,20,size=[4,5])
print(x)

print(np.percentile(x,50))
print(np.median(x))

print(np.percentile(x,50,axis=0))
print(np.median(x,axis=0))

print(np.percentile(x,50,axis=1))
print(np.median(x,axis=1))
[[10  2  1  1 16]
 [18 11 10 14 10]
 [11  1  9 18  8]
 [16  2  0 15 16]]
10.0
10.0
[13.5  2.   5.  14.5 13. ]
[13.5  2.   5.  14.5 13. ]
[ 2. 11.  9. 15.]
[ 2. 11.  9. 15.]

2.计算平均值

'''numpy.mean(a[, axis=None, dtype=None, out=None, keepdims=np._NoValue)]) Compute the
arithmetic mean along the specified axis.
'''
import numpy as np

# 例】计算平均值(沿轴的元素的总和除以元素的数量)。
x=np.array([[11,12,13,14,15],
            [16,17,18,19,20],
            [21,22,23,24,25],
            [26,27,28,29,30],
            [31,32,33,34,35]])
y=np.mean(x)
print(y)

y=np.mean(x,axis=0)
print(y)

y=np.mean(x,axis=1)
print(y)
23.0
[21. 22. 23. 24. 25.]
[13. 18. 23. 28. 33.]

3.计算加权平均值

x=np.array([[11,12,13,14,15],
            [16,17,18,19,20],
            [21,22,23,24,25],
            [26,27,28,29,30],
            [31,32,33,34,35]])
y=np.average(x)
print(y)

y=np.average(x,axis=0)
print(y)

y=np.average(x,axis=1)
print(y)

y=np.arange(1,26).reshape([5,5])
print(y)

z=np.average(x,weights=y)
print(z)
23.0
[21. 22. 23. 24. 25.]
[13. 18. 23. 28. 33.]
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]
 [11 12 13 14 15]
 [16 17 18 19 20]
 [21 22 23 24 25]]
27.0
z=np.average(x,axis=0,weights=y)
print(z)
[25.54545455 26.16666667 26.84615385 27.57142857 28.33333333]
z=np.average(x,axis=1,weights=y)
print(z)
[13.66666667 18.25       23.15384615 28.11111111 33.08695652]

4.计算方差

'''numpy.var(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue]) Compute
the variance along the specified axis.
ddof=0:是“Delta Degrees of Freedom”,表示自由度的个数。'''
# 要注意方差和样本方差的无偏估计,方差公式中分母上是 n ;样本方差无偏估计公式中分母上是 n‐1 ( n 为样本个数)。
x=np.array([[11,12,13,14,15],
            [16,17,18,19,20],
            [21,22,23,24,25],
            [26,27,28,29,30],
            [31,32,33,34,35]])
y=np.var(x)
print(y)
y=np.mean((x-np.mean(x))**2)
print(y)

y=np.var(x,ddof=1)
print(y)
y=np.sum((x-np.mean(x))**2)/(x.size-1)
print(y)

y=np.var(x,axis=0)
print(y)

y=np.var(x,axis=1)
print(y)

52.0
52.0
54.166666666666664
54.166666666666664
[50. 50. 50. 50. 50.]
[2. 2. 2. 2. 2.]

5.计算标准差

'''numpy.std(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue]) Compute
the standard deviation along the specified axis.
'''
# 标准差是一组数据平均值分散程度的一种度量,是方差的算术平方根。
y=np.std(x)
print(y)
y=np.sqrt(np.var(x))
print(y)

y=np.std(x,axis=0)
print(y)
y=np.std(x,axis=1)
print(y)

三、相关

1.计算协方差矩阵

'''numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None)
Estimate a covariance matrix, given data and weights.'''
# 【例】计算协方差矩阵
x = [1, 2, 3, 4, 6]
y = [0, 2, 5, 6, 7]
print(np.cov(x))
print(np.cov(y))
print(np.cov(x,y))
3.7
8.5
[[3.7  5.25]
 [5.25 8.5 ]]

2.计算相关系数

'''
numpy.corrcoef(x, y=None, rowvar=True, bias=np._NoValue, ddof=np._NoValue) Return
Pearson product-moment correlation coefficients.

理解了 np.cov() 函数之后,很容易理解 np.correlate() ,二者参数几乎一模一样。
np.cov() 描述的是两个向量协同变化的程度,它的取值可能非常大,也可能非常小,这就导致没法
直观地衡量二者协同变化的程度。相关系数实际上是正则化的协方差, n 个变量的相关系数形成一
个 n 维方阵。

'''
# 【例】计算相关系数
np.random.seed(20200623)
x,y=np.random.randint(0,20,size=(2,4))
print(x)
print(y)
[10  2  1  1]
[16 18 11 10]
z=np.corrcoef(x,y)
print(z)
[[1.         0.48510096]
 [0.48510096 1.        ]]
# np.dot该函数的作用是获取两个元素a,b的乘积
a=np.dot(x-np.mean(x),y-np.mean(y))
a
24.5
b=np.sqrt(np.dot(x-np.mean(x),x-np.mean(x)))
c=np.sqrt(np.dot(y-np.mean(y),y-np.mean(y)))
print(a,b)
24.5 7.54983443527075
print(a/(b*c))
0.4851009629263671

3.numpy.digitize

'''
numpy.digitize(x, bins, right=False) Return the indices of the bins to which each value
in input array belongs.
x:numpy数组
bins:一维单调数组,必须是升序或者降序
right:间隔是否包含最右
返回值:x在bins中的位置。
'''
#  numpy.digitize 返回输入数组中每个值所属的bin的索引
x=np.array([0.2,6.4,3.0,1.6])
bins=np.array([0.0,1.0,2.5,4.0,10.0])
inds=np.digitize(x,bins)
inds
array([1, 4, 3, 2], dtype=int64)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值