我正在从sql导入一个数据框,其中包含4k个股票报价器,每天的价格数据跨越20年(大约1300万行x 8列)。我的目标是按股票代码遍历该表,并应用技术分析,如移动平均线、轴心点和其他日常操作。从效率的Angular 来看,我也不确定是否有必要将这些列追加回原始数据框,或者将它们存储在新的数据框中,以输入到新表中,然后将其连接回每日价格表。
数据快照:
我正在处理的代码(dataframe=sc,其中sc是数据的较小子集,用于首先确认指标是否按预期工作)
ticks = sc['Tick'].tolist()
for tick in ticks:
sc['SMA'] = round(talib.SMA(sc[sc["Tick"]==tick]['Adj_close']),2)
# sc['NextIndicator'] = code_for_next_indicator
这只是将输出分配给最后一个运行ticker(在本例中,我取消了tick=se处的查询)
我还担心从效率的Angular 来处理这一问题的最佳方法,比如说,如果我想应用20或30个指标,这将增加相当多的栏。创建一个空数据框并遍历每个ticker来存储日期ticker id和20-30个指示符是否更有意义?
将指标输出输入新数据框的代码(输出是一个列表,不确定如何将其合并回唯一的数据框)
ndf = []
for tick in ticks:
ID = sc[sc["Tick"]==tick]["Tick"]
DATE = sc[sc["Tick"]==tick]["Date"]
SMA = round(talib.SMA(sc[sc["Tick"]==tick]['Adj_close']),2)
EMA = round(talib.EMA(sc[sc["Tick"]==tick]['Adj_close']),2)
#ndf['Next_Indicator'] = next_indicator_logic
tempdf = pd.concat([ID, DATE, SMA, EMA], axis=1)
ndf.append(tempdf)
输出:
总之,想知道将输出粘贴回原始 Dataframe 或输入新 Dataframe 是否更有效。最终目标是将表添加回sql db。
将测试数据编辑为文本:
Date Open High Low Close Adj_close Volume Tick
520812 2021-01-04 133.52 133.61 126.76 129.41 129.00 143301900 AAPL
519803 2021-01-04 222.53 223.00 214.81 217.69 216.69 37130100 MSFT
520780 2021-01-04 3270.00 3272.00 3144.02 3186.63 3186.63 4411400 AMZN
520371 2021-01-04 274.78 275.00 265.20 268.94 268.94 15106100 FB
520260 2021-01-04 1757.54 1760.65 1707.85 1728.24 1728.24 1901900 GOOG
514036 2021-01-05 1725.00 1747.67 1718.02 1740.92 1740.92 1145300 GOOG
513835 2021-01-05 268.29 272.40 268.21 270.97 270.97 9871600 FB
513380 2021-01-05 3166.01 3223.38 3165.06 3218.51 3218.51 2655500 AMZN
513276 2021-01-05 128.89 131.74 128.43 131.01 130.59 97664900 AAPL
514403 2021-01-05 217.26 218.52 215.70 217.90 216.90 23823000 MSFT
513162 2021-01-06 127.72 131.05 126.38 126.60 126.20 155088000 AAPL
513128 2021-01-06 3146.48 3197.51 3131.16 3138.38 3138.38 4394800 AMZN
512731 2021-01-06 262.00 267.75 260.01 263.31 263.31 24354100 FB
512612 2021-01-06 1702.63 1748.00 1699.00 1735.29 1735.29 2602100 GOOG
512163 2021-01-06 212.17 216.49 211.94 212.25 211.27 35930700 MSFT
506752 2021-01-07 214.04 219.34 213.71 218.29 217.29 27694500 MSFT
506385 2021-01-07 1740.06 1788.40 1737.05 1787.25 1787.25 2265000 GOOG
506184 2021-01-07 265.90 271.61 264.78 268.74 268.74 15789800 FB
505729 2021-01-07 3157.00 3208.54 3155.00 3162.16 3162.16 3514500 AMZN
505625 2021-01-07 128.36 131.63 127.86 130.92 130.50 109578200 AAPL
初始化小 Dataframe 的代码:
fb_data = {'Date':['2021-07-01', '2021-07-02', '2021-07-03', '2021-07-04'],
'Tick':['FB', 'FB', 'FB', 'FB'],
'Close':[345,346,347.5,346.4]}
aapl_data = {'Date':['2021-07-01', '2021-07-02', '2021-07-03', '2021-07-04'],
'Tick':['AAPL', 'AAPL', 'AAPL', 'AAPL'],
'Close':[142,145,147.5,146.4]}
df = pd.DataFrame(fb_data)
df2 = pd.DataFrame(aapl_data)
df=df.append(df2, ignore_index=True)
df
暂无答案!
目前还没有任何答案,快来回答吧!