[PYTHON] [Aktienkursanalyse] Pandas lernen mit fiktiven Daten (002: Protokollausgabe)

Aus der Fortsetzung des letzten Males (DataFrame laden)

Nach einigem Ausprobieren gelang es mir schließlich, read_csv zu lesen. (Es gibt keinen besonderen Grund, warum ich read_table das letzte Mal nicht verwendet habe. Um ehrlich zu sein, denke ich, dass es für read_csv und read_table dasselbe ist.)

[Aktienkursanalyse] Pandas lernen mit fiktiven Daten (001: Lesen von Umgebungsvorbereitungsdateien)

~~ ↑ Die Adresse des vorherigen Artikels lautet https://qiita.com/waka_taka/items/93049e603dcdd046cc01 Ich habe es erwähnt, weil es war, aber ich wollte es einbetten, https://camo.qiitausercontent.com/d76aa803f668e38e03042f90af5a95c8ce768712/68747470733a2f2f71696974612e636f6d2f77616b615f74616b612f6974656d732f3933303439653630336463646430343663633031 Es wurde konvertiert und nicht gut verknüpft. (Ist es die Spezifikation von Qiita? Ich bin noch nicht an das MarkDown-Format gewöhnt, daher fühlt es sich wie ein einfacher, nachlässiger Fehler an, aber ...) ~~

Es war ein normaler nachlässiger Fehler. .. .. Ich habe es gerade in die Bildeinbettungssyntax geschrieben.

Protokollierungsfunktion implementiert

Da es eine große Sache ist, ist es umständlich, die Debug-Informationen einzeln mit einer print-Anweisung auszugeben. Daher werde ich versuchen, sie während des Studiums der Protokollierung zu implementieren. Dieser Artikel hat nichts mit Aktienanalyse zu tun.

Success_case01.py


import pandas as pd
import logging

#Angeben des Namens der Protokollausgabedatei und der Protokollausgabestufe
logging.basicConfig(filename='CodeLog.log', level=logging.INFO)

#CSV-Datei(SampleStock01.csv)Geben Sie den Zeichencode von an
dframe = pd.read_csv('SampleStock01_t1.csv', encoding='SJIS', \
	header=1, sep='\t')

#Ausgabe von Debug-Informationen
logging.info(dframe)

CodeLog.log


INFO:root:Datum Eröffnungspreis hoher Preis niedriger Preis Schlusskurs
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]

Protokollformat formatieren (Ausgabeinformationen wie Protokolldatum)

Protokollierung --- Protokollierungsfunktion für Python Versuchen Sie, das Protokollformat mit Bezug auf zu formatieren

Success_case02.py


import pandas as pd
import logging

#Geben Sie das Protokollformat an
# %(asctime)s :Eine lesbare Darstellung der Zeit, zu der der LogRecord generiert wurde.
# %(funcName)s :Der Name der Funktion, die den Protokollierungsaufruf enthält
# %(levelname)s :Zeichenprotokollierungsstufe für Nachrichten
# %(lineno)d :Quellzeilennummer, unter der der Protokollierungsanruf ausgegeben wurde
# %(message)s : msg %Protokollnachricht als Argumente angefordert
fomatter = '%(asctime)s:%(funcName)s:%(levelname)s:%(lineno)d:\n%(message)s'

#Angeben des Namens der Protokollausgabedatei und der Protokollausgabestufe
#Protokollformatspezifikation hinzufügen(Formatparameter)
logging.basicConfig(filename='CodeLog.log', level=logging.INFO, format=fomatter)

#CSV-Datei(SampleStock01.csv)Geben Sie den Zeichencode von an
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:
Datum Eröffnungspreis hoher Preis niedriger Preis Schlusskurs
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]

Verwenden Sie den Logger

In der Anwendungsentwicklung ist es üblich, die Protokollierung mit der ** Hauptfunktion ** festzulegen und den Logger für alles andere zu verwenden. Daher habe ich ihn auch in kleinem Maßstab verwendet, wo ich die Notwendigkeit, Logger als Gewohnheit zu verwenden, nicht feststellen kann. Ich denke

Success_case03.py


import pandas as pd
import logging

#Geben Sie das Protokollformat an
# %(asctime)s :Eine lesbare Darstellung der Zeit, zu der der LogRecord generiert wurde.
# %(funcName)s :Der Name der Funktion, die den Protokollierungsaufruf enthält
# %(levelname)s :Zeichenprotokollierungsstufe für Nachrichten
# %(lineno)d :Quellzeilennummer, unter der der Protokollierungsanruf ausgegeben wurde
# %(message)s : msg %Protokollnachricht als Argumente angefordert
fomatter = '%(asctime)s:%(funcName)s:%(levelname)s:%(lineno)d:\n%(message)s'

#Angeben des Namens der Protokollausgabedatei und der Protokollausgabestufe
#Protokollformatspezifikation hinzufügen(Formatparameter)
logging.basicConfig(filename='CodeLog.log', level=logging.INFO, format=fomatter)

#Logger-Einstellungen(INFO-Protokollstufe)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

#CSV-Datei(SampleStock01.csv)Geben Sie den Zeichencode von an
dframe = pd.read_csv('SampleStock01_t1.csv', encoding='SJIS', \
	header=1, sep='\t')

#Ändern Sie, um Logger zu verwenden
logger.info(dframe)

CodeLog.log


2019-11-11 13:00:59,279:<module>:INFO:25:
Datum Eröffnungspreis hoher Preis niedriger Preis Schlusskurs
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]

Handler verwenden

Um ehrlich zu sein, weiß ich noch nicht, "warum ich es so schreiben muss", aber ich schreibe es, weil es für Anfänger besser ist, sich an dieses Format zu gewöhnen. Wenn Sie in Zukunft den Wert dieser Beschreibungsmethode finden, werden wir ihn entsprechend korrigieren.

Success_case04.py


import pandas as pd
import logging

#Geben Sie das Protokollformat an
# %(asctime)s :Eine lesbare Darstellung der Zeit, zu der der LogRecord generiert wurde.
# %(funcName)s :Der Name der Funktion, die den Protokollierungsaufruf enthält
# %(levelname)s :Zeichenprotokollierungsstufe für Nachrichten
# %(lineno)d :Quellzeilennummer, unter der der Protokollierungsanruf ausgegeben wurde
# %(message)s : msg %Protokollnachricht als Argumente angefordert
fomatter = logging.Formatter('%(asctime)s:%(funcName)s:%(levelname)s:%(lineno)d:\n%(message)s')

#Logger-Einstellungen(INFO-Protokollstufe)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

#Handler-Einstellungen(Ausgabedatei ändern/Einstellung der Protokollebene/Protokollformateinstellungen)
handler = logging.FileHandler('handler_log.log')
handler.setLevel(logging.INFO)
handler.setFormatter(fomatter)

logger.addHandler(handler)

#CSV-Datei(SampleStock01.csv)Geben Sie den Zeichencode von an
dframe = pd.read_csv('SampleStock01_t1.csv', encoding='SJIS', \
	header=1, sep='\t')

#Ändern Sie, um Logger zu verwenden
logger.info(dframe)

handler_log.log


2019-11-11 13:31:56,161:<module>:INFO:28:
Datum Eröffnungspreis hoher Preis niedriger Preis Schlusskurs
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]

Schließlich

Wenn ich versuche, kontinuierlich mit Qiita zu posten, erhalte ich eine Nachricht, in der ich nach einer Weile aufgefordert werde, zu posten. Ich weiß es nicht, weil die Belastung des Servers zunehmen wird, aber wenn ich die Informationen, die ich studiert habe, jederzeit veröffentlichen möchte, ist es eine Schande, dass die Informationen, die ich schreiben möchte, aus meinem Kopf verschwinden. Nun, es ist sehr einfach zu bedienen, daher bin ich damit nicht unzufrieden.

Dieses Mal haben die Informationen nichts mit der Aktienanalyse zu tun, aber beim nächsten Mal möchte ich einen Artikel über das Spielen mit Panda und Matplotlib schreiben. Die Protokollausgabe ist so wichtig, dass ich sie in den frühen Phasen einbeziehen wollte.

Recommended Posts

[Aktienkursanalyse] Pandas lernen mit fiktiven Daten (002: Protokollausgabe)
[Aktienkursanalyse] Pandas lernen mit fiktiven Daten (001: Vorbereitung der Umgebung auf das Lesen von Dateien)
[Aktienkursanalyse] Pandas mit fiktiven Daten lernen (003: Von der Typanordnung zum Candlestick-Chart)
[Aktienkursanalyse] Lernen Sie Pandas mit Nikkei-Durchschnitt (004: Ändern Sie die gelesenen Daten in Nikkei-Durchschnitt)
Laden Sie japanische Aktienkursdaten mit Python herunter
Datenanalyse beginnend mit Python (Datenvorverarbeitung - maschinelles Lernen)
Holen Sie sich Aktienkursdaten mit Quandl API [Python]
Automatische Erfassung von Aktienkursdaten mit Docker-Compose
Aktienkursprognose mit Deep Learning [Datenerfassung]
Datenanalyse mit Python 2
Datenvisualisierung mit Pandas
Daten mit Pandas mischen
Datenanalyse mit Python
Aufbau einer Datenanalyseumgebung mit Python (IPython Notebook + Pandas)
Bei der Erfassung von Aktienkursdaten mit Pandas-datareader fehlen Daten
Holen Sie sich Lager mit Python
Tipps zur Erfassung von Aktienkursdaten
Datenanalyse mit Python-Pandas
Datenverarbeitungstipps mit Pandas
Holen Sie sich japanische Aktieninformationen von Yahoo Finance mit Pandas
Protokolldatei mit Job (Notizbuch) von Cloud Pak for Data ausgeben
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
Vielseitige Datenerfassung mit Pandas + Matplotlib
Bequeme Analyse mit Pandas + Jupyter Notebook
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Aktienkursprognose mit maschinellem Lernen (Scikit-Learn)
Zeichnen Sie den Nikkei Average Stock Index mit Pandas
Unausgeglichenes Datenlernen mit maschinellem Lernen k-NN
Ich habe versucht, Faktoren mit Titanic-Daten zu analysieren!
Python-Protokoll mit GAE an die Konsole ausgeben
Probieren Sie die Bitcoin-Preisprognose mit Deep Learning aus
Aktienkursprognose mit Deep Learning (TensorFlow)
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
Versuchen Sie, mit Pandas in ordentliche Daten umzuwandeln
Emotionale Analyse von Tweets mit Deep Learning
Aktienprognose mit TensorFlow (LSTM) ~ Aktienprognose Teil 1 ~
Aktienkursprognose mit maschinellem Lernen (Return Edition)
Vorverarbeitung beim maschinellen Lernen 1 Datenanalyseprozess
Behandeln Sie 3D-Datenstrukturen mit Pandas
Beispiel für eine effiziente Datenverarbeitung mit PANDAS
Best Practices für den Umgang mit Daten mit Pandas
Python-Übungsdatenanalyse Zusammenfassung des Lernens, dass ich ungefähr 10 mit 100 Schlägen getroffen habe
Der erste Schritt zur Protokollanalyse (Formatieren und Einfügen von Protokolldaten in Pandas)