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.
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')
Offensichtlich sieht die Grafik gut aus. (Obwohl es notwendig ist, das Erscheinungsbild des Diagramms selbst zu korrigieren ...)
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
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)
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
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 ...)
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)
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)
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.
Recommended Posts