赞
踩
Python数据分析基础教程:numpy 学习指南的第三章
数据从雅虎财经上下载的csv文件,格式与教程上的略有不同。
雅虎财经相关数据下载,https://hk.finance.yahoo.com/quote/AAPL/history?p=AAPL
我自己使用的数据已经上传。
1.导入csv文件以及相关数据
使用numpy导入相关csv文件
ApplData = loadtxt('C:/Users/wxh/PycharmProjects/untitled/practice/appldata.csv', dtype=str, delimiter=',')
文件是路径根据自己的调整。
由于csv文件中含有字符,所以读取的类型全部设置成字符型了。
之后对于每一个操作数据进行读取。
- OpenData = ApplData[1:, 1].astype(float) # 读入开盘价
- HighData = ApplData[1:, 2].astype(float) # 读入最高价
- LowData = ApplData[1:, 3].astype(float) # 读入最低价
- CloseData = ApplData[1:, 4].astype(float) # 读入成交价
- ADJCloseData = ApplData[1:, 5].astype(float) # 读入ADJ成交价
- VolumeData = ApplData[1:, 6].astype(int) # 读入成交量
对于每一列的数据进行切片操作,就可以得到完整数据了要进行数据类型的转换。
转换之后貌似有一点点数据小数位数的精度问题,目前还没解决。
之后是算术平均数以及加权平均数,中位数,方差,最大值,最小值,极差的相关计算。
- Avg_OpenData = mean(OpenData) # 开盘价的算数平均数
- VMAP = average(CloseData, weights=VolumeData) # 成交价与成交量的加权平均数
- Max_HighData = max(HighData) # 历史最高价的最大值
- Low_LowData = min(LowData) # 历史最低价的最小值
- Ptp_CloseData = ptp(CloseData) # 成交价的极差
- Median_CloseData = median(CloseData) # 成交价的中位数
- Var_CloseData = var(CloseData) # 成交价的方差
- Population_Variance_CloseData = nansum(((CloseData - mean(CloseData)) ** 2))/(len(CloseData) - 1)
- # 由概率论知识可得,样本的无偏估计量为离差平方和除以样本估计量-1
- Rate_Return = diff(CloseData)/CloseData[:-1] # 股票收益率的计算
- StandardDeviation_Rate_Return = std(Rate_Return) # 收益率的标准差
- LogRate_Return = diff(log(CloseData)) # 对数收益率
- Index_Position = where(Rate_Return > 0) # 收益率大于0的索引
- Volatility_Annual = (std(LogRate_Return)/mean(LogRate_Return))/sqrt(1.0/252.0)
- # 股票的年波动率,对数收益率的标准差除以对数收益率的均值,再除以交易天数(252天)倒数的平方根
值得注意的是,diff是对于一个列表后一项减去前一项,也就是差分运算吧。
std是求标准差。
使用where可以找到符合条件的索引序号,有一点像sql里面的where。
这是完整的代码:
- # -*- coding:utf-8 -*-
- from numpy import *
- ApplData = loadtxt('C:/Users/wxh/PycharmProjects/untitled/practice/appldata.csv', dtype=str, delimiter=',')
- # 将股票数据文件读入,由于含有字符,所有的数据类型全部变为字符串型
- OpenData = ApplData[1:, 1].astype(float) # 读入开盘价
- HighData = ApplData[1:, 2].astype(float) # 读入最高价
- LowData = ApplData[1:, 3].astype(float) # 读入最低价
- CloseData = ApplData[1:, 4].astype(float) # 读入成交价
- ADJCloseData = ApplData[1:, 5].astype(float) # 读入ADJ成交价
- VolumeData = ApplData[1:, 6].astype(int) # 读入成交量
-
- Avg_OpenData = mean(OpenData) # 开盘价的算数平均数
- VMAP = average(CloseData, weights=VolumeData) # 成交价与成交量的加权平均数
- Max_HighData = max(HighData) # 历史最高价的最大值
- Low_LowData = min(LowData) # 历史最低价的最小值
- Ptp_CloseData = ptp(CloseData) # 成交价的极差
- Median_CloseData = median(CloseData) # 成交价的中位数
- Var_CloseData = var(CloseData) # 成交价的方差
- Population_Variance_CloseData = nansum(((CloseData - mean(CloseData)) ** 2))/(len(CloseData) - 1)
- # 由概率论知识可得,样本的无偏估计量为离差平方和除以样本估计量-1
-
- Rate_Return = diff(CloseData)/CloseData[:-1] # 股票收益率的计算
- StandardDeviation_Rate_Return = std(Rate_Return) # 收益率的标准差
- LogRate_Return = diff(log(CloseData)) # 对数收益率
- Index_Position = where(Rate_Return > 0) # 收益率大于0的索引
- Volatility_Annual = (std(LogRate_Return)/mean(LogRate_Return))/sqrt(1.0/252.0)
- # 股票的年波动率,对数收益率的标准差除以对数收益率的均值,再除以交易天数(252天)倒数的平方根
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。