比较for循环内的变化百分比值

问题描述

我有一个如下列表

enter image description here

我希望能够同时比较9:35时QQQ与AAPL和AMD等其他股票的变化百分比。因此,请检查9:35时APL的百分比变化是否大于9:35时QQQ的百分比变化。对于AMD来说,在9:35,然后在9:40,然后在9:45等等,情况都是如此。

我想通过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命令替换为您想要输出的信息。 (此外,我认为更高的水平更好;我希望那是正确的。)