[PYTHON] Analyse von Finanzdaten durch Pandas und deren Visualisierung (1)

Anwendung auf finanzielle und wirtschaftliche Bereiche

pandas ist ein Datenwerkzeug, das ab 2008 im Finanzbereich entwickelt wurde. Der Autor Wes McKinney war beim bekannten Quants Hedge Fund AQR Capital Management des Finanzsektors registriert. .. Aus diesem Grund verfügt es über eine Reihe leistungsstarker Funktionen, auch wenn es als praktisches Analysewerkzeug für Finanz- und Wirtschaftsdaten angesehen wird.

Wir werden den von Yahoo! Finance erhaltenen Datensatz mithilfe von Pandas analysieren. Dieses Mal werden wir einige Aktienbestandsdaten und tägliche Schlusskursdaten für den S & P 500 Index verwenden (Aktienkennung ist SPX).

Datensätze lesen und schreiben

pandas verfügt über Funktionen für die Ein- und Ausgabe wie CSV und JSON.

Funktion Erläuterung
read_csv ','Begrenzte Daten lesen
read_table Tab('\t')Begrenzte Daten lesen
read_json Lesen Sie Daten im JSON-Format
read_msgpack Lesen Sie Daten im msgpack-Format
read_pickle Binärdaten lesen

Die mit diesen gekoppelte Funktion to_XXX wird im Datenrahmen bereitgestellt, und Daten können in jedem Format ausgegeben werden. Es ist sehr einfach, nicht den CSV- oder JSON-Parser aufrufen zu müssen, um den Code zu schreiben.

import pandas as pd
stock = pd.read_csv('stock_px.csv', parse_dates=True, index_col=0)

Darüber hinaus wird automatisch ein Index für die aus CSV gelesenen Daten erstellt. Sie können auch ein neues Objekt mit einem neuen Index neu erstellen, der besser geeignet ist.

Ein weiteres Merkmal von Pandas ist, dass es fehlende Werte gut handhabt. Es ist nicht immer möglich, saubere Daten ohne Fehler in der Datenanalyse zu verarbeiten. Daher schließen alle Pandas-Objektstatistiken fehlende Werte aus. Sie können auch einen Schwellenwert festlegen, wie viele fehlende Werte zulässig sind, und die Lücken mit den angegebenen Werten füllen.

Umgang mit Datensatz

Das Auffinden und Aggregieren von Zusammenfassungsstatistiken und das Gruppieren nach Indexebene ist sehr einfach.

stock.head(10) #Nur die ersten 10 anzeigen
# =>
#             AAPL   MSFT    XOM     SPX
# 2003-01-02  7.40  21.11  29.22  909.03
# 2003-01-03  7.45  21.14  29.24  908.59
# 2003-01-06  7.45  21.52  29.96  929.01
# 2003-01-07  7.43  21.93  28.95  922.93
# 2003-01-08  7.28  21.31  28.83  909.93
# 2003-01-09  7.34  21.93  29.44  927.57
# 2003-01-10  7.36  21.97  29.03  927.57
# 2003-01-13  7.32  22.16  28.91  926.26
# 2003-01-14  7.30  22.39  29.17  931.66
# 2003-01-15  7.22  22.11  28.77  918.22

stock['AAPL'].sum() #gesamt
# => 277892.75

stock['AAPL'].mean() #Arithmetischer Durchschnitt
# => 125.51614724480578

stock['AAPL'].median() #Median
# => 91.45500000000001

Berechnung des gewichteten Durchschnitts

Lassen Sie uns herausfinden, inwieweit eine Korrelation zwischen den täglichen Gewinnen und dem SPX im Jahr besteht.

rets = stock.pct_change().dropna()
spx_corr = lambda x: x.corrwith(x['SPX'])
stock_by_year = rets.groupby(lambda x: x.year)

result_1 = stock_by_year.apply(spx_corr) #Korrelation zwischen Tagesgewinn und SPX
print( result_1 )
# =>          AAPL      MSFT       XOM  SPX
#   2003  0.541124  0.745174  0.661265    1
#   2004  0.374283  0.588531  0.557742    1
#   2005  0.467540  0.562374  0.631010    1
#   2006  0.428267  0.406126  0.518514    1
#   2007  0.508118  0.658770  0.786264    1
#   2008  0.681434  0.804626  0.828303    1
#   2009  0.707103  0.654902  0.797921    1
#   2010  0.710105  0.730118  0.839057    1
#   2011  0.691931  0.800996  0.859975    1

plt.figure() #Zeichnen auf der Leinwand
result_1.plot() #Grundstück mit Matplotlib
plt.show()
plt.savefig("image.png ")

image.png

Finden Sie die Korrelation zwischen Spalten.

result_2 = stock_by_year.apply(lambda g: g['AAPL'].corr(g['MSFT'])) #Korrelation zwischen Apple und Microsoft
print( result_2 )
# =>
# 2003    0.480868
# 2004    0.259024
# 2005    0.300093
# 2006    0.161735
# 2007    0.417738
# 2008    0.611901
# 2009    0.432738
# 2010    0.571946
# 2011    0.581987

plt.figure()
result_2.plot()
plt.show()
plt.savefig("image2.png ")

image2.png

Lineare Regression

Finden Sie die lineare Regression der Daten nach der Methode der kleinsten Quadrate.

def regression(data, yvar, xvars):
    Y = data[yvar]
    X = data[xvars]
    X['intercept'] = 1.
    result = sm.OLS(Y, X).fit()
    return result.params

result_3 = stock_by_year.apply(regression, 'AAPL', ['SPX'])
print(result_3)
# =>         SPX  intercept
# 2003  1.195406   0.000710
# 2004  1.363463   0.004201
# 2005  1.766415   0.003246
# 2006  1.645496   0.000080
# 2007  1.198761   0.003438
# 2008  0.968016  -0.001110
# 2009  0.879103   0.002954
# 2010  1.052608   0.001261
# 2011  0.806605   0.001514

plt.figure()
result_3.plot()
plt.show()
plt.savefig("image3.png ")

image3.png

Referenz

Einführung in die Datenanalyse mit Python-Datenverarbeitung mit NumPy und Pandas http://www.oreilly.co.jp/books/9784873116556/

Recommended Posts

Analyse von Finanzdaten durch Pandas und deren Visualisierung (2)
Analyse von Finanzdaten durch Pandas und deren Visualisierung (1)
Praxis der Datenanalyse durch Python und Pandas (Tokyo COVID-19 Data Edition)
Visualisierung von Daten nach Präfektur
Visualisierung von Daten anhand einer erklärenden Variablen und einer objektiven Variablen
Visualisierung und Analyse von Stava Twitter-Datenstandortinformationen
Implementieren Sie "Data Visualization Design # 3" mit Pandas und Matplotlib
Berechnung der technischen Indikatoren durch TA-Lib und Pandas
Emotionale Analyse umfangreicher Tweet-Daten durch NLTK
Datenvisualisierung mit Pandas
Übersicht und Tipps von Seaborn mit statistischer Datenvisualisierung
Geschichte der Bildanalyse von PDF-Dateien und Datenextraktion
[Regelungstechnik] Visualisierung und Analyse der PID-Regelung und der Sprungantwort
Analyse der Messdaten (2) -Hydrobacter und Anpassung, lmfit Empfehlung-
Überblick über die Verarbeitung natürlicher Sprache und ihre Datenvorverarbeitung
Visualisierungsnotiz von Pandas, Seaborn
Datenanalyse mit Python-Pandas
Negative / positive Beurteilung von Sätzen und Visualisierung von Gründen durch Transformer
Negative / positive Beurteilung von Sätzen durch BERT und Visualisierung von Gründen
Beginn der Niko Niko Encyclopedia Analysis ~ JSON und berühren Sie die bereitgestellten Daten ~
Erste Satellitendatenanalyse von Tellus
Empfohlene Bücher und Quellen für die Datenanalyseprogrammierung (Python oder R)
Datenvisualisierungsmethode mit Matplotlib (+ Pandas) (5)
Automatische Erfassung von Genexpressionsdaten durch Python und R.
Wissenschaftlich-technische Berechnung mit Python] Zeichnen und Visualisieren von 3D-Isoplanes und deren Querschnittsansichten mit Mayavi
Datenvisualisierungsmethode mit Matplotlib (+ Pandas) (3)
Impressionen von Touch, einem von Python erstellten Datenvisualisierungstool
10 Auswahlen der Datenextraktion durch pandas.DataFrame.query
Animation von Geodaten durch Geopandas
Empfehlung zur Datenanalyse mit MessagePack
Zeitreihenanalyse 3 Vorverarbeitung von Zeitreihendaten
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Datenvisualisierungsmethode mit Matplotlib (+ Pandas) (4)
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Aggregation und Visualisierung akkumulierter Zahlen
Datenverarbeitung 2 Analyse verschiedener Datenformate
Stellen Sie das Verhältnis von Topcoder, Codeforces und TOEIC nach Bewertung grafisch dar (Pandas + Seaborn).
Vorverarbeitung von Wikipedia-Dump-Dateien und gemeinsame Nutzung großer Datenmengen mit MeCab
Visualisierung von Breiten- / Längenkoordinatendaten (unter der Annahme meteorologischer Daten) unter Verwendung von Cartopy und Matplotlib
[In-Database Python Analysis-Lernprogramm mit SQL Server 2017] Schritt 3: Erkunden und Visualisieren von Daten
Zusammenfassung der Wahrscheinlichkeitsverteilungen, die häufig in Statistiken und Datenanalysen vorkommen
Python-Visualisierungstool für die Datenanalyse
Eine kleine Überprüfung von Pandas 1.0 und Dask
Beispiel einer dreidimensionalen Skelettanalyse von Python
Regressionsmodell mit Scikit-Learn und dessen Visualisierung
Korrelationsvisualisierung der Merkmalsmenge und der Zielvariablen
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Trennung von Design und Daten in matplotlib
Empfehlung von Altair! Datenvisualisierung mit Python
Analyse des Röntgenmikrotomographiebildes durch Python
Beispiel für eine effiziente Datenverarbeitung mit PANDAS
[Python] Von der morphologischen Analyse von CSV-Daten bis zur CSV-Ausgabe und Diagrammanzeige [GiNZA]
Schöne Grafikzeichnung mit Python-Seaborn erleichtert die Datenanalyse und -visualisierung Teil 1
[Python] Vergleich der Theorie und Implementierung der Hauptkomponentenanalyse durch Python (PCA, Kernel PCA, 2DPCA)
Die Bildanalyse war mit den von Microsoft COCO bereitgestellten Daten und der API einfach
Wunderschönes Zeichnen mit Python-Seaborn erleichtert die Datenanalyse und -visualisierung Teil 2
Vorhersage kurzlebiger Arbeiten von Weekly Shonen Jump durch maschinelles Lernen (Teil 1: Datenanalyse)
Der erste Schritt zur Protokollanalyse (Formatieren und Einfügen von Protokolldaten in Pandas)
Praxis der Erstellung einer Datenanalyseplattform mit BigQuery und Cloud DataFlow (Datenverarbeitung)