Der Pandas-Datenleser ist nützlich, um Aktienkursdaten abzurufen, aber leider fehlen möglicherweise Daten. Wenn Sie beispielsweise mit Stooq "1357NF Nikkei Double Inverse" erhalten,
import pandas_datareader.stooq as web
from datetime import datetime
start_date = datetime(2016,6,10)
end_date = datetime(2016,6,17)
dr = web.StooqDailyReader('1357.JP', start=start_date, end=end_date)
df = dr.read()
df.to_csv('1357.csv')
Sie erhalten eine CSV-Datei wie die folgende.
Date,Open,High,Low,Close,Volume
2016-06-17,3330,3380,3290,3370,8019724
2016-06-16,3270,3465,3250,3450,10403857
2016-06-14,3220,3315,3185,3270,9910736
2016-06-13,3105,3205,3100,3200,8193928
2016-06-10,2981,3040,2977,3000,4247241
Daten für den 15.06.2016 fehlen. Vielleicht konnte ich es an diesem Tag aufgrund von Systemproblemen oder so nicht tun? Dachte ich und als ich die Zeitreihendaten von Yahoo! Finance überprüfte.
Bei Yahoo! Finance. Existierten die Daten für diesen Tag.
Wenn ich den nikkei225 Index bekomme,
import pandas_datareader.stooq as web
from datetime import datetime
start_date = datetime(2016,6,10)
end_date = datetime(2016,6,17)
dr = web.StooqDailyReader('^NKX', start=start_date, end=end_date)
df = dr.read()
df.to_csv('NIKKEI225.csv')
Es gab keine Auslassung.
Date,Open,High,Low,Close,Volume
2016-06-17,15631.79,15774.87,15582.94,15599.66,1671723008
2016-06-16,15871.22,15913.08,15395.98,15434.14,1542472064
2016-06-15,15799.07,15997.3,15752.01,15919.58,1367727744
2016-06-14,16001.19,16082.5,15762.09,15859.0,1316932864
2016-06-13,16319.11,16335.38,16019.18,16019.18,1261788416
2016-06-10,16637.51,16643.36,16496.11,16601.36,1549976064
Der Mangel scheint auf die Marke zurückzuführen zu sein.
Je nach Marke kann es fehlen oder nicht. Wenn nichts unternommen wird, besteht die Gefahr schwerwiegender Fehler beim Vergleich der Aktienkurse. Daher müssen fehlende Zeilen entfernt oder eine Interpolation durchgeführt werden. Sie können fehlende Zeilen entfernen oder ausfüllen, indem Sie die beiden Tabellen mit Pandas zusammenführen.
import pandas as pd
nikkei225 = pd.read_csv('NIKKEI225.csv').set_index('Date').sort_index()
n1357 = pd.read_csv('1357.csv').set_index('Date').sort_index()
merged = pd.DataFrame.merge(nikkei225, n1357, on='Date', how='inner')
merged2 = pd.DataFrame.merge(nikkei225, n1357, on='Date', how='outer')
Zusammengeführt ergibt das Ergebnis, wobei die fehlenden Zeilen entfernt wurden.
In fusioned2 werden fehlende Zeilen mit NaN gefüllt.
Um die fehlenden Linien zu interpolieren, füllen Sie sie mit NaN und interpolieren Sie dann auf die erforderlichen Werte.
Wie Sie die Lücke ausgleichen können, erfahren Sie im folgenden Artikel. https://qiita.com/kazama0119/items/c838114f8687518ba58e Ich habe versucht, den Aktienkurs durch Datenanalyse vorherzusagen
Recommended Posts