gpt4 book ai didi

python函数从列表中获取参数

转载 作者:行者123 更新时间:2023-11-30 23:08:28 27 4
gpt4 key购买 nike

我对编程有点陌生,并且在运行和获取它从列表中获取输入参数时遇到问题。这是我当前的代码:

import pandas as pd
import numpy as np
from pandas.io.data import DataReader
from datetime import datetime

def pairfinder(ticker1, ticker2):

symbols = [ticker1, ticker2]
stock_data = DataReader(symbols, "yahoo", datetime(2011,1,1), datetime(2011,12,31))

price = stock_data['Adj Close']
returns = np.log(price / price.shift(1))
diff = (returns[ticker1] - returns[ticker2])**2

mindif = ((1/(returns[ticker1].count()))*diff.sum())
corr = (returns[ticker1].corr(returns[ticker2]))
print(ticker1, ticker2, mindif, corr)



tickers = ['AKSO.OL', 'BWLPG.OL', 'DETNOR.OL', 'DNB.OL', 'DNO.OL', 'FOE.OL', 'FRO.OL']

该函数从雅虎财经下载股票数据,并将调整后的收盘价放入数据框中,然后计算 yield ,并取它们之间的平方差并将其相加。最后,它显示两个股票代码、平方差之和的结果以及两只股票之间的相关性。

现在的问题是,我想让这个函数运行整个股票代码列表,并且我希望它获取第一个股票代码 AKSO.OL 并在其上运行该函数以及所有其余的股票代码,然后继续下一个并做同样的事情。我尝试构建一个 for 循环来执行此操作,但我不太稳定地使用 for 循环并将其与函数结合起来。

最后我想将结果放入另一个数据框中并将其保存为 csv 文件或类似的文件,但我想如果有人能指出我的正确方向,我可以自己解决这个问题问题第一部分的方向。

最佳答案

如果我正确理解您的问题,可能会这样做:

for t1 in tickers:
for t2 in tickers:
if t2 == t1:
continue
print "t1=%s, t2=%s" % (t1, t2)
pairfinder(t1, t2)

产生

t1=AKSO.OL, t2=BWLPG.OL
t1=AKSO.OL, t2=DETNOR.OL
t1=AKSO.OL, t2=DNB.OL
t1=AKSO.OL, t2=DNO.OL
t1=AKSO.OL, t2=FOE.OL
t1=AKSO.OL, t2=FRO.OL
t1=BWLPG.OL, t2=AKSO.OL
t1=BWLPG.OL, t2=DETNOR.OL
t1=BWLPG.OL, t2=DNB.OL
t1=BWLPG.OL, t2=DNO.OL
t1=BWLPG.OL, t2=FOE.OL
t1=BWLPG.OL, t2=FRO.OL
t1=DETNOR.OL, t2=AKSO.OL
t1=DETNOR.OL, t2=BWLPG.OL
t1=DETNOR.OL, t2=DNB.OL
t1=DETNOR.OL, t2=DNO.OL
t1=DETNOR.OL, t2=FOE.OL
t1=DETNOR.OL, t2=FRO.OL
t1=DNB.OL, t2=AKSO.OL
t1=DNB.OL, t2=BWLPG.OL
t1=DNB.OL, t2=DETNOR.OL
t1=DNB.OL, t2=DNO.OL
t1=DNB.OL, t2=FOE.OL
t1=DNB.OL, t2=FRO.OL
t1=DNO.OL, t2=AKSO.OL
t1=DNO.OL, t2=BWLPG.OL
t1=DNO.OL, t2=DETNOR.OL
t1=DNO.OL, t2=DNB.OL
t1=DNO.OL, t2=FOE.OL
t1=DNO.OL, t2=FRO.OL
t1=FOE.OL, t2=AKSO.OL
t1=FOE.OL, t2=BWLPG.OL
t1=FOE.OL, t2=DETNOR.OL
t1=FOE.OL, t2=DNB.OL
t1=FOE.OL, t2=DNO.OL
t1=FOE.OL, t2=FRO.OL
t1=FRO.OL, t2=AKSO.OL
t1=FRO.OL, t2=BWLPG.OL
t1=FRO.OL, t2=DETNOR.OL
t1=FRO.OL, t2=DNB.OL
t1=FRO.OL, t2=DNO.OL
t1=FRO.OL, t2=FOE.OL

基本上,它会遍历代码列表,并将该函数应用于每个代码 (t1) 以及跳过 t1 的所有其他代码 (t2)。

注意:它允许重复相同的对(即 t1、t2 与 t2、t1 不同)。如果这不是所需的行为,请使用 itertools.combinations (如下面您得到的另一个答案中所述)。

事实上,最好的方法是通过 itertools.permutations

import itertools
for ticker1, ticker2 in itertools.permutations(tickers, 2):
print "t1=%s, t2=%s" % (ticker1, ticker2)

关于python函数从列表中获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31698662/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com