python统计方法median、var、mean、diff
2018-01-17 11:44
941 查看
import numpy as np ''' numpy.median 计算沿指定轴的中位数 返回数组元素的中位数 median(a, axis=None, out=None,overwrite_input=False, keepdims=False) 各参数为: a:输入的数组; axis:计算哪个 轴 上的中位数,比如输入是二维数组,那么axis=0对应行,axis=1对应列; out:用于放置求取中位数后的数组。 它必须具有与预期输出相同的形状和缓冲区长度; overwrite_input :一个bool型的参数,默认为Flase。 如果为True那么将直接在数组内存中计算, 这意味着计算之后,原数组没办法保存, 但是好处在于节省内存资源,Flase则相反; keepdims:一个bool型的参数,默认为Flase。 如果为True那么求取中位数的那个轴将保留在结果中; ''' a = np.array([[10, 7, 4], [ 3, 2, 1]]) print( np.median(a) ) # 3.5 m = np.median(a, axis=0) # [ 6.5 4.5 2.5] print( np.median(a, axis=1) ) # [ 7. 2.] out = np.zeros_like(m) # 返回与给定数组相同的形状和类型的0数组 #print(out) # [ 0. 0. 0.] 都替换为 0 print( np.median(a, axis=0, out=m) ) # [ 6.5 4.5 2.5] b = a.copy() #复制 一个 a 对象 #print('b :',b) c = np.median(b, axis=1, overwrite_input=True) #print('c :',c) #范例 - 统计分析 c=np.loadtxt('data.csv', delimiter=',', usecols=(6,), unpack=True) #print( ' c : ', c ) print ("median =", np.median(c)) #取中位数 sorted = np.sort(c) # 排序 也可用 np.msort print ("sorted =", sorted) # 一行数组 N = len(c) print ("middle =", sorted[(N - 1)/2]) print ("average middle =", (sorted[N /2] + sorted[(N - 1) / 2]) / 2) print ("variance =", np.var(c)) # var计算轴上的 方差 print ("variance from definition =", np.mean((c - c.mean())**2)) ''' 方差的定义 : c 减去 轴上 mean()算术平均值 ,再平方,再求均值 ''' #范例:股票收益率 returns = np.diff( c ) / c[ : -1] print( 'np.diff( c ) ' , np.diff( c ) ) # #print( 'c[ : -1] ' , c[ : -1] ) # 截掉最后一个元素 print ("Standard deviation =", np.std(returns)) # numpy.std() 计算矩阵 标准差 logreturns = np.diff( np.log(c) ) posretindices = np.where(returns > 0) print ("Indices with positive returns", posretindices) annual_volatility = np.std(logreturns)/np.mean(logreturns) annual_volatility = annual_volatility / np.sqrt(1./252.) print ("Annual volatility", annual_volatility) print ("Monthly volatility", annual_volatility * np.sqrt(1./12.)) ''' diff 沿着指定轴计算第N维的离散差值 参数: a:输入矩阵 n:可选,代表要执行几次差值 this减去前一个元素 axis:默认是从最后一个开始 ''' # 从 2 到 14(不包括结束位置)各数值,reshape按照 3 行 4列 的矩阵排布 A = np.arange(2 , 14).reshape((3 , 4)); A[1 , 1] = 8 # A矩阵里 第一行 第一列 的 值 赋值 为 8 print('A:' , A) ''' A: [[ 2 3 4 5] [ 6 8 8 9] [10 11 12 13]] ''' # 从输出结果可以看出,其实 diff函数就是执行的是 this减去前一个元素 。 print(np.diff(A)) ''' [[1 1 1] [2 0 1] [1 1 1]] ''' print(np.diff(A,n=2)) # n 可选,代表要执行几次差值 this减去前一个元素 ''' [[ 0 0] [-2 1] [ 0 0]] ''' ''' data.csv AAPL,28-01-2017, ,344.17,344.4,333.53,336.1,21144800 AAPL,31-01-2017, ,335.8,340.04,334.3,339.32,13473000 AAPL,01-02-2017, ,341.3,345.65,340.98,345.03,15236800 AAPL,02-02-2017, ,344.45,345.25,343.55,344.32,9242600 AAPL,03-02-2017, ,343.8,344.24,338.55,343.44,14064100 AAPL,04-02-2017, ,343.61,346.7,343.51,346.5,11494200 AAPL,07-02-2017, ,347.89,353.25,347.64,351.88,17322100 AAPL,08-02-2017, ,353.68,355.52,352.15,355.2,13608500 AAPL,09-02-2017, ,355.19,359,354.87,358.16,17240800 AAPL,10-02-2017, ,357.39,360,348,354.54,33162400 AAPL,11-02-2017, ,354.75,357.8,353.54,356.85,13127500 AAPL,14-02-2017, ,356.79,359.48,356.71,359.18,11086200 AAPL,15-02-2017, ,359.19,359.97,357.55,359.9,10149000 AAPL,16-02-2017, ,360.8,364.9,360.5,363.13,17184100 AAPL,17-02-2017, ,357.1,360.27,356.52,358.3,18949000 AAPL,18-02-2017, ,358.21,359.5,349.52,350.56,29144500 AAPL,22-02-2017, ,342.05,345.4,337.72,338.61,31162200 AAPL,23-02-2017, ,338.77,344.64,338.61,342.62,23994700 AAPL,24-02-2017, ,344.02,345.15,338.37,342.88,17853500 AAPL,25-02-2017, ,345.29,348.43,344.8,348.16,13572000 AAPL,28-02-2017, ,351.21,355.05,351.12,353.21,14395400 AAPL,01-03-2017, ,355.47,355.72,347.68,349.31,16290300 AAPL,02-03-2017, ,349.96,354.35,348.4,352.12,21521000 AAPL,03-03-2017, ,357.2,359.79,355.92,359.56,17885200 AAPL,04-03-2017, ,360.07,360.29,357.75,360,16188000 AAPL,07-03-2017, ,361.11,361.67,351.31,355.36,19504300 AAPL,08-03-2017, ,354.91,357.4,352.25,355.76,12718000 AAPL,09-03-2017, ,354.69,354.76,350.6,352.47,16192700 AAPL,10-03-2017, ,349.69,349.77,344.9,346.67,18138800 AAPL,11-03-2017, ,345.4,352.32,345,351.99,16824200 '''
相关文章推荐
- python实现统计代码行数的方法
- Python统计列表中的重复项出现的次数的方法
- 用python学概率与统计(第三章)描述性统计:数值方法
- 用Python中的字典来处理索引统计的方法
- Python统计列表中的重复项出现的次数的方法
- Python开发的单词频率统计工具wordsworth使用方法
- Python统计列表中的重复项出现的次数的方法
- python 利用dictionary的get( ) 方法做计数统计
- 【笔记】一个分组统计的python与sql方法
- python统计列表元素重复次数的N中方法
- python实现统计代码行数的方法
- python jieba分词并统计词频后输出结果到Excel和txt文档方法
- Python统计列表中的重复项出现的次数的方法
- python统计词频的方法
- Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
- dpkg: error processing /var/cache/apt/archives/python-apport_2.0.1-0ubuntu9_all.deb 解决方法
- python调用caffe接口进行classify时提示Mean shape incompatible with input shape错误的解决方法
- python统计一个文本中重复行数的方法
- TensorFlow的‘Did you mean to set reuse=None in VarScope?’解决方法
- Python读取系统文件夹内所有文件并统计数量的方法