Ich habe eine Protokollausgabefunktion erstellt, daher möchte ich weiterhin Pandas studieren.
Bis zum letzten Mal
import pandas as pd
Ich habe nur importiert, aber ich habe Serien, DataFrame und Numpy importiert. Übrigens werde ich als Praxis von Pandas einen Prozess hinzufügen, um den Index und die spezifische Verschränkung auszugeben.
Success_case01.py
import pandas as pd
import logging
#[Aktienkursanalyse] Pandas mit fiktiven Daten lernen(003)Fügen Sie mehr hinzu
from pandas import Series, DataFrame
import numpy as np
#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('info_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)
#Ausgabeindex
logger.info(dframe.columns)
#Ausgabe nur offene und geschlossene Preise
logger.info(dframe[['Offener Preis','Schlusskurs']])
Die folgenden Inhalte werden als Indexwerte aufgezeichnet.
info_log.log
2019-11-11 20:04:13,275:<module>:INFO:33:
Index(['Datum', 'Offener Preis', 'Hoher Preis', 'Niedriger Preis', 'Schlusskurs'], dtype='object')
Ich konnte problemlos nur die Eröffnungs- und Schlusskursdaten extrahieren.
info_log.log
2019-11-11 20:04:13,290:<module>:INFO:35:
Offener Preis Schlusskurs
0 9,934 10,000
1 10,062 10,015
2 9,961 10,007
3 9,946 9,968
4 9,812 9,932
.. ... ...
937 13,956 14,928
938 13,893 14,968
939 14,003 15,047
940 14,180 15,041
941 14,076 15,041
[942 rows x 2 columns]
Die Punkte sind nur die folgenden zwei Linien.
Point_Code.py
#In Datumstyp konvertieren
dframe['Datum'] = pd.to_datetime(dframe['Datum'])
#Geben Sie eine Datumsspalte als Index an
dframe = dframe.set_index('Datum')
Für alle Fälle lautet der gesamte Code einschließlich der Debug-Informationen wie folgt. (Blog-Artikel sind nützlich, da Sie solche redundanten Beschreibungen nicht in einem Papier-Nachschlagewerk erstellen können.)
Success_case02.py
import pandas as pd
import logging
#[Aktienkursanalyse] Pandas mit fiktiven Daten lernen(003)Fügen Sie mehr hinzu
from pandas import Series, DataFrame
import numpy as np
#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('info_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')
#In Datumstyp konvertieren
dframe['Datum'] = pd.to_datetime(dframe['Datum'])
#Geben Sie eine Datumsspalte als Index an
dframe = dframe.set_index('Datum')
#Ändern Sie, um Logger zu verwenden
logger.info(dframe)
#Ausgabeindex
logger.info(dframe.columns)
#Ausgabe nur offene und geschlossene Preise
logger.info(dframe[['Offener Preis','Schlusskurs']])
#Überprüfen des Index
logger.info(dframe.index)
#Typbestätigung
logger.info(dframe.dtypes)
Die Indexinformationen werden wie folgt angezeigt.
info_log.log
2019-11-11 20:31:44,825:<module>:INFO:44:
DatetimeIndex(['2016-01-04', '2016-01-05', '2016-01-06', '2016-01-07',
'2016-01-08', '2016-01-12', '2016-01-13', '2016-01-14',
'2016-01-15', '2016-01-18',
...
'2019-10-25', '2019-10-28', '2019-10-29', '2019-10-30',
'2019-10-31', '2019-11-01', '2019-11-05', '2019-11-06',
'2019-11-07', '2019-11-08'],
dtype='datetime64[ns]', name='Datum', length=942, freq=None)
Da andere offene Preise, hohe Preise, niedrige Preise und Schlusskurse wie unten gezeigt im Objekttyp gespeichert sind, kann keine numerische Berechnung durchgeführt werden, sodass sie im nächsten Abschnitt in den Typ float32 konvertiert werden.
info_log.log
2019-11-11 20:38:35,216:<module>:INFO:44:
Preisobjekt öffnen
Überteuertes Objekt
Niedrigpreisobjekt
Schlusspreisobjekt
dtype: object
Ich habe vergessen, es zu erwähnen, aber der Index vor ** pd.to_datetime (dframe ['date']) ** wird wie folgt angezeigt.
info_log.log
2019-11-11 20:36:22,326:<module>:INFO:37:
RangeIndex(start=0, stop=942, step=1)
Point_Code.py
dframe = dframe.apply(lambda x: x.str.replace(',','')).astype(np.float64)
Ich werde diesmal nicht den vollständigen Code veröffentlichen, da dieser zu redundant ist.
Da es sich wie unten gezeigt um einen numerischen Typ handelt, wird es in Zukunft möglich sein, ihn zu berechnen und grafisch darzustellen.
info_log.log
2019-11-11 20:53:35,326:<module>:INFO:46:
Offener Preis float32
Hoher float32
Niedriger Preis float32
Schlusskurs float32
dtype: object
Wenn hier
fail_Code01.py
dframe = dframe.astype(np.float64)
Wenn Sie es einfach versuchen, wird zu Beginn ein Eröffnungsfehler zum Eröffnungspreis ausgespuckt.
ValueError: could not convert string to float: '9,934'
Diesmal gab es kein Problem, da es sich um die Daten handelte, die ich selbst vorbereitet habe. Bei der Analyse unbekannter Daten besteht jedoch die Möglichkeit, dass anstelle einer Zahl mit Komma eine Zeichenfolge wie "abcde" eingefügt wird. Dies gilt auch für die Fehlerbehandlung Es ist ein Punkt, auf den man sich leicht einlassen kann, wenn man es nicht tut.
An einem solchen Ort möchte ich ein cooles Protokoll mit ** logger.exception () ** usw. ausgeben, aber ab dem 11. November 2019 habe ich nicht die Fähigkeiten in diesem Umfang, so dass ich es als zukünftige Aufgabe belassen werde.
Paketinstallation zur Erstellung von Candlestick-Diagrammen
Eingabeaufforderung
pip install https://github.com/matplotlib/mpl_finance/archive/master.zip
Point_Code.py
(Weggelassen)
import matplotlib.dates as mdates
from mpl_finance import candlestick_ohlc
(Weggelassen)
#Daten zum Plotten erstellen
ohlc = zip(mdates.date2num(dframe.index), dframe['Offener Preis'], dframe['Schlusskurs'], dframe['Hoher Preis'], dframe['Schlusskurs'])
logger.info(ohlc)
#Einen Campus erstellen
fig = plt.figure()
#Formatieren Sie die X-Achse
ax = plt.subplot()
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y/%m/%d'))
#Zeichnen Sie ein Candlestick-Diagramm
candlestick_ohlc(ax, ohlc, width=0.7, colorup='g', colordown='r')
#Bild speichern
plt.savefig('Candle_Chart.png')
Ich habe ein Candlestick-Diagramm erstellt, aber die Daten, die ich vorbereitet habe, waren so schrecklich, dass ich keine Lust mehr hatte, weiterzumachen. .. ..
Ab dem nächsten Artikel möchte ich den Code organisieren, die Funktionen von Panda nutzen und das Diagramm verbessern, während ich ein wenig bessere Daten vorbereite.
Study_Code.py
import pandas as pd
import logging
#[Aktienkursanalyse] Pandas mit fiktiven Daten lernen(003)Fügen Sie mehr hinzu
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from mpl_finance import candlestick_ohlc
#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('info_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')
#In Datumstyp konvertieren
dframe['Datum'] = pd.to_datetime(dframe['Datum'])
#Geben Sie eine Datumsspalte als Index an
dframe = dframe.set_index('Datum')
#Wandeln Sie den Eröffnungskurs in den Schlusskurs in einen numerischen Wert um
dframe = dframe.apply(lambda x: x.str.replace(',','')).astype(np.float32)
#Ändern Sie, um Logger zu verwenden
logger.info(dframe)
#Ausgabeindex
logger.info(dframe.columns)
#Ausgabe nur offene und geschlossene Preise
logger.info(dframe[['Offener Preis','Schlusskurs']])
#Überprüfen des Index
logger.info(dframe.index)
#Typbestätigung
logger.info(dframe.dtypes)
#Daten zum Plotten erstellen
ohlc = zip(mdates.date2num(dframe.index), dframe['Offener Preis'], dframe['Schlusskurs'], dframe['Hoher Preis'], dframe['Schlusskurs'])
logger.info(ohlc)
#Einen Campus erstellen
fig = plt.figure()
#Formatieren Sie die X-Achse
ax = plt.subplot()
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y/%m/%d'))
#Zeichnen Sie ein Candlestick-Diagramm
candlestick_ohlc(ax, ohlc, width=0.7, colorup='g', colordown='r')
#Bild speichern
plt.savefig('Candle_Chart.png')
Auch hier waren die Daten, die ich vorbereitet habe, etwas zu schrecklich, daher möchte ich ab dem nächsten Mal andere Daten vorbereiten und einen Artikel schreiben.
Recommended Posts