问题描述
我想通过python做到这一点 这是我到目前为止所掌握的,但不是很正确
import pandas as pd
import time
import yfinance as yf
import datetime as dt
from pandas_datareader import data as pdr
from collections import Counter
from tkinter import Tk
from tkinter.filedialog import askopenfilename
import os
from pandas import ExcelWriter
d1 = dt.datetime(2020,8,5,9,00,00)
d2 = dt.datetime(2020,16,00)
pc=Counter()
filePath=r"C:\Users\Adil\Documents\Python Test - ET\Data\Trail.xlsx"
stocklist = pd.read_excel(filePath)
for i in stocklist.index:
symbol=stocklist['Symbol'][i]
date=stocklist['Date'][i]
close=stocklist['Close'][i]
pc=stocklist['PercentChange'][i]
if (pc[i]>pc['QQQ']):
print(pc[i])
解决方法
好的
我从评论中得到了OP想要的解释:
是的,所以我想看看是否在给定时间内5分钟内 股票表现优于QQQ
要做的第一件事就是制作它,以便您可以按时间和符号查找信息。这是我的处理方式:
my_data = {}
for i in stocklist.index:
symbol=stocklist['Symbol'][i]
date=stocklist['Date'][i]
pc=stocklist['PercentChange'][i]
my_data[symbol,date] = pc
这将创建一个字典,您可以在其中调用my_data['ABCD','datetime']
然后,我将列出所有时间。
time_set = set()
for i in stocklist.index:
date = stocklist['Date'][i]
time_set.add(date)
times = list(time_set)
times.sort()
如果您迫切需要计算机资源,可以将这两个循环组合在一起并一起运行,但是我认为将它们分开可以使代码更易于理解。
然后对符号执行相同的操作:
sym_set = set()
for i in stocklist.index:
date = stocklist['Symbol'][i]
sym_set.add(date)
symbols = list(sym_set)
symbols.sort()
再一次,您可以在第一个for循环中设置此集合,但是通过这种方式,您可以看到我们正在尝试做的更好的事情。
最后要做的是实际上进行比较:
for i in times:
qs = my_data['QQQ',i]
for j in symbols:
if qs != 'QQQ':
which = "better" if my_data[j,i]>qs else "worse"
print(j + " did " + which + " than QQQ at " + i)
现在,这只是将信息打印到控制台,您应该将print命令替换为您想要输出的信息。 (此外,我认为更高的水平更好;我希望那是正确的。)