精华内容
下载资源
问答
  • Pingouin - 基于基于Pandas和NumPyPython3统计软件包
  • Pythonnumpy统计函数

    千次阅读 2018-11-30 00:25:10
    Pythonnumpy统计函数 axis = 0 / 1 / None 0代表column 1代表row None不加以区分 函数 含义 sum(a, axis=None) 根据给定轴axis计算数组a相关元素之和,axis整数或元组 mean(a, axis=None) 根据给定轴...

    Python中numpy的统计函数


    axis = 0 / 1 / None 0代表column 1代表row None不加以区分

    函数含义
    sum(a, axis=None)根据给定轴axis计算数组a相关元素之和,axis整数或元组
    mean(a, axis=None)根据给定轴axis计算数组a相关元素的期望,axis整数或元组
    average(a,axis=None,weights=None)根据给定轴axis计算数组a相关元素的加权平均值
    std(a, axis=None)根据给定轴axis计算数组a相关元素的标准差
    var(a, axis=None)根据给定轴axis计算数组a相关元素的方差
    min(a) max(a)计算数组a中元素的最小值、最大值
    argmin(a) argmax(a)计算数组a中元素最小值、最大值的降一维后下标
    unravel_index(index, shape)根据shape将一维下标index转换成多维下标
    ptp(a)计算数组a中元素最大值与最小值的差
    median(a)计算数组a中元素的中位数(中值)
    sum(a, axis=None) 元素和

    在这里插入图片描述

    mean(a, axis=None) 期望

    在这里插入图片描述

    average(a,axis=None,weights=None) 平均值

    在这里插入图片描述
    在这里插入图片描述
    按依次对同一列按顺序乘以权值 (权值数量为数组行/列元素数)
    如 61 + 102 + 19*3 / (1+2+3) = 13.83333333

    std(a, axis=None) 标准差

    在这里插入图片描述

    var(a, axis=None)

    在这里插入图片描述

    min(a) max(a) 最大最小值

    在这里插入图片描述

    argmin(a) argmax(a)

    在这里插入图片描述

    unravel_index(index, shape)

    在这里插入图片描述

    ptp(a)

    在这里插入图片描述

    median(a)

    在这里插入图片描述

    另:梯度函数
    np.gradient(f)
    两边边值为后项与前项的差
    中间值为此值的前项与后项的差除2

    一维时:

    在这里插入图片描述

    多维时:

    在这里插入图片描述
    前一数组为最外层的梯度
    后一数组为第二层维度的梯度

    展开全文
  • numpy统计函数 numpy直接提供统计类函数 np.std() np.var() np.average() numpy统计函数(1) Axis=none是统计函数的标配参数 import numpy as np a=np.arange(15).reshape(3,5) print(a) [[ 0 1 2 3 4] [ ...

    numpy的统计函数

    numpy直接提供统计类函数
    np.std()
    np.var()
    np.average()

    • numpy的统计函数(1)

    在这里插入图片描述
    Axis=none是统计函数的标配参数

    import numpy as np
    a=np.arange(15).reshape(3,5)
    print(a)
    [[ 0  1  2  3  4]
     [ 5  6  7  8  9]
     [10 11 12 13 14]]
    print(np.sum(a))   #对数组内所有元素求和
    105
    print(np.sum(a,axis=0))
    [15 18 21 24 27]
    #对数组内行列求和,axis=0,数组列求和,axis=1,数组行求和
    print(np.sum(a,axis=1))
    [10 35 60]
    print(np.average(a))        #对数组内所有元素求平均值
    7.0
    print(np.average(a,axis=0))        #对数组内列进行加权平均
    [5. 6. 7. 8. 9.]
    print(np.average(a,axis=1))        #对数组内行进行加权平均
    [ 2.  7. 12.]
    print(np.std(a))        #对数组求标准差
    4.320493798938574
    print(np.std(a,axis=0))        #对数组的列求标准差
    [4.0824829 4.0824829 4.0824829 4.0824829 4.0824829]
    print(np.std(a,axis=1))        #对数组的行求标准差
    [1.41421356 1.41421356 1.41421356]
    
    print(np.var(a))            #对数组进行求方差
    18.666666666666668
    print(np.var(a,axis=0))            #对数组的列进行求方差
    [16.66666667 16.66666667 16.66666667 16.66666667 16.66666667]
    print(np.var(a,axis=1))            #对数组的行进行求方差
    [2. 2. 2.]
    
    • numpy的统计函数(2)

    在这里插入图片描述

    import numpy as np
    a=np.random.randint(1,100,(3,4))
    print(a)
    [[42 11  9 84]
     [57 94 64 93]
     [85  3 41 38]]
    print(np.max(a))  #数组中最大值
    94
    print(np.min(a))       #数组中的最小值
    3
    print(np.argmax(a))     #返回数组扁平化之后,最大值的下标
    5
    print(np.argmin(a))     #返回数组扁平化之后,最小值的下标
    9
    print(np.unravel_index(np.argmax(a),(2,6)))  #将a扁平化后的最大值小标,转化为结构为(2,6)的下标。
    (0, 5)
    
    print(np.ptp(a))            #返回最大值与最小值的差
    91
    print(np.median(a))     #返回数组a中元素的中位数(中值)
    49.5
    

    numpy的梯度函数

    在这里插入图片描述
    **

    - 一维数组的梯度

    **
    在这里插入图片描述

    import numpy as np
    a=np.random.randint(1,20,(8))
    print(a)
    [17 12  2  7 12 17  9 11]
    b=np.gradient(a)
    print(b)
    [-5.  -7.5 -2.5  5.   5.  -1.5 -3.   2. ]
    

    **

    • 二维数组的梯度

    **
    在这里插入图片描述

    import numpy as np
    a=np.random.randint(1,20,(3,5))
    print(a)
    [[ 6  3 12  3  7]
     [19  2  6  3 18]
     [ 7  3 19  2  8]]
    b=np.gradient(a)
    print(b)
    [array([[ 13. ,  -1. ,  -6. ,   0. ,  11. ],
           [  0.5,   0. ,   3.5,  -0.5,   0.5],
           [-12. ,   1. ,  13. ,  -1. , -10. ]]), 
     array([[ -3. ,   3. ,   0. ,  -2.5,   4. ],
           [-17. ,  -6.5,   0.5,   6. ,  15. ],
           [ -4. ,   6. ,  -0.5,  -5.5,   6. ]])]
    
    展开全文
  • python-Numpy: 统计相关

    2020-11-27 19:58:55
    统计相关 次序统计 计算最小值 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. # 【例】计算...

    统计相关

    次序统计

    计算最小值

    • 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)
    
    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]
    

    计算最大值

    • 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.

    # 【例】计算最大值
    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.amax(x)
    print(y) # 35
    y = np.amax(x, axis=0)
    print(y) # [31 32 33 34 35]
    y = np.amax(x, axis=1)
    print(y) # [15 20 25 30 35]
    
    
    35
    [31 32 33 34 35]
    [15 20 25 30 35]
    

    计算极差

    • 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’.

    import numpy as np
    
    np.random.seed(20201127)
    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))
    
    [[15 13  2  2 16]
     [ 5  5 13 10 16]
     [ 1 19  5 12  0]
     [17  8  7 14  2]]
    19
    [16 14 11 12 16]
    [14 11 19 15]
    

    计算分位数

    • 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。

    import numpy as np
    
    np.random.seed(20201127)
    x = np.random.randint(0,20,size=[4,5])
    print(x)
    
    print(np.percentile(x,[25,50]))
    
    print(np.percentile(x,[25,50]))
    
    print(np.percentile(x,[25,50]))
    
    print(np.percentile(x,[25,50],axis=0))
    
    print(np.percentile(x,[20,50],axis=1))
    
    [[15 13  2  2 16]
     [ 5  5 13 10 16]
     [ 1 19  5 12  0]
     [17  8  7 14  2]]
    [4.25 9.  ]
    [4.25 9.  ]
    [4.25 9.  ]
    [[ 4.    7.25  4.25  8.    1.5 ]
     [10.   10.5   6.   11.    9.  ]]
    [[ 2.   5.   0.8  6. ]
     [13.  10.   5.   8. ]]
    

    均值与方差

    计算中位数

    • 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.

    # 【例】计算中位数
    import numpy as np
    
    np.random.seed(20201127)
    x = 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))
    
    [[15 13  2  2 16]
     [ 5  5 13 10 16]
     [ 1 19  5 12  0]
     [17  8  7 14  2]]
    9.0
    9.0
    [10.  10.5  6.  11.   9. ]
    [10.  10.5  6.  11.   9. ]
    [13. 10.  5.  8.]
    [13. 10.  5.  8.]
    

    计算平均值

    • 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.]
    

    计算加权平均值

    • numpy.average(a[, axis=None, weights=None, returned=False])

    Compute the weighted average along the specified axis.

    mean 和average 都是计算均值的函数,在不指定权重的时候average 和mean 是一样的。指定权重后, average 可以计算加权平均值。

    【例】计算加权平均值(将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。)

    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.average(x)
    print(y)
    print(np.mean(x))
    
    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)
    
    z = np.average(x,axis=0,weights=y)
    print(z)
    
    z = np.average(x,axis=1,weights=y)
    print(z)
    
    23.0
    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
    [25.54545455 26.16666667 26.84615385 27.57142857 28.33333333]
    [13.66666667 18.25       23.15384615 28.11111111 33.08695652]
    [13.66666667 18.25       23.15384615 28.11111111 33.08695652]
    

    计算方差

    • numpy.var(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])

    Computethe variance along the specified axis.

    • ddof=0:是“Delta Degrees of Freedom”,表示自由度的个数。

    要注意方差和样本方差的无偏估计,方差公式中分母上是n ;样本方差无偏估计公式中分母上是n‐1 ( n 为样本个数)。

    # 【例】计算方差
    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.var(x)
    print(y)
    y = np.mean((x - np.mean(x)) ** 2)
    print(y)
    
    y = np.var(x,ddof=1)
    print(y)
    
    y = np.var(x,axis=0)
    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
    [50. 50. 50. 50. 50.]
    54.166666666666664
    [50. 50. 50. 50. 50.]
    [2. 2. 2. 2. 2.]
    

    计算标准差

    numpy.std(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])

    Compute the standard deviation 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.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)
    
    
    7.211102550927978
    7.211102550927978
    [7.07106781 7.07106781 7.07106781 7.07106781 7.07106781]
    [1.41421356 1.41421356 1.41421356 1.41421356 1.41421356]
    

    相关

    计算协方差矩阵

    • numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None)

    Estimate a covariance matrix, given data and weights.

    # 【例】计算协方差矩阵
    
    import numpy as np
    
    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))
    
    print(np.var(x))
    print(np.var(x,ddof=1))
    print(np.var(y))
    print(np.var(y,ddof=1))
    
    z = np.mean((x-np.mean(x)) * (y - np.mean(y)))
    print(z)
    
    z = np.sum((x - np.mean(x)) * (y - np.mean(y)))/(len(x)-1)
    print(z)
    
    z = np.dot(x - np.mean(x),y - np.mean(y))/(len(x)-1)
    print(z)
    
    3.7
    8.5
    [[3.7  5.25]
     [5.25 8.5 ]]
    2.96
    3.7
    6.8
    8.5
    4.2
    5.25
    5.25
    

    计算相关系数

    • 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 维方阵。

    # 【例】计算相关系数
    import numpy as np
    np.random.seed(20201127)
    x, y = np.random.randint(0,20,size=[2,4])
    print(x)
    print(y)
    
    z = np.corrcoef(x,y)
    print(z)
    
    a = np.dot(x-np.mean(x),y-np.mean(y))
    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*c))
    
    [15 13  2  2]
    [16  5  5 13]
    [[1.        0.2465653]
     [0.2465653 1.       ]]
    0.246565302221662
    

    直方图

    • 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中的位置。

    # 【例】
    import numpy as np
    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)
    print(inds)
    for n in range(x.size):
        print(bins[inds[n]-1],'<=',x[n],'<',bins[inds[n]])
    
    [1 4 3 2]
    0.0 <= 0.2 < 1.0
    4.0 <= 6.4 < 10.0
    2.5 <= 3.0 < 4.0
    1.0 <= 1.6 < 2.5
    
    # 【例】
    import numpy as np
    x = np.array([1.2, 10.0, 12.4, 15.5, 20.])
    bins = np.array([0, 5, 10, 15, 20])
    inds = np.digitize(x, bins, right=True)
    print(inds) # [1 2 3 4 4]
    inds = np.digitize(x, bins, right=False)
    print(inds)
    
    [1 2 3 4 4]
    [1 3 3 4 5]
    
    
    
    展开全文
  • 主要介绍了Python实现Mysql数据统计的实例代码,给大家介绍了Python数据分析numpy统计函数的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • python 基于numpy统计分析

    千次阅读 2018-09-26 19:28:24
    注:本文一下代码均在jupter notebook中完成 ...import numpy as np #导入模块 #准备一个数据 data arr=np.array(range(6)) arr np.savetxt('arr.txt',arr) #运行 arr保存到当前文件夹中,运...

    注:本文一下代码均在jupyter notebook中完成

    一、文件读写

    1.利用savetxt函数将数据存储到文件

    语法:np.savetxt(filename,data)

    import numpy as np #导入模块
    #准备一个数据 data 
    arr=np.array(range(6))
    arr
    
    np.savetxt('arr.txt',arr) #运行   arr保存到当前文件夹中,运行结果是科学计数法
    

    2.读取csv文件

    语法:loadtxt(fname, dtype=, comments=’#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=‘bytes’)
    fname: str 读取的CSV文件名
    delimiter:str 数据的分割符
    usecols:tuple(元组) 执行加载数据文件中的哪些列
    unpack:bool(布尔值) 是否将加载的数据拆分为多个组 true拆 false不拆
    skipprows:int 跳过多少行 一般用于跳过前几行的描述性文字
    encoding:bytes 编码格式
    注:主要参数就以上

    需求:将CSV文件(如下图)中的收盘价和成交量分别放入数组

    #用close这个变量存放收盘价,用amount这个变量来存放成交量
    close,amount=np.loadtxt('data.csv',delimiter=',',usecols=(6,7),unpack=True,skiprows=1)
    #也可以用负值
    #close,amount=np.loadtxt('data.csv',delimiter=',',usecols=(-2,-1),unpack=True,skiprows=1)
    
    close #输出来看一看 
    
    array([336.1 , 339.32, 345.03, 344.32, 343.44, 346.5 , 351.88, 355.2 ,
           358.16, 354.54, 356.85, 359.18, 359.9 , 363.13, 358.3 , 350.56,
           338.61, 342.62, 342.88, 348.16, 353.21, 349.31, 352.12, 359.56,
           360.  , 355.36, 355.76, 352.47, 346.67, 351.99])
    
    amount #输出来看一看
    
    array([21144800., 13473000., 15236800.,  9242600., 14064100., 11494200.,
           17322100., 13608500., 17240800., 33162400., 13127500., 11086200.,
           10149000., 17184100., 18949000., 29144500., 31162200., 23994700.,
           17853500., 13572000., 14395400., 16290300., 21521000., 17885200.,
           16188000., 19504300., 12718000., 16192700., 18138800., 16824200.])
    

    二、基于Numpy的股价统计分析应用

    1.利用average函数实现计算成交量加权平均价格

    成交量加权平均价格:VWAP(Volume-Weighted Average Price,成交量加权平均价格)是一个非常重要的经济学量,代表着金融资产的“平均”价格。

    某个价格的成交量越高,该价格所占的权重就越大。所以本需求中需要用成交量为权重,计算价格的平均值。利用average函数完成。

    语法:np.average()

    # 成交量加权平均价格,计算每一天收盘价的加权平均数
    vwap=np.average(close,weights=amount)   #weight :权重
    vwap #输出vwap
    
    350.5895493532009 
    
    #正常的close收盘价平均数 np.mean()算术平均数
    np.mean(close)
    
    351.0376666666667
    

    2.min函数和max函数实现计算最大值和最小值

    语法:
    np.max() 最大值
    np.min() 最小值
    需求:计算股价近期最高价的最大值和最低价的最小值

    #将csv文件中的最高价用high变量存储,最低价用low变量存储
    high,low=np.loadtxt('data.csv',delimiter=',',usecols=(4,5),unpack=True,skiprows=1)
    
    np.max(high) #计算最高价中的最大值
    
    364.9
    
    np.min(low)#计算最低价中的最小值
    
    333.53
    

    3.ptp函数计算数组元素的极差

    语法:np.ptp()

    np.ptp(high) #计算最高价这一列的极差
    
    24.859999999999957
    

    相当于:

    np.max(high)-np.min(high)
    
    24.859999999999957
    

    4.计算收盘价的中位数

    语法:np.median()

    #求收盘价的中位数
    np.median(close)
    

    另一种求中位数的方法:

    # 中位数 先排序 再取中间
    sorted_close=np.sort(close)
    sorted_close.size #看是奇数个还是偶数个
    
    30  #偶数个
    
    #长度
    N=sorted_close.size
    N1=int((N-1)//2) #取整数部分 #14
    N2=int(N/2) #15
    
    #求中位数
    (sorted_close[N1]+sorted_close[N2])/2
    

    5.利用方差明确投资风险的大小

    方差是指各个数据与所有数据算术平均数的离差平方和除以数据个数所得到的值。
    语法:np.var()

    # 计算方差 np.var()
    np.var(close)
    

    【注】方差越小表示股价越稳定,所以股价变动过于剧烈的股票一定会给持有者制造麻烦。投资需谨慎!!!

    6.计算股票收益率、年波动率及月波动率

    波动率(volatility)是对价格变动的一种度量。历史波动率可以根据历史价格数据计算得出。计算历史波动率(如年波动率或月波动率)时,需要用到对数收益率。

    • 年波动率等于对数收益率的标准差除以其均值,再除以交易日倒数的平方根,通常交易日取252天。
    • 月波动率等于对数收益率的标准差除以其均值,再除以交易月
      倒数的平方根,交易月为12月。

    要用到的变量:

    • 对数收益率, logreturns
    • 对数收益率的标准差, year_std
    • 对数收益率的均值,year_mean
    • 交易日倒数的平方根 day_reverse = np.sqrt(1/252)
    • 交易月倒数的平方根 month_reverse = np.sqrt(1/12)
    # 股票收益率:相邻两天的差除以前一天的价格
    returns=np.diff(close)/close[:-1]
    
    # 收盘价对数 np.log() 求对数函数,底数是e
    log_close=np.log(close)
    
    # 对数收益率 
    logreturns = np.diff( log_close) 
    logreturns #输出对数收益率
    
    array([ 0.00953488,  0.01668775, -0.00205991, -0.00255903,  0.00887039,
        0.01540739,  0.0093908 ,  0.0082988 , -0.01015864,  0.00649435,
        0.00650813,  0.00200256,  0.00893468, -0.01339027, -0.02183875,
       -0.03468287,  0.01177296,  0.00075857,  0.01528161,  0.01440064,
       -0.011103  ,  0.00801225,  0.02090904,  0.00122297, -0.01297267,
        0.00112499, -0.00929083, -0.01659219,  0.01522945]
    
    # 对数收益率 的均值
    year_mean = np.mean(logreturns)
    
    # 对数收益率的标准差
    year_std = np.std(logreturns)
    
    #计算年波动率 
    #年波动率等于对数收益率的标准差除以其均值,再除以交易日倒数的平方根,通常交易日取252天。
    year=year_std/year_mean/np.sqrt(1/252)
    
    #月波动率
    #月波动率等于对数收益率的标准差除以其均值,再除以交易月倒数的平方根,交易月为12月。
    month=year_std/year_mean/np.sqrt(1/12)
    

    获取对数收益率为正值的:(演示一下where的作用)
    方法一:

    posretindices=np.where(logreturns>0)   #where方法得到的是匹配条件的下标
    logreturns[posretindices] #输出下标为posretindices的logreturns中的值
    
    array([0.00953488, 0.01668775, 0.00887039, 0.01540739, 0.0093908 ,
           0.0082988 , 0.00649435, 0.00650813, 0.00200256, 0.00893468,
           0.01177296, 0.00075857, 0.01528161, 0.01440064, 0.00801225,
           0.02090904, 0.00122297, 0.00112499, 0.01522945])
    

    方法二:简单粗暴

    logreturns[logreturns>0]
    
    展开全文
  • Pingouin - 基于基于Pandas和NumPyPython3统计软件包 Pinouin 是一个用 Python 3 编写的开源统计包,主要基于 Pandas 和 NumPy。 下面列出了它的一些主要功能。 有关可用函数的完整列表,请参阅 API 文档。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,748
精华内容 22,699
关键字:

numpypython统计

python 订阅