用于在Python中从多个csv导入和计算股票回报的循环
也许是个愚蠢的问题,但我是个初学者。我使用下面的代码来计算股票收益率和平方对数收益率:用于在Python中从多个csv导入和计算股票回报的循环,python,pandas,loops,Python,Pandas,Loops,也许是个愚蠢的问题,但我是个初学者。我使用下面的代码来计算股票收益率和平方对数收益率: #read csv stock1 = pd.read_csv('http://mydata.com/q/c/?d=stock1%d1=20190101&d2=20200101') stock2 = pd.read_csv('http://mydata.com/q/c/?d=stock2%d1=20190101&d2=20200101') #calculate return stock1['r
#read csv
stock1 = pd.read_csv('http://mydata.com/q/c/?d=stock1%d1=20190101&d2=20200101')
stock2 = pd.read_csv('http://mydata.com/q/c/?d=stock2%d1=20190101&d2=20200101')
#calculate return
stock1['r'] = np.log(stock1.close) - np.log(stock1.close.shift(1))
stock2['r'] = np.log(stock2.close) - np.log(stock2.close.shift(1))
#calculate squared returns and rolling returns
stock1_sq_r = stock1['r'] * stock1['r']
stock2_sq_r = stock2['r'] * stock2['r']
rolled_s1_sq_r = stock1_sq_r.rolling(window=5).sum()
rolled_s2_sq_r = stock2_sq_r.rolling(window=5).sum()
它很有魅力,但我需要为100只股票这么做。。。我怎样才能把上面的循环
我想读取csv的循环应该与此类似:
stocks = {'stock1', 'stock2', 'stock3'}
for stock in stocks:
url = ('http://http://mydata.com/q/c/?d={}%d1=20190101&d2=20200101')
dfs = pd.read_csv(url.format(stock))
但它只读取stock3的数据,我不知道如何循环其余的计算
谢谢你的建议、指导和线索。这里的缩进可能是你的问题。试试这个:
stocks = {'stock1', 'stock2', 'stock3'}
for stock in stocks:
url = ('http://http://mydata.com/q/c/?d={}%d1=20190101&d2=20200101')
dfs = pd.read_csv(url.format(stock))
注意for循环中的缩进。也许这样效果更好:
stocks = ['stock1', 'stock2', 'stock3']
for stock in stocks:
url = f'http://mydata.com/q/c/?d={stock}%d1=20190101&d2=20200101'
dfs = pd.read_csv(url)
您可以将所有值读取到字典中(
stock\u name
作为键,dataframe
作为值)
您可以通过以下方式访问字典中“stock1”的数据帧
df = all_data_dict['stock1']
您还可以使用查找与下一个值的差值&使用**
获得平方
rolled_s1_sq_r = (np.log(df.close).diff()**2).rolling(window=5).sum()
标准规则:“如果有许多元素,请使用列表或字典”
。您总是为同一变量dfs
赋值,因此删除以前的内容。您必须添加到列表或字典中。
rolled_s1_sq_r = (np.log(df.close).diff()**2).rolling(window=5).sum()