Ich möchte Aktien als Lernfach behandeln, bin aber nicht sicher, ob ich sie mit Rohdaten analysieren kann. Daher möchte ich einige künstliche Daten erstellen und mit Python ausführen. Ich möchte mit dem Zweck fortfahren, das Python-Programm zu lernen.
Wir bearbeiten Handelstermine vom 4. Januar 2016 bis zum 8. November 2019. Darüber hinaus sind diese Daten
Zeitraum | Trend |
---|---|
2016 | Abnehmender Trend |
2017 | Neutral |
2018 | Zunehmende Tendenz |
2019 | Zunehmende Tendenz(Stärke) |
Es ist eine fiktive Marke, deren Schlusskurs sich mit ändert.
Ich möchte die Daten (Textdatei) hochladen, die ich verarbeitet habe, aber ich frage mich, ob Qiita nur Bilder hochladen kann ...
Dies ist eine 944-Zeilen-CSV-Datei, die die folgenden Informationen enthält.
SampleStock01.csv
Fiktive Firma 01
Datum,Offener Preis,Hoher Preis,Niedriger Preis,Schlusskurs
2016/1/4,9,934,10,055,9,933,10,000
2016/1/5,10,062,10,092,9,942,10,015
2016/1/6,9,961,10,041,9,928,10,007
2016/1/7,9,946,10,060,9,889,9,968
2016/1/8,9,812,9,952,9,730,9,932
2016/1/12,9,912,9,966,9,907,9,940
2016/1/13,9,681,9,964,9,607,9,928
2016/1/14,9,748,9,864,9,686,9,858
(Unterlassung)
Ich lerne gerade, also gehe ich von einer sauberen Umgebung aus. Die Lernumgebung ist
Eingabeaufforderung
python -m venv stock
.\stock\Scripts\Activate
Nach dem Upgrade von Pip mit Matplotlib und Pandas
Eingabeaufforderung
python -m pip install --upgrade pip
pip install matplotlib
pip install pandas
pip install Seaborn
Überprüfen Sie die installierten Pakete
Eingabeaufforderung
pip list
Package Version --------------- ------- cycler 0.10.0 kiwisolver 1.1.0 matplotlib 3.1.1 numpy 1.17.4 pandas 0.25.3 pip 19.3.1 pyparsing 2.4.5 python-dateutil 2.8.1 pytz 2019.3 scipy 1.3.2 seaborn 0.9.0 setuptools 40.8.0 six 1.13.0
Versuchen Sie zunächst, mit pd.read_csv () zu lesen, ohne an etwas zu denken.
fail_case01.py
import pandas as pd
dframe = pd.read_csv('SampleStock01.csv')
Wie erwartet wird ein Fehler zurückgegeben.
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
Das, was beim Umgang mit Python stolpert, ist der Datei-E / A-Teil ... Das Denken wird hier jedes Mal unterbrochen.
Das Fehlerbeispiel 01 ist jedoch eine Erwartungskategorie, und hier muss nur die Codierung angegeben werden.
fail_case02.py
import pandas as pd
#CSV-Datei(SampleStock01.csv)Geben Sie den Zeichencode von an
dframe = pd.read_csv('SampleStock01.csv', encoding="SJIS")
Ja. ich wusste Auch hier scheitert es.
pandas.errors.ParserError: Error tokenizing data. C error: Expected 5 fields in line 3, saw 9
Da die erste Zeile der CSV-Datei auf den Markennamen gesetzt ist, müssen Sie aus der zweiten Zeile lesen.
Dies ist nur eine Frage des Ignorierens der ersten Zeile und des Lesens aus der zweiten Zeile.
fail_case03.py
import pandas as pd
#CSV-Datei(SampleStock01.csv)Geben Sie den Zeichencode von an
dframe = pd.read_csv('SampleStock01.csv', encoding="SJIS", header=1)
print(dframe)
Datum Eröffnungspreis hoher Preis niedriger Preis Schlusskurs 2016/1/4 9 934 10 55 9 933 10 0 2016/1/5 10 62 10 92 9 942 10 15 2016/1/6 9 961 10 41 9 928 10 7 2016/1/7 9 946 10 60 9 889 9 968 2016/1/8 9 812 9 952 9 730 9 932 ... ... .. ... .. ... 2019/11/1 13 956 15 59 13 940 14 928 2019/11/5 13 893 15 54 13 820 14 968 2019/11/6 14 3 15 155 13 919 15 47 2019/11/7 14 180 15 54 14 57 15 41 2019/11/8 14 76 15 52 13 939 15 41
[942 rows x 5 columns]
Ich konnte es richtig in den Datenrahmen einlesen! Ich war damit zufrieden.
CSV-Trennzeichen "," und Zifferntrennzeichen "," sind gemischt </ font> </ strong> und können nicht korrekt in den Datenrahmen eingelesen werden.
CSV-Datei wollte ich lesen
SampleStock01.csv
Fiktive Firma 01
Datum,Offener Preis,Hoher Preis,Niedriger Preis,Schlusskurs
2016/1/4,9,934,10,055,9,933,10,000
2016/1/5,10,062,10,092,9,942,10,015
2016/1/6,9,961,10,041,9,928,10,007
2016/1/7,9,946,10,060,9,889,9,968
2016/1/8,9,812,9,952,9,730,9,932
2016/1/12,9,912,9,966,9,907,9,940
2016/1/13,9,681,9,964,9,607,9,928
2016/1/14,9,748,9,864,9,686,9,858
(Unterlassung)
Um ehrlich zu sein, denke ich, dass es keine andere Wahl gibt, als die gelesene Datei dafür zu ändern. Deshalb habe ich das CSV-Trennzeichen von "," in "Tabulatorzeichen" geändert. Was kann ich jedoch tun, wenn ich bei der Analyse von Geschäftsprotokollen auf ein solches Ereignis stoße? ?? Wenn jemand einen guten Weg kennt, lass es mich wissen.
Ändern Sie die zu lesende CSV wie folgt.
SampleStock01_t1.csv
Fiktive Firma 01
Datum Eröffnungspreis hoher Preis niedriger Preis Schlusskurs
2016/1/4 9,934 10,055 9,933 10,000
2016/1/5 10,062 10,092 9,942 10,015
2016/1/6 9,961 10,041 9,928 10,007
2016/1/7 9,946 10,060 9,889 9,968
2016/1/8 9,812 9,952 9,730 9,932
2016/1/12 9,912 9,966 9,907 9,940
2016/1/13 9,681 9,964 9,607 9,928
2016/1/14 9,748 9,864 9,686 9,858
(Unterlassung)
Ich habe zum vierten Mal versucht, ehrlich zu sein, indem ich einen Prozess hinzugefügt habe, um anzugeben, dass das Trennzeichen ein Tabulatorzeichen im Code ist.
Success_case.py
import pandas as pd
#CSV-Datei(SampleStock01.csv)Geben Sie den Zeichencode von an
import pandas as pd
#CSV-Datei(SampleStock01.csv)Geben Sie den Zeichencode von an
dframe = pd.read_csv('SampleStock01_t1.csv', encoding='SJIS', \
header=1, sep='\t')
print(dframe)
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]
Obwohl es viele Probleme wie Indexspezifikation und Spaltentyp gibt, wurde read_csv endgültig abgeschlossen. Für Nachschlagewerke sind es ein paar Arbeitsbereiche, aber ...
Datei-E / A ist die größte Herausforderung beim Umgang mit Datenrahmen, aber werden andere Leute leicht gehen? Nicht auf Datenrahmen beschränkt, Python als Ganzes, nein, Datei-E / A ist seit der Ära der C-Sprache ein Dämon für mich.
Sobald es geladen ist, ist es einfach, weil es ein Problem mit dem Programm ist. ((
Recommended Posts