Python Numpy 学习笔记(3)

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天)倒数的平方根








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值