[PYTHON] [Aktienkursanalyse] Lernen Sie Pandas mit Nikkei-Durchschnitt (004: Ändern Sie die gelesenen Daten in Nikkei-Durchschnitt)

Von der Fortsetzung des letzten Males (bis zur Erstellung des Candlestick-Diagramms)

Bei der Durchführung der Analyse dachte ich, dass künstliche Daten, die einfach zu analysieren sind, besser sind als der Umgang mit nicht lesbaren Daten, aber [das zuletzt erstellte Diagramm](https: // qiita. com / waka_taka / items / ab2f3b8fc6475d1c1a51 #% E5% AE% 9F% E8% A1% 8C% E7% B5% 90% E6% 9E% 9C-2) ist nicht so realistisch, daher habe ich meine Motivation verloren Ich tat.

Ich finde es wirklich dumm, weil ich die Daten selbst gemacht habe und nicht motiviert war.

Daher möchte ich die tatsächlichen Trends des Nikkei-Durchschnitts (4. Januar 2016 bis 8. November 2019) analysieren.

In diesem Artikel möchte ich das Programm vorerst auf dem aktuellen Stand halten, die gelesenen Daten ändern und die Details des Programms untersuchen.

Bis zum letzten Mal programmieren (neu posten)

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('NikkeiAverage.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')

Ausführungsergebnis (Grafik beim Lesen des Nikkei-Durchschnitts)

Offensichtlich sieht die Grafik gut aus. (Obwohl es notwendig ist, das Erscheinungsbild des Diagramms selbst zu korrigieren ...)

Candle_Chart.png

Informationen zum Code des Funktionsteils für die Ploterstellung

Ich habe es beiläufig geschrieben, aber ich verstehe den folgenden Teil nicht gut, deshalb werde ich ihn einzeln zerlegen und überprüfen.

Confirm_Code.py


ohlc = zip(mdates.date2num(dframe.index), dframe['Offener Preis'], dframe['Schlusskurs'], dframe['Hoch

Überprüfen Sie die Daten in den Variablen dframe.index und mdates.date2num

Versuchen Sie zunächst, den folgenden Code zu erstellen, indem Sie die Teile entfernen, die für die Bestätigung nicht erforderlich sind.

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('NikkeiAverage.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)

#Daten zum Plotten erstellen
#ohlc = zip(mdates.date2num(dframe.index), dframe['Offener Preis'], dframe['Schlusskurs'], \
#	dframe['Hoher Preis'], dframe['Schlusskurs'])

# dframe.Überprüfen Sie den Inhalt des Index
logger.info(dframe.index)

Ausführungsergebnis

Der Inhalt von dframe.index speichert normalerweise Indexdaten.

info_log


2019-11-11 23:27:00,953:<module>:INFO:46:
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)

Dies ist wie erwartet.

Als nächstes war der Inhalt von mdates.date2num (dframe.index) die folgenden Zahlen.

info_log


2019-11-11 23:31:04,163:<module>:INFO:47:
[735967. 735968. 735969. 735970. 735971. 735975. 735976. 735977. 735978.
 735981. 735982. 735983. 735984. 735985. 735988. 735989. 735990. 735991.
(Weggelassen)
 737349. 737350. 737353. 737355. 737356. 737357. 737360. 737361. 737362.
 737363. 737364. 737368. 737369. 737370. 737371.]

das ist

  1. Konvertieren von '2016-01-04' in Nummern 735967
  2. Konvertieren von '2016-01-05' in Nummern 735968
  3. Konvertieren von '2016-01-06' in eine Nummer 735969 ︙
  4. Konvertieren von '2019-01-04' in Nummern 737370
  5. Konvertieren von '2019-01-04' in Nummern 737371 Bedeutet das ...

Ich bin nicht gut in Bezug auf datetime bezogene Python ... (Ich bin nicht gut in Datei-E / A, aber ich bin nicht gut in Datumsverarbeitung ...)

Überprüfen Sie den Inhalt des ohlc-Objekts

Das Datum, der offene Preis, der hohe Preis, der niedrige Preis und der Schlusskurs werden wahrscheinlich in einem Tappeltyp gespeichert, aber ich werde es für alle Fälle überprüfen. Ich benutze die Zip-Funktion nicht, wenn ich mein eigenes Programm mache.

Bestätigungscode

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

#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)

logger.addHandler(handler)

#CSV-Datei(SampleStock01.csv)Geben Sie den Zeichencode von an
dframe = pd.read_csv('NikkeiAverage.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)

#Daten zum Plotten erstellen
ohlc = zip(mdates.date2num(dframe.index), dframe['Offener Preis'], dframe['Schlusskurs'], \
	dframe['Hoher Preis'], dframe['Schlusskurs'])

#Bestätigung des Inhalts von ohlc
for output_data in ohlc :
	logger.info(output_data)

Ausführungsergebnis

Ich war vorerst zufrieden, weil die Ergebnisse wie erwartet waren.

info_log


2019-11-11 23:48:26,636:<module>:INFO:47:
(735967.0, 18818.580078125, 18450.98046875, 18951.119140625, 18450.98046875)
(735968.0, 18398.759765625, 18374.0, 18547.380859375, 18374.0)
(735969.0, 18410.5703125, 18191.3203125, 18469.380859375, 18191.3203125)

"Kürzung"

(737369.0, 23343.509765625, 23303.8203125, 23352.560546875, 23303.8203125)
(737370.0, 23283.140625, 23330.3203125, 23336.0, 23330.3203125)
(737371.0, 23550.0390625, 23391.869140625, 23591.08984375, 23391.869140625)

Schreiben Sie ein geeignetes Candlestick-Diagramm und überprüfen Sie die Funktion.

Ich habe die matplotlib-Beispielseite gelesen, aber ich habe die Funktion ** candlestick_ohlc ** nicht so oft verwendet, daher werde ich versuchen, den Vorgang mit einigen Beispielen zu überprüfen.

  1. November 2019 23:54 ・ ・ ・ Schreiben

Recommended Posts

[Aktienkursanalyse] Lernen Sie Pandas mit Nikkei-Durchschnitt (004: Ändern Sie die gelesenen Daten in Nikkei-Durchschnitt)
[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)
Zeichnen Sie den Nikkei Average Stock Index mit Pandas
Laden Sie japanische Aktienkursdaten mit Python herunter
Versuchen Sie, mit Pandas in ordentliche Daten umzuwandeln
Wie man Problemdaten mit Paiza liest
Pandas Daten lesen
Versuchen Sie, Doujin-Musikdaten mit Pandas zu aggregieren
Lesen Sie Python-CSV-Daten mit Pandas ⇒ Graph mit Matplotlib
[Python] Wie man Excel-Dateien mit Pandas liest
Holen Sie sich Aktienkursdaten mit Quandl API [Python]
[Einführung zur Minimierung] Datenanalyse mit SEIR-Modell ♬
Automatische Erfassung von Aktienkursdaten mit Docker-Compose
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Pandas lernen mit Chemoinfomatik
So konvertieren Sie horizontal gehaltene Daten mit Pandas in vertikal gehaltene Daten
Lesehinweis: Einführung in die Datenanalyse mit Python
Aufbau einer Datenanalyseumgebung mit Python (IPython Notebook + Pandas)
Bei der Erfassung von Aktienkursdaten mit Pandas-datareader fehlen Daten
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
[Python] Umgang mit Pandas read_html Lesefehler
Datenvisualisierung mit Pandas
Datenmanipulation mit Pandas!
Daten mit Pandas mischen
Datenanalyse mit Python
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
Einfallsreichtum beim speichersparenden Umgang mit Daten mit Pandas
20200329_Einführung in die Datenanalyse mit Python 2nd Edition Personal Summary
Lesen einer Excel-Datei (.xlsx) mit Pandas [Python]
Holen Sie sich japanische Aktieninformationen von Yahoo Finance mit Pandas
Lesen Sie CSV mit Python-Pandas
Lernen Sie neue Daten mit PaintsChainer
[Python] Ändere den Typ mit Pandas
Aktienkursprognose mit Tensorflow
Holen Sie sich Lager mit Python
Tipps zur Erfassung von Aktienkursdaten
Datenanalyse mit Python-Pandas
Datenverarbeitungstipps mit Pandas
Lesen von JSON-Daten mit Python
[Aktienkursanalyse] Nikkei durchschnittliches Pandas-Lernen (005: Gruppierung nach Jahr / Jahr - Bestätigung statistischer Informationen)
Aktienkurs mit "neuer Corona" gesunken? Ich habe versucht, den durchschnittlichen Aktienkurs von Nikkei durch Web-Scraping zu ermitteln
Einführung in die Datenanalyse mit Python P32-P43 [ch02 3.US Babynamen 1880-2010]
Einführung in die Datenanalyse mit Python P17-P26 [ch02 1.usa.gov Daten von bit.ly]
Dateningenieure lernen DevOps im Hinblick auf MLOps. ① Erste Schritte
Links zu Personen, die gerade mit der Datenanalyse mit Python beginnen
[Pandas] Ich habe versucht, Verkaufsdaten mit Python zu analysieren. [Für Anfänger]
Verschieben Sie Daten mit Python Change / Delete (Writer und Reader) nach LDAP.
Lesen von e-Stat-Subregionsdaten
Umgang mit unausgeglichenen Daten
Vielseitige Datenerfassung mit Pandas + Matplotlib
Aufblasen von Daten (Datenerweiterung) mit PyTorch
Bequeme Analyse mit Pandas + Jupyter Notebook
Ich möchte ○○ mit Pandas machen
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Ich habe versucht, fMRI-Daten mit Python zu analysieren (Einführung in die Dekodierung von Gehirninformationen)