Pandas-datareader est utile pour obtenir des données sur le cours des actions, mais malheureusement, des données peuvent manquer. Par exemple, si vous obtenez "1357NF Nikkei Double Inverse" avec Stooq,
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')
Vous obtiendrez un fichier csv comme celui ci-dessous.
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
Les données pour 2016-06-15 sont manquantes. Peut-être que je ne pouvais pas le faire ce jour-là en raison d'un problème système ou de quelque chose? J'ai pensé, et quand j'ai vérifié les données de séries chronologiques de Yahoo! Finance.
Chez Yahoo! Finance., Les données de ce jour existaient.
Quand j'obtiens l'index nikkei225,
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')
Il n'y a pas eu d'omission.
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
Le manque semble être dû à la marque.
Selon la marque, il peut ou non manquer. Si rien n'est fait, il y a un risque de faire de graves erreurs lors de la comparaison des cours des actions, il est donc nécessaire de supprimer les lignes manquantes ou d'effectuer une interpolation. Vous pouvez supprimer ou remplir les lignes manquantes en fusionnant les deux tables à l'aide de pandas.
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')
merged donne le résultat avec les lignes manquantes supprimées.
Dans merged2, les lignes manquantes sont remplies avec NaN.
Pour interpoler les lignes manquantes, remplissez-les avec NaN, puis interpolez les valeurs requises.
Comment combler l'écart est expliqué dans l'article suivant. https://qiita.com/kazama0119/items/c838114f8687518ba58e J'ai essayé de prédire le cours de l'action par l'analyse des données
Recommended Posts