前提・実現したいこと
質問というより疑問ですが,実行のたびにpandas_datareaderを使って日経225先物とTOPIXの株価をstooqからスクレイピングして得たデータを使用して計算していたのですが(以後,方法1と記述),
stooqからスクレイピングをしてcsvに保存したデータを使って,実行のたびにcsvを読み込んでプログラムを計算した(以後,方法2と記述)ところ計算が1.4倍くらい早くなりました.(下にプログラムがあります)
方法1も2もデータはdfにいれて,dfから値を参照しているので,途中でcsvを読み込んだり,スクレイピングをしていないです.最初の読み込みの時間に差が生じるのは読み込み方法が違うのでわかりますが,途中の計算のスピードが変わるのは理解できません.
プログラムでは,日経225先物とTOPIXを使っていて以下のプログラムの後では,dfを使って値を呼び出しています.
深層強化学習で株の売買戦略の計算をしているのですが,具体的にどのような計算で処理速度が変わったかのプログラムがないので情報不足かと思いますが(あまりにも長いので),答えていただけると幸いです.
また,データの読み込み方によって,その後の処理が早くなる方法等あれば知りたいです.
方法2のコード
python
1import pandas as pd 2import datetime__イタリックテキスト__ 3import pandas_datareader 4 5start = datetime.date(2018, 1, 1) 6end = datetime.date(2019, 12, 31) 7date_split = '2018-12-31' 8stockcode1 = "^TPX" 9stockcode2 = "^NKX" 10data1 = pandas_datareader.stooq.StooqDailyReader(stockcode1, start, end).read() 11data2 = pandas_datareader.stooq.StooqDailyReader(stockcode2, start, end).read() 12data1= data1.sort_values(by="Date",ascending=True) 13data2= data2.sort_values(by="Date",ascending=True) 14#片方のデータしかない日付を除去する 15df = pd.merge(data1, data2, on='Date', how='inner')
方法1のコード
python
1import pandas as pd 2 3data_start ='2018-01-01' 4data_end = '2019-12-31' 5data1 = pd.read_csv('NK225.csv') 6data1 = data1.set_index('Date') 7data1 = data1[data_start:data_end] 8data2 = pd.read_csv('TOPIX.csv') 9data2 = data2.set_index('Date') 10data2 = data2[data_start:data_end] 11#片方のデータしかない日付を除去する 12df = pd.merge(data1, data2, on='Date', how='inner') 13
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/16 06:18