[PYTHON] Il y a un manque de données lors de l'acquisition de données sur le cours des actions avec Pandas-datareader

introduction

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.

Y1357.png

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.

Contre-mesures en cas de perte de données

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.

merged.png

Dans merged2, les lignes manquantes sont remplies avec NaN.

merged2.png

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

Il y a un manque de données lors de l'acquisition de données sur le cours des actions avec Pandas-datareader
Téléchargez les données de cours des actions japonaises avec Python
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
Mémo de flux lors de la récupération de données json avec urllib
Acquisition automatique des données de cours des actions avec docker-compose
"Obtenir des données de séries chronologiques de stock à partir de k-db.com avec Python" Mémo de création d'environnement de programme
Prévision du cours de l'action avec tensorflow
Obtenez des stocks avec Python
Conseils d'acquisition de données de cours de bourse
[Analyse du cours de l'action] pandas apprenant avec des données fictives (002: sortie log)
[Analyse du cours de l'action] Apprenez les pandas avec la moyenne Nikkei (004: Changer les données lues en moyenne Nikkei)
[Analyse du cours de l'action] pandas apprenant avec des données fictives (001: préparation de l'environnement à la lecture de fichiers)
[Analyse du cours de l'action] Apprentissage des pandas avec des données fictives (003: De l'arrangement de type au graphique en chandelier)
Prévision de stock avec TensorFlow (LSTM) ~ Prévision de stock Partie 1 ~
Web scraping avec Python (cours de l'action)
Prévision du cours de l'action à l'aide du Deep Learning [acquisition de données]
Matériel à lire lors de la mise en route de Python
[Python Data Frame] Lorsque la valeur est vide, remplissez-la avec la valeur d'une autre colonne.