[PYTHON] [Analyse du cours de l'action] pandas apprenant avec des données fictives (002: sortie log)

Depuis la suite de la dernière fois (Load DataFrame)

Après quelques essais et erreurs, j'ai finalement réussi à lire read_csv. (Il n'y a aucune raison particulière pour laquelle je n'ai pas utilisé read_table la dernière fois. Pour être honnête, je pense que c'est la même chose pour read_csv et read_table.)

[Analyse du cours de l'action] pandas apprenant avec des données fictives (001: lecture du fichier de préparation de l'environnement)

~~ ↑ L'adresse de l'article précédent est https://qiita.com/waka_taka/items/93049e603dcdd046cc01 Je l'ai mentionné parce que c'était, mais je voulais l'intégrer, https://camo.qiitausercontent.com/d76aa803f668e38e03042f90af5a95c8ce768712/68747470733a2f2f71696974612e636f6d2f77616b615f74616b612f6974656d732f3933303439653630336463646430343663633031 Il a été converti et n'a pas bien lié. (Est-ce la spécification de Qiita? Je ne suis pas encore habitué au format MarkDown, donc cela ressemble à une simple erreur de négligence, mais ...) ~~

C'était une erreur de négligence normale. .. .. Je viens de l'écrire dans la syntaxe d'incorporation d'image.

Fonction de journalisation implémentée

Comme c'est un gros problème, il est difficile de sortir les informations de débogage avec une instruction d'impression une par une, donc je vais essayer de l'implémenter tout en étudiant la journalisation. Cet article n'a rien à voir avec l'analyse des stocks.

Success_case01.py


import pandas as pd
import logging

#Spécification du nom du fichier de sortie du journal et du niveau de sortie du journal
logging.basicConfig(filename='CodeLog.log', level=logging.INFO)

#Fichier CSV(SampleStock01.csv)Spécifiez le code de caractère de
dframe = pd.read_csv('SampleStock01_t1.csv', encoding='SJIS', \
	header=1, sep='\t')

#Sortie des informations de débogage
logging.info(dframe)

CodeLog.log


INFO:root:Date d'ouverture prix prix haut prix bas prix de clôture
0     2016/1/4   9,934  10,055   9,933  10,000
1     2016/1/5  10,062  10,092   9,942  10,015
2     2016/1/6   9,961  10,041   9,928  10,007
3     2016/1/7   9,946  10,060   9,889   9,968
4     2016/1/8   9,812   9,952   9,730   9,932
..         ...     ...     ...     ...     ...
937  2019/11/1  13,956  15,059  13,940  14,928
938  2019/11/5  13,893  15,054  13,820  14,968
939  2019/11/6  14,003  15,155  13,919  15,047
940  2019/11/7  14,180  15,054  14,057  15,041
941  2019/11/8  14,076  15,052  13,939  15,041

[942 rows x 5 columns]

Format du format du journal (informations de sortie telles que la date de journalisation)

journalisation --- fonction de journalisation pour Python Essayez de formater le format du journal en référence à

Success_case02.py


import pandas as pd
import logging

#Spécifiez le format du journal
# %(asctime)s :Une représentation lisible par l'homme de l'heure à laquelle le LogRecord a été généré.
# %(funcName)s :Le nom de la fonction qui contient l'appel de journalisation
# %(levelname)s :Niveau de journalisation des caractères pour les messages
# %(lineno)d :Numéro de la ligne source sur laquelle l'appel de journalisation a été émis
# %(message)s : msg %Message de journal demandé en tant qu'args
fomatter = '%(asctime)s:%(funcName)s:%(levelname)s:%(lineno)d:\n%(message)s'

#Spécification du nom du fichier de sortie du journal et du niveau de sortie du journal
#Ajouter une spécification de format de journal(paramètre de format)
logging.basicConfig(filename='CodeLog.log', level=logging.INFO, format=fomatter)

#Fichier CSV(SampleStock01.csv)Spécifiez le code de caractère de
dframe = pd.read_csv('SampleStock01_t1.csv', encoding='SJIS', \
	header=1, sep='\t')

logging.info(dframe)

CodeLog.log


2019-11-11 12:49:17,060:<module>:INFO:20:
Date d'ouverture prix prix haut prix bas prix de clôture
0     2016/1/4   9,934  10,055   9,933  10,000
1     2016/1/5  10,062  10,092   9,942  10,015
2     2016/1/6   9,961  10,041   9,928  10,007
3     2016/1/7   9,946  10,060   9,889   9,968
4     2016/1/8   9,812   9,952   9,730   9,932
..         ...     ...     ...     ...     ...
937  2019/11/1  13,956  15,059  13,940  14,928
938  2019/11/5  13,893  15,054  13,820  14,968
939  2019/11/6  14,003  15,155  13,919  15,047
940  2019/11/7  14,180  15,054  14,057  15,041
941  2019/11/8  14,076  15,052  13,939  15,041

[942 rows x 5 columns]

Utiliser un enregistreur

Dans le développement d'applications, c'est une pratique de définir la journalisation avec ** fonction principale ** et d'utiliser un enregistreur pour tout le reste, donc je l'ai utilisé même à petite échelle où je ne trouve pas le besoin d'utiliser le journal comme habitude. je pense

Success_case03.py


import pandas as pd
import logging

#Spécifiez le format du journal
# %(asctime)s :Une représentation lisible par l'homme de l'heure à laquelle le LogRecord a été généré.
# %(funcName)s :Le nom de la fonction qui contient l'appel de journalisation
# %(levelname)s :Niveau de journalisation des caractères pour les messages
# %(lineno)d :Numéro de la ligne source sur laquelle l'appel de journalisation a été émis
# %(message)s : msg %Message de journal demandé en tant qu'args
fomatter = '%(asctime)s:%(funcName)s:%(levelname)s:%(lineno)d:\n%(message)s'

#Spécification du nom du fichier de sortie du journal et du niveau de sortie du journal
#Ajouter une spécification de format de journal(paramètre de format)
logging.basicConfig(filename='CodeLog.log', level=logging.INFO, format=fomatter)

#Paramètres de l'enregistreur(Niveau de journalisation INFO)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

#Fichier CSV(SampleStock01.csv)Spécifiez le code de caractère de
dframe = pd.read_csv('SampleStock01_t1.csv', encoding='SJIS', \
	header=1, sep='\t')

#Changer pour utiliser l'enregistreur
logger.info(dframe)

CodeLog.log


2019-11-11 13:00:59,279:<module>:INFO:25:
Date d'ouverture prix prix haut prix bas prix de clôture
0     2016/1/4   9,934  10,055   9,933  10,000
1     2016/1/5  10,062  10,092   9,942  10,015
2     2016/1/6   9,961  10,041   9,928  10,007
3     2016/1/7   9,946  10,060   9,889   9,968
4     2016/1/8   9,812   9,952   9,730   9,932
..         ...     ...     ...     ...     ...
937  2019/11/1  13,956  15,059  13,940  14,928
938  2019/11/5  13,893  15,054  13,820  14,968
939  2019/11/6  14,003  15,155  13,919  15,047
940  2019/11/7  14,180  15,054  14,057  15,041
941  2019/11/8  14,076  15,052  13,939  15,041

[942 rows x 5 columns]

Utiliser le gestionnaire

Pour être honnête, je ne sais pas encore "pourquoi je dois l'écrire comme ça", mais je l'écris parce qu'il vaut mieux que les débutants s'habituent à ce format. À l'avenir, si vous trouvez la valeur de cette méthode de description, nous la corrigerons le cas échéant.

Success_case04.py


import pandas as pd
import logging

#Spécifiez le format du journal
# %(asctime)s :Une représentation lisible par l'homme de l'heure à laquelle le LogRecord a été généré.
# %(funcName)s :Le nom de la fonction qui contient l'appel de journalisation
# %(levelname)s :Niveau de journalisation des caractères pour les messages
# %(lineno)d :Numéro de la ligne source sur laquelle l'appel de journalisation a été émis
# %(message)s : msg %Message de journal demandé en tant qu'args
fomatter = logging.Formatter('%(asctime)s:%(funcName)s:%(levelname)s:%(lineno)d:\n%(message)s')

#Paramètres de l'enregistreur(Niveau de journalisation INFO)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

#Paramètres du gestionnaire(Modifier le fichier de sortie/Réglage du niveau de journal/Paramètres de format de journal)
handler = logging.FileHandler('handler_log.log')
handler.setLevel(logging.INFO)
handler.setFormatter(fomatter)

logger.addHandler(handler)

#Fichier CSV(SampleStock01.csv)Spécifiez le code de caractère de
dframe = pd.read_csv('SampleStock01_t1.csv', encoding='SJIS', \
	header=1, sep='\t')

#Changer pour utiliser l'enregistreur
logger.info(dframe)

handler_log.log


2019-11-11 13:31:56,161:<module>:INFO:28:
Date d'ouverture prix prix haut prix bas prix de clôture
0     2016/1/4   9,934  10,055   9,933  10,000
1     2016/1/5  10,062  10,092   9,942  10,015
2     2016/1/6   9,961  10,041   9,928  10,007
3     2016/1/7   9,946  10,060   9,889   9,968
4     2016/1/8   9,812   9,952   9,730   9,932
..         ...     ...     ...     ...     ...
937  2019/11/1  13,956  15,059  13,940  14,928
938  2019/11/5  13,893  15,054  13,820  14,968
939  2019/11/6  14,003  15,155  13,919  15,047
940  2019/11/7  14,180  15,054  14,057  15,041
941  2019/11/8  14,076  15,052  13,939  15,041

[942 rows x 5 columns]

finalement

Lorsque j'essaie de publier en continu avec Qiita, je reçois un message me demandant de publier après un certain temps. Je ne sais pas car la charge sur le serveur va augmenter, mais si je veux publier les informations que j'ai étudiées à tout moment, c'est dommage que les informations que je souhaite écrire disparaissent de mon esprit. Eh bien, c'est très facile à utiliser, donc je ne suis pas mécontent.

Cette fois, les informations n'ont aucun rapport avec l'analyse des actions, mais la prochaine fois, j'aimerais écrire un article sur le jeu avec panda et matplotlib. La sortie du journal est si importante que je voulais l'inclure dans les premières étapes.

Recommended Posts

[Analyse du cours de l'action] pandas apprenant avec des données fictives (002: sortie log)
[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)
[Analyse du cours de l'action] Apprenez les pandas avec la moyenne Nikkei (004: Changer les données lues en moyenne Nikkei)
Téléchargez les données de cours des actions japonaises avec Python
Analyse de données à partir de python (pré-traitement des données-apprentissage automatique)
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
Acquisition automatique des données de cours des actions avec docker-compose
Prévision du cours de l'action à l'aide du Deep Learning [acquisition de données]
Analyse de données avec python 2
Visualisation des données avec les pandas
Mélangez les données avec les pandas
Analyse de données avec Python
Construction d'un environnement d'analyse de données avec Python (notebook IPython + Pandas)
Il y a un manque de données lors de l'acquisition de données sur le cours des actions avec Pandas-datareader
Obtenez des stocks avec Python
Conseils d'acquisition de données de cours de bourse
Analyse de données à l'aide de pandas python
Conseils de traitement des données avec Pandas
Obtenez des informations sur les actions japonaises de Yahoo Finance avec Pandas
Fichier journal de sortie avec Job (Notebook) de Cloud Pak for Data
Entrée / sortie avec Python (mémo d'apprentissage Python ⑤)
Traçage de données polyvalent avec pandas + matplotlib
Analyse pratique avec Pandas + notebook Jupyter
Analyse de données à partir de python (visualisation de données 1)
Analyse de données à partir de python (visualisation de données 2)
Prévision du cours des actions à l'aide de l'apprentissage automatique (scikit-learn)
Tracez l'indice boursier moyen Nikkei avec des pandas
Sklearn de données déséquilibrées avec apprentissage automatique k-NN
J'ai essayé l'analyse factorielle avec des données Titanic!
Sortie du journal Python vers la console avec GAE
Essayez les prévisions de prix Bitcoin avec Deep Learning
Prévision du cours des actions à l'aide du Deep Learning (TensorFlow)
[Python] Première analyse de données / apprentissage automatique (Kaggle)
Essayez de convertir en données ordonnées avec les pandas
Analyse émotionnelle des tweets avec apprentissage en profondeur
Prévision de stock avec TensorFlow (LSTM) ~ Prévision de stock Partie 1 ~
Prévision du cours des actions à l'aide de l'apprentissage automatique (édition de retour)
Prétraitement dans l'apprentissage automatique 1 Processus d'analyse des données
Gérez les structures de données 3D avec les pandas
Exemple de traitement efficace des données avec PANDAS
Meilleures pratiques pour manipuler les données avec les pandas
Analyse des données de pratique Python Résumé de l'apprentissage que j'ai atteint environ 10 avec 100 coups
La première étape de l'analyse du journal (comment formater et mettre les données du journal dans Pandas)