好友
阅读权限10
听众
最后登录1970-1-1
|
所用数据来自与通达信。计算协方差时将非共有的日期数据删除。(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_price[i-1])/l_price[i-1]
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[j])
for j in range(len(ratelist2)):
sheet.write(j+1,4,ratelist2[j])
book.save(savepath)
|
免费评分
-
参与人数 3 | 吾爱币 +3 |
热心值 +3 |
收起
理由
|
竹轩
| + 1 |
+ 1 |
可惜了没成品不知道咋运行,但还是多谢LZ的热心分享,分还是给你了 |
王星星
| + 1 |
+ 1 |
谢谢@Thanks! |
hanyufeng
| + 1 |
+ 1 |
希望能出个成品,非常需要这样的小软件 |
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|