gpt4 book ai didi

python - 迭代 EOD .csv 以在每个文件中创建历史运行高点、低点

转载 作者:太空宇宙 更新时间:2023-11-03 17:00:58 24 4
gpt4 key购买 nike

我是Python新手,但随着我对Python的理解越来越深入,我爱上了它。话虽这么说,我已经设法拼凑了一个脚本,将 Quandl WIKI EOD 数据库转储到每个股票的 CSV 中。我已将其包含在下面(Python 2.7):

import pandas as pd
import Quandl

#this ignores the first symbol in tickers.txt, add a header!
symbols_list = list(pd.read_csv('tickers.txt', index_col=0).T)
print symbols_list

df = {}
for ticker in symbols_list:
stock = str("WIKI/" + ticker + ".11")
#print stock
print str(ticker + ".csv")
df[ticker] = Quandl.get(stock, authtoken="XXXXXXXXXXXXX", trim_start="2016-01-01")
df[ticker].to_csv(str(ticker + ".csv"))

我的下一个目标是为每个股票 csv 创建历史运行高点和低点列。这将使为股票市场创建类似于 http://www.finviz.com/ 上的历史“电量计”变得容易。 。新高/新低仪表非常有用。当 2000 多只股票创下新低,而只有少数股票创下新高时,很容易判断抛售的难度有多大。

到目前为止,我已成功遍历工作文件夹中的每个 .csv 并记录每个新高/新低。我的挂断是如何将此信息作为新列输入到每个 csv 中。 EOD CSV 具有 ['Date', 'Adj. Close'] 每个标题,我是否希望添加 ['High', 'Low']。

到目前为止我的代码:

import os
import pandas as pd

csv = [f for f in os.listdir('.') if f.endswith('.csv')]
print csv
for i in csv:
df = pd.read_csv(i, index_col=0, parse_dates=True)
print df
j=0
k=0
for i in df['Adj. Close']: #for each value in adj close
if j==0:
j=i
k=i

elif i>j:
j=i #high

elif i<k:
k=i #low

print j,k #print high & low

我真的很感谢你们的帮助!所有的代码片段和问题解答都让学习 Python 变得更加愉快。

这是到目前为止脚本的输出:

['A.csv', 'AA.csv']
Adj. Close
Date
2016-01-04 40.69
2016-01-05 40.55
2016-01-06 40.73
2016-01-07 39.00
2016-01-08 38.59
2016-01-11 37.94
2016-01-12 38.19
2016-01-13 36.86
2016-01-14 37.61
2016-01-15 37.11
2016-01-19 37.20
2016-01-20 37.26
2016-01-21 37.23
2016-01-22 37.98
40.69 40.69
40.69 40.55
40.73 40.55
40.73 39.0
40.73 38.59
40.73 37.94
40.73 37.94
40.73 36.86
40.73 36.86
40.73 36.86
40.73 36.86
40.73 36.86
40.73 36.86
40.73 36.86
Adj. Close
Date
2016-01-04 9.71
2016-01-05 9.27
2016-01-06 8.61
2016-01-07 8.27
2016-01-08 8.07
2016-01-11 8.00
2016-01-12 7.28
2016-01-13 7.13
2016-01-14 7.24
2016-01-15 6.90
2016-01-19 6.74
2016-01-20 6.74
2016-01-21 7.09
2016-01-22 6.87
9.71 9.71
9.71 9.27
9.71 8.61
9.71 8.27
9.71 8.07
9.71 8.0
9.71 7.28
9.71 7.13
9.71 7.13
9.71 6.9
9.71 6.74
9.71 6.74
9.71 6.74
9.71 6.74

这段代码运行得很好:

import os
import pandas as pd

csv = [f for f in os.listdir('.') if f.endswith('.csv')]
print csv
for i in csv:
df = pd.read_csv(i, index_col=0, parse_dates=True)
#print df
df['High'] = pd.rolling_max(df['Adj. Close'], window=df.shape[0], min_periods=1)
df['Low'] = pd.rolling_min(df['Adj. Close'], window=df.shape[0], min_periods=1)
#print df

g = os.path.normcase(os.path.join(os.path.dirname(__file__), i)) #os.getcwd()
print 'full path =', g
with open(g , "w") as f:
df.to_csv(f)

现在我将了解如何创建每天新高/新低的历史列表

最佳答案

您可以使用df的长度 - shape作为rolling_min窗口rolling_max :

print df
Date Adj. Close
0 2016-01-04 9.71
1 2016-01-05 9.27
2 2016-01-06 8.61
3 2016-01-07 8.27
4 2016-01-08 8.07
5 2016-01-11 8.00
6 2016-01-12 7.28
7 2016-01-13 7.13
8 2016-01-14 7.24
9 2016-01-15 6.90
10 2016-01-19 6.74
11 2016-01-20 6.74
12 2016-01-21 7.09
13 2016-01-22 6.87

df['high'] = pd.rolling_max(df['Adj. Close'], window=df.shape[0], min_periods=1)
df['low'] = pd.rolling_min(df['Adj. Close'], window=df.shape[0], min_periods=1)
print df
Date Adj. Close high low
0 2016-01-04 9.71 9.71 9.71
1 2016-01-05 9.27 9.71 9.27
2 2016-01-06 8.61 9.71 8.61
3 2016-01-07 8.27 9.71 8.27
4 2016-01-08 8.07 9.71 8.07
5 2016-01-11 8.00 9.71 8.00
6 2016-01-12 7.28 9.71 7.28
7 2016-01-13 7.13 9.71 7.13
8 2016-01-14 7.24 9.71 7.13
9 2016-01-15 6.90 9.71 6.90
10 2016-01-19 6.74 9.71 6.74
11 2016-01-20 6.74 9.71 6.74
12 2016-01-21 7.09 9.71 6.74
13 2016-01-22 6.87 9.71 6.74

关于python - 迭代 EOD .csv 以在每个文件中创建历史运行高点、低点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34986276/

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