[Pour les débutants] Script dans les 10 lignes (3. Lecteur de données / conversion csv)

[Pour les débutants] Script dans les 10 lignes (3. Obtenir des données avec datareader / écrire en csv)

Si vous utilisez diverses bibliothèques avec python, j'ai pensé: "C'est pratique parce que vous pouvez faire une petite chose avec un peu de code, et vous pouvez créer un petit script avec un peu de 5 étapes", donc c'est juste une liste de python et d'autres commandes. Je peux trouver ceci, mais je publierai un script en 10 étapes sur une base irrégulière.

En tant que ** 3ème **, je voudrais obtenir les données avec datareader et poster l'écriture dans csv. </ font>

Je pense qu'il y a de nombreux cas où des données csv et excel sont transmises en interne, et même si elles sont publiées sur le net, elles sont alignées avec json etc. et csv est publié.

Les données à acquérir datent du 1er janvier 2016 du Nikkei 225 de fred. Ces données sont stockées dans la trame de données pandas et écrites dans csv.

Enfin, en complément, tracez avec la fonction plot.

【environnement】 Linux: debian10 python: 3.7.3 pandas: 1.0.3 pandas-datareader: 0.8.1


1. Acquisition de données et stockage dans une trame de données

L'obtention du lecteur de données pour l'acquisition de données Nikkei 225 utilise la syntaxe suivante. pdr.DataReader('NIKKEI225' ,'fred' ,start)

Lorsque vous écrivez en csv, écrivez avec des pandas. La syntaxe est la trame de données .to_csv ('write file name.csv')

J'ai exécuté le code en jupyter.

datareader



#Obtenez les données Nikkei225 de fred avec datareader et écrivez en csv
#outfile = ('./nikkei225_20200428.csv')
import pandas as pd
from pandas_datareader import data, wb
import datetime
import matplotlib.pyplot as plt

#Acquisition / stockage de données dans une trame de données
start = datetime.datetime(2016, 1 ,1)
df_nikkei225 = pdr.DataReader('NIKKEI225' ,'fred' ,start)

#Écrire dans csv
df_nikkei225.to_csv('./nikkei225_20200428.csv')

Dans ce qui précède, lors du stockage du script dans la trame de données, la date de début à acquérir est spécifiée dans la première ligne, le Nikkei 225 est acquis de fred dans la deuxième ligne à partir de la date spécifiée dans la première ligne, et il est décrit comme une trame de données.

start = datetime.datetime(2016, 1 ,1) df_nikkei225 = pdr.DataReader('NIKKEI225' ,'fred' ,start)

Le nom de la trame de données est "df_nikkei225", mais en réalité tout va bien.

La sortie vers csv était sortie dans le répertoire courant sous le nom "nikkei225_20200428.csv".

2. Contenu des données acquises

Jetons un coup d'œil aux données acquises. "Df_nikkei225" est la trame de données utilisée dans le code précédent.

Trame de données



df_nikkei225
#Contenu de la trame de données stockée
 	NIKKEI225
DATE 	
2016-01-01 	NaN
2016-01-04 	18450.98
2016-01-05 	18374.00
2016-01-06 	18191.32
2016-01-07 	17767.34
... 	...
2020-04-22 	19137.95
2020-04-23 	19429.44
2020-04-24 	19262.00
2020-04-27 	19783.22
2020-04-28 	19771.19

1128 rows × 1 columns

En guise de [supplément], je vais dessiner un graphique et le sortir en jpg. Le moyen le plus simple de tracer les données ci-dessus consiste à utiliser deux lignes de code. Tout d'abord, j'ai importé matplotlib avec "import matplotlib.pyplot as plt".

Dans cet état, si le bloc de données "nom du bloc de données.plot ()" et est "df", vous pouvez tracer avec df.plot (). </ font> Par exemple, lors de la sortie d'un graphique au format jpg, plt.savefig ("output file name.jpg ") </ font>

plot



#Dessin graphique / sortie
df_nikkei225.plot()
plt.savefig("nikkei225_20200428.jpg ")

nikkei225_20200428.jpg

Informations de données



df_nikkei225.info()

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 1128 entries, 2016-01-01 to 2020-04-28
Data columns (total 1 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   NIKKEI225  1056 non-null   float64
dtypes: float64(1)
memory usage: 17.6 KB

df_nikkei225.isnull().sum()

NIKKEI225    72
dtype: int64

df_nikkei225.head()

DATE 	
2016-01-01 	NaN
2016-01-04 	18450.98
2016-01-05 	18374.00
2016-01-06 	18191.32
2016-01-07 	17767.34

Il n'y a pas de données les jours où il n'y a pas de transactions, mais comme les données acquises sont tracées telles quelles, je pense que le graphique réel sera traité pour les valeurs manquantes pour le moment. J'aborderai cela dans un article séparé.

** Ci-dessus, il s'agissait de l'acquisition de données et de la conversion csv avec datareader. ** **

Recommended Posts