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.
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]
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]
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]
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]
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