计算股票的涨跌幅,并计算任意股票的协方差
所用数据来自与通达信。计算协方差时将非共有的日期数据删除。(ps:本文纯属python pandas练手文,供各位看官以消遣之用。涨跌幅和协方差用excel计算明显更为简单,)计算协方差所用库为pandas。
计算涨跌幅。有兴趣的朋友可将其中的代码放入循环中,进行改进。
# -*- codeing = utf-8 -*-
# @Time : 2021/3/12 17:16
# @AuThor : wuqi
# @file : 0001.py
# @SOFTWARE :PyCharm
#计算股票的涨跌幅
import xlrd
import xlwt
# from pandas import pd
filepath=r'C:\Users\wuqi001\Desktop\00.xlsx' #第一个文件的路径
sefilepath=r'C:\Users\wuqi001\Desktop\01.xlsx'#第二个文件的路径
#可任意往其中加入excel文件的地址
#文件的保存地址
savepath=r'C:\Users\wuqi001\Desktop\0.xls'
#计算涨幅
def getrate(filepath):
workbook=xlrd.open_workbook(filepath,encoding_override='utf-8')
a=workbook.sheet_by_index(0) #通过索引找到表
nums=a.nrows #得到总行数
cols=a.col_values(4) #取出第五列,即收盘价格
l_price=cols[4:-1] #取出所有整型值
# print(l_price)
ratelist=[]
for i in range(1,nums-5):
rate=(l_price-l_price1])/l_price1]
ratelist.append(rate)
# print(ratelist)
return ratelist
#取出该股票的日期
def getDate(filepath):
workbook = xlrd.open_workbook(filepath, encoding_override='utf-8')
a = workbook.sheet_by_index(0)
nums = a.nrows
dates=a.col_values(0)
id=a.cell_value(0,0)
l_data=dates[4:-1]
datalist=[]
for i in range(1,nums-5):
datalist.append(l_data)
# print(ratelist)
return datalist,id
if __name__ == '__main__':
#此过程可扩展
ratelist=getrate(filepath) #将涨跌赋给ratalist
ratelist2=getrate(sefilepath)
datelist1,id1=getDate(filepath) #将日期赋给datalist
datelist2,id2=getDate(sefilepath)
book=xlwt.Workbook(encoding='utf-8') #创建工作表
sheet=book.add_sheet('001',cell_overwrite_ok=True) #创建表单
# sheet.write(0,0,'涨跌')
sheet.write(0,0,'日期') #写入日期
sheet.write(0, 1, id1) #写入股票名
sheet.write(0, 3, '日期')
sheet.write(0, 4, id2)
for i in range(len(datelist1)): #写入数据
sheet.write(i+1,0,datelist1)
for i in range(len(ratelist)):
sheet.write(i+1,1,ratelist)
for j in range(len(datelist2)):
sheet.write(j+1,3,datelist2)
for j in range(len(ratelist2)):
sheet.write(j+1,4,ratelist2)
book.save(savepath)
计算协方差# -*- codeing = utf-8 -*-
# @Time : 2021/3/15 14:38
# @Author : wuqi
# @File : 0002.py
# @Software :PyCharm
import pandas as pd #导入pandas库
filepath=r'C:\Users\wuqi001\Desktop\0.xls'#读取文件
data=pd.read_excel(filepath)
# print(data.tail())
m=data.index
# print(len(m))
bank=data.iloc[:len(m),:2]
star=data.iloc[:len(m),3:5]
star=star.dropna() #删除缺失值
star=star.rename(columns={'日期.1':'日期'})
# b=bank.fillna(0).iloc[:,:]
# s=star.fillna(0).iloc[:,:] 将缺失值替换为0
# print(s)
# print(star)
# bank1=bank.set_index("日期")
# star1=star.set_index("日期.1") 设置索引
bank1=bank.append(star)
# print(bank1)
b=bank1.groupby("日期")
c=b.mean()
# print(c.head())
d=c.dropna(how="any") #删除所有带缺失值的行
e=d.reset_index() #重建索引
# print(e.head())
e.to_excel(r'C:\Users\wuqi001\Desktop\newdata.xls',sheet_name='newdata',index=False)
只想表示一下没看懂,最好直接告诉我买那支。:keai 谢谢分享,表示看不懂 是预测吗? 有求一个股票交割单的生成器各位大佬有吗 非常好的动心 请问做什么用的? 好家伙,看不懂 楼主厉害,练出这等代码。传闻“量化交易”吧,仿佛有些味道儿。
页:
[1]
2