時系列データから株価が次にどちらの方向に動いたかサインを出すプログラムを書いています。
今のDF2を作ってループの中でループさせるやり方が非常に効率が悪いと思っていますが、いい書き方がわかりません。
初歩的な質問だと思いますが、pandasのレベルがなかなか向上せずに困っています。
どなたかご教示いただけないでしょうか?
python
1 2 df = df.reset_index(drop=True) 3 4 for i, row in df.iterrows(): 5 t = pushList.objects.get(pushList_id=df.loc[i, 'pushList_id']) 6 time = df.loc[i, 'CurrentPriceTime'] + datetime.timedelta(hours=9) 7 timecheck = time + datetime.timedelta(seconds=30) 8 if time.time() > END_TIME: #15時を超えていたらelseにとんで0をいれる 9 t.nextDirect = 0 # 0は時間外 10 t.save() 11 elif time.time() < START_TIME: 12 t.nextDirect = 0 # 0は時間外 13 t.save() 14 elif RESTSTART_TIME < time.time() < RESTEND_TIME: 15 t.nextDirect = 0 # 0は時間外 16 t.save() 17 else: 18 df2 = df[(df.SymbolName == df.loc[i, 'SymbolName']) & (df.index > i)] # 同じ銘柄かつiよりあとのレコードでDF2を作成 19 df2 = df2.reset_index(drop=True) 20 for i2, row2 in df2.iterrows(): 21 time2 = df2.loc[i2, 'CurrentPriceTime'] + datetime.timedelta(hours=9) # 比較対象のレコードの時間を格納 22 if time2.time() > timecheck.time(): 23 t.nextDirect = 3 #3は30秒間変化なし 24 t.save() 25 break 26 elif time2.time() > END_TIME: 27 t.nextDirect = 0 # 0は時間外 28 t.save() 29 break 30 elif RESTSTART_TIME < time2.time() < RESTEND_TIME: 31 t.nextDirect = 0 # 0は時間外 32 t.save() 33 break 34 else: 35 if df.loc[i, 'CalcPrice'] > df2.loc[i2, 'CalcPrice']: #CurrentQtyがiレコードのものより小さければ 36 t.nextDirect = 1 # 1が下がった 37 t.save() 38 break 39 elif df.loc[i, 'CalcPrice'] < df2.loc[i2, 'CalcPrice']: 40 t.nextDirect = 2 # 2は上がった 41 t.save() 42 break 43 44 if i % 100 == 0: 45 print(str(i) + "レコードまで処理") 46 print(datetime.datetime.now())
python
1pushList_id Symbol SymbolName Exchange ExchangeName CurrentPrice CurrentPriceTime CurrentPriceChangeStatus CurrentPriceStatus CalcPrice ... Sell6Price Sell6Qty Sell7Price Sell7Qty Sell8Price Sell8Qty Sell9Price Sell9Qty TotalMarketValue UnderBuyQty 20 4ab06a34-48af-46ca-9be9-283789524fa8 1447 ITbookホールディングス 1 東証マザーズ 0 2020-09-24 08:08:14.667339+09 NaN -1 915 ... 915 3600 916 6300 918 200 919 200 18123314415 215000 31 733360c1-7b3a-400a-971b-7d376277f7dc 7044 ピアラ 1 東証1部 0 2020-09-24 08:08:16.007247+09 NaN -1 2480 ... 2525 100 2536 300 2549 100 2560 400 17636966400 18200 42 8bf71bef-1a13-42ea-a23e-232c45176d09 3050 DCMホールディングス 1 東証1部 0 2020-09-24 08:08:17.408563+09 NaN -1 1525 ... 1564 700 1565 200 1566 300 1568 1000 244818443100 131000 53 e9760a1a-741c-482c-abd0-994b0ac78ebc 3776 ブロードバンドタワー 1 東証JQス 0 2020-09-24 08:08:17.692836+09 NaN -1 605 ... 634 200 635 3200 637 200 638 8100 36380767500 511200 64 07f99027-d7a9-45e4-ab78-891b3864e5e9 4722 フューチャー 1 東証1部 0 2020-09-24 08:08:18.171276+09 NaN -1 2298 ... 2300 800 2309 900 2310 500 2320 1300 109531872000 7000 75 ae39c2c4-fba3-458b-9c02-d52b5c609489 6580 ライトアップ 1 東証マザーズ 0 2020-09-24 08:08:18.471329+09 NaN -1 3135 ... 3180 300 3195 500 3200 1700 3220 100 9100905000 13100 86 782f5c31-57f0-4293-8de1-077388fd2963 3782 ディー・ディー・エス 1 東証マザーズ 0 2020-09-24 08:08:18.624487+09 NaN -1 310 ... 314 8900 315 13200 316 6000 317 7300 14225993000 243500 97 14aaf2a1-8274-47d4-bf98-803c3330a230 4308 Jストリーム 1 東証マザーズ 0 2020-09-24 08:08:20.357745+09 NaN -1 3835 ... 3845 100 3850 2200 3860 100 3870 300 53800064500 29800 108 717f1567-651c-4e69-8ddc-9f6f55098d31 4486 ユナイトアンドグロウ 1 東証マザーズ 0 2020-09-24 08:08:21.399333+09 NaN -1 1846 ... 1922 900 1927 100 1932 100 1935 100 6724239600 21800 119 e30a4b99-c464-40e0-9aa9-1645e2c8cef3 3776 ブロードバンドタワー 1 東証JQス 0 2020-09-24 08:08:22.101601+09 NaN -1 605 ... 634 200 635 3200 637 200 638 8100 36380767500 511300 1210 ca042bc9-aca7-458b-ad90-605143f69b26 4722 フューチャー 1 東証1部 0 2020-09-24 08:08:22.533328+09 NaN -1 2298 ... 2300 800 2309 900 2310 500 2315 100 109531872000 7000 1311 e6591f32-3ea9-43ed-873b-ce705438f0be 3998 すららネット 1 東証マザーズ 0 2020-09-24 08:08:24.452058+09 NaN -1 6220 ... 6220 3900 6230 300 6240 100 6250 2200 39435017700 24700 1412 fdd0c61e-0356-4a4f-90f1-901d2570d544 6579 ログリー 1 東証マザーズ 0 2020-09-24 08:08:25.284751+09 NaN -1 7320 ... 0 0 0 0 0 0 0 0 13684008000 17900 1513 c0cdf143-6c26-4ef5-9512-1cc0a2625b04 4347 ブロードメディア 1 東証JQス 0 2020-09-24 08:08:26.323568+09 NaN -1 115 ... 120 32900 121 40200 122 69100 123 71200 9101942145 899700 1614 a43c18c0-e016-4e8e-a734-fc1d5c5bad34 4347 ブロードメディア 1 東証JQス 0 2020-09-24 08:08:26.971614+09 NaN -1 115 ... 120 36900 121 40200 122 69100 123 71200 9101942145 899700 1715 999b66f7-385a-4ac0-b0fe-261d47607dd1 3776 ブロードバンドタワー 1 東証JQス 0 2020-09-24 08:08:28.060202+09 NaN -1 605 ... 634 200 635 3200 637 200 638 8100 36380767500 511300 1816 d85e324b-7021-471d-9e3e-925542a58fa0 8226 理経 1 東証2部 0 2020-09-24 08:08:28.129255+09 NaN -1 277 ... 279 6100 280 11600 281 3900 282 14500 4297577717 540800 1917 70ec8f01-d75d-4b3c-bde4-6b5b6016291f 6579 ログリー 1 東証マザーズ 0 2020-09-24 08:08:28.329728+09 NaN -1 7320 ... 0 0 0 0 0 0 0 0 13684008000 17900 2018 cf99c9e6-3907-4bff-a87a-f1b419f4c677 3681 ブイキューブ 1 東証1部 0 2020-09-24 08:08:28.345352+09 NaN -1 1791 ... 1796 100 1797 200 1798 300 1799 4900 43636282200 180100 2119 3dd74a5c-c200-4527-881d-4728e9129461 3776 ブロードバンドタワー 1 東証JQス 0 2020-09-24 08:08:28.429994+09 NaN
python
1Index(['pushList_id', 'Symbol', 'SymbolName', 'Exchange', 'ExchangeName', 2 'CurrentPrice', 'CurrentPriceTime', 'CurrentPriceChangeStatus', 3 'CurrentPriceStatus', 'CalcPrice', 'PreviousClose', 'PreviousCloseTime', 4 'ChangePreviousClose', 'ChangePreviousClosePer', 'OpeningPrice', 5 'OpeningPriceTime', 'HighPrice', 'HighPriceTime', 'LowPrice', 6 'LowPriceTime', 'TradingVolume', 'TradingVolumeTime', 'VWAP', 7 'TradingValue', 'BidQty', 'BidPrice', 'BidTime', 'BidSign', 8 'MarketOrderSellQty', 'Sell1Time', 'Sell1Sign', 'Sell1Price', 9 'Sell1Qty', 'created_date_at', 'created_timestamp_at', 10 'updated_timestamp_at', 'AskPrice', 'AskQty', 'AskSign', 'AskTime', 11 'Buy10Price', 'Buy10Qty', 'Buy1Price', 'Buy1Qty', 'Buy1Sign', 12 'Buy1Time', 'Buy2Price', 'Buy2Qty', 'Buy3Price', 'Buy3Qty', 'Buy4Price', 13 'Buy4Qty', 'Buy5Price', 'Buy5Qty', 'Buy6Price', 'Buy6Qty', 'Buy7Price', 14 'Buy7Qty', 'Buy8Price', 'Buy8Qty', 'Buy9Price', 'Buy9Qty', 15 'MarketOrderBuyQty', 'OverSellQty', 'Sell10Price', 'Sell10Qty', 16 'Sell2Price', 'Sell2Qty', 'Sell3Price', 'Sell3Qty', 'Sell4Price', 17 'Sell4Qty', 'Sell5Price', 'Sell5Qty', 'Sell6Price', 'Sell6Qty', 18 'Sell7Price', 'Sell7Qty', 'Sell8Price', 'Sell8Qty', 'Sell9Price', 19 'Sell9Qty', 'TotalMarketValue', 'UnderBuyQty'], 20 dtype='object')
回答3件
あなたの回答
tips
プレビュー