Datenwissenschaft

Pandas-Datenrahmen-Tutorial

Pandas-Datenrahmen-Tutorial

Pandas für die numerische Analyse

Pandas wurde aus der Notwendigkeit heraus entwickelt, Finanzdaten in Python effizient zu verwalten.  Pandas ist eine Bibliothek, die in Python importiert werden kann, um die Manipulation und Transformation numerischer Daten zu unterstützen. Wes McKinney startete das Projekt 2008.  Pandas wird jetzt von einer Gruppe von Ingenieuren verwaltet und von der gemeinnützigen Organisation NUMFocus unterstützt, die sein zukünftiges Wachstum und seine Entwicklung sicherstellen wird. Dies bedeutet, dass Pandas über viele Jahre eine stabile Bibliothek sein und in Ihre Anwendungen eingebunden werden können, ohne sich um ein kleines Projekt kümmern zu müssen.

Obwohl pandas ursprünglich entwickelt wurde, um Finanzdaten zu modellieren, können seine Datenstrukturen verwendet werden, um eine Vielzahl numerischer Daten zu manipulieren.  Pandas verfügt über eine Reihe von integrierten Datenstrukturen, mit denen numerische Daten einfach modelliert und bearbeitet werden können. Dieses Tutorial behandelt die Pandas Datenrahmen Datenstruktur in der Tiefe.

Was ist ein DataFrame??

EIN Datenrahmen ist eine der primären Datenstrukturen in Pandas und stellt eine 2D-Datensammlung dar.  Es gibt viele analoge Objekte zu dieser Art von 2D-Datenstruktur, von denen einige die allseits beliebte Excel-Tabelle, eine Datenbanktabelle oder ein 2D-Array umfassen, die in den meisten Programmiersprachen zu finden sind.  Unten ist ein Beispiel für a Datenrahmen in einem grafischen Format.  Es stellt eine Gruppe von Zeitreihen von Aktienschlusskursen nach Datum dar.

Dieses Tutorial führt Sie durch viele der Methoden des Datenrahmens und ich werde ein reales Finanzmodell verwenden, um diese Funktionen zu demonstrieren.

Daten importieren

Pandas-Klassen verfügen über einige integrierte Methoden, die beim Importieren von Daten in eine Datenstruktur helfen. Unten ist ein Beispiel für den Import von Daten in ein pandas Panel mit dem DataReader Klasse.  Es kann verwendet werden, um Daten aus mehreren kostenlosen Finanzdatenquellen zu importieren, darunter Quandl, Yahoo Finance und Google. Um die Pandas-Bibliothek zu verwenden, müssen Sie sie als Import in Ihren Code einfügen.

Pandas als pd importieren

Die folgende Methode startet das Programm durch Ausführen der Tutorial-Ausführungsmethode.

if __name__ == "__main__":
tutorial_run()

Das tutorial_run Methode ist unten.  Es ist die nächste Methode, die ich dem Code hinzufügen werde.  Die erste Zeile dieser Methode definiert eine Liste von Börsentickern.  Diese Variable wird später im Code als Liste der Bestände verwendet, für die Daten angefordert werden, um die Datenrahmen.  Die zweite Codezeile ruft die Daten bekommen Methode.  Wie wir sehen werden, Daten bekommen Methode verwendet drei Parameter als Eingabe. Wir geben die Liste der Börsenticker, das Startdatum und das Enddatum für die von uns angeforderten Daten weiter.

def tutorial_run():
#Aktienticker zur Quelle von Yahoo Finance
Symbole = ['SPY', 'AAPL','GOOG']
#Daten bekommen
df = get_data(Symbole, '2006-01-03', '2017-12-31')

Im Folgenden definieren wir die Daten bekommen Methode.  Wie ich oben erwähnt habe, braucht es drei Parameter, eine Liste von Symbolen, ein Start- und Enddatum.

Die erste Codezeile definiert ein Pandas-Panel durch Instanziieren von a DataReader Klasse.  Der Ruf an die DataReader -Klasse verbindet sich mit dem Yahoo Finance-Server und fordert die täglichen Höchst-, Tiefst-, Schluss- und angepassten Schlusswerte für jede der Aktien im in Symbole aufführen.  Diese Daten werden von Pandas in ein Panel-Objekt geladen.

EIN Panel ist eine 3D-Matrix und kann als „Stapel“ von Datenrahmen.  Jeder Datenrahmen im Stack enthält einen der Tageswerte für die angeforderten Bestände und Datumsbereiche.  Zum Beispiel die unten Datenrahmen, zuvor präsentiert, ist der Schlusskurs Datenrahmen von der Anfrage.  Jeder Preistyp (Hoch, Tief, Schlusskurs und angepasster Schlusskurs) hat seinen eigenen Datenrahmen im resultierenden Panel, das von der Anfrage zurückgegeben wurde.

Die zweite Codezeile schneidet das Panel in ein einzelnes Datenrahmen und ordnet die resultierenden Daten zu df.  Das wird meine Variable für die Datenrahmen die ich für den Rest des Tutorials verwende.  Es enthält tägliche Schlusswerte für die drei Aktien für den angegebenen Datumsbereich.  Das Panel wird aufgeteilt, indem angegeben wird, welches Panel Datenrahmen Sie möchten zurückkehren.  In dieser Beispielcodezeile unten ist es das 'Schließen'.

Sobald wir unsere Datenrahmen an Ort und Stelle werde ich einige der nützlichen Funktionen in der Pandas-Bibliothek behandeln, die es uns ermöglichen, die Daten im Datenrahmen Objekt.

def get_data(Symbole, Startdatum, Enddatum):
Panel = Daten.DataReader(Symbole, 'yahoo', start_date, end_date)
df = panel['Schließen']
drucken (df.Kopf(5))
drucken (df.Schwanz(5))
zurück df

Kopf und Zahl

Die dritte und vierte Zeile von Daten bekommen Drucken Sie den Funktionskopf und das Ende des Datenrahmens.  Ich finde dies beim Debuggen und Visualisieren der Daten am nützlichsten, aber es kann auch verwendet werden, um die erste oder letzte Stichprobe der Daten in der Datei auszuwählen Datenrahmen.  Die Head-and-Tail-Funktion zieht die erste und letzte Datenzeile aus dem Datenrahmen.  Der ganzzahlige Parameter zwischen den Klammern definiert die Anzahl der Zeilen, die von der Methode ausgewählt werden sollen.

 .loc

Das Datenrahmen loc Methode schneidet die Datenrahmen nach Index.  Die folgende Codezeile schneidet die df Datenrahmen nach dem Index 2017-12-12.  Ich habe unten einen Screenshot der Ergebnisse bereitgestellt.

df . drucken.lo["2017-12-12"]

loc kann auch als zweidimensionale Schicht verwendet werden. Der erste Parameter ist die Zeile und der zweite Parameter ist die Spalte.  Der folgende Code gibt einen einzelnen Wert zurück, der dem Schlusskurs von Apple am 12.12.2014 entspricht.

df . drucken.loc["2017-12-12", "AAPL" ]

Das loc Methode kann verwendet werden, um alle Zeilen in einer Spalte oder alle Spalten in einer Zeile zu schneiden. Das : Operator wird verwendet, um alle zu bezeichnen.  Die folgende Codezeile wählt alle Zeilen in der Spalte für Google-Schlusskurse aus.

df . drucken.loc[: , "GOOG" ]

.Fillna

Es ist üblich, insbesondere in Finanzdatensätzen, NaN-Werte in Ihrem Datenrahmen.  Pandas bietet eine Funktion, um diese Werte mit einem numerischen Wert zu füllen.  Dies ist nützlich, wenn Sie eine Berechnung der Daten durchführen möchten, die aufgrund der NaN-Werte verzerrt sein oder fehlschlagen können.

Das .Fillna Methode ersetzt den angegebenen Wert für jeden NaN-Wert in Ihrem Datensatz.  Die folgende Codezeile füllt alle NaN in unserem Datenrahmen mit einer 0.  Dieser Standardwert kann für einen Wert geändert werden, der den Anforderungen des Datensatzes entspricht, mit dem Sie arbeiten, indem Sie den Parameter aktualisieren, der an die Methode übergeben wird.

df.füllen(0)

Normalisieren von Daten

Bei der Verwendung von maschinellen Lern- oder Finanzanalysealgorithmen ist es oft nützlich, Ihre Werte zu normalisieren.  Die folgende Methode ist eine effiziente Berechnung zum Normalisieren von Daten in einem Panda Datenrahmen.  Ich empfehle Ihnen, diese Methode zu verwenden, da dieser Code effizienter ausgeführt wird als andere Methoden zur Normalisierung und bei großen Datensätzen große Leistungssteigerungen zeigen kann.

.iloc ist eine ähnliche Methode wie .loc nimmt aber standortbasierte Parameter anstelle der tagbasierten Parameter.  Es nimmt einen nullten basierten Index anstelle des Spaltennamens aus dem .loc Beispiel.  Der folgende Normalisierungscode ist ein Beispiel für einige der leistungsstarken Matrixberechnungen, die durchgeführt werden können.  Ich werde die Lektion der linearen Algebra überspringen, aber im Wesentlichen wird diese Codezeile die gesamte Matrix teilen oder Datenrahmen durch den ersten Wert jeder Zeitreihe.   Abhängig von Ihrem Datensatz möchten Sie möglicherweise eine Norm basierend auf Min, Max oder Mittelwert.  Diese Normen können auch einfach mit dem untenstehenden matrixbasierten Stil berechnet werden.

def normalize_data(df):
Rückgabe df / df.iloc [0,:]

Plotten von Daten

Bei der Arbeit mit Daten ist es oft notwendig, diese grafisch darzustellen.  Mit der Plot-Methode können Sie ganz einfach ein Diagramm aus Ihren Datensätzen erstellen.

Die Methode unten nimmt unsere Datenrahmen und zeichnet es auf einem Standardliniendiagramm.  Die Methode dauert a Datenrahmen und ein Titel als Parameter.  Die erste Zeile der Codesätze Axt zu einer Handlung der DataFrame df.  Es legt den Titel und die Schriftgröße für den Text fest.  Die folgenden zwei Zeilen setzen die Beschriftungen für die x- und y-Achse.  Die letzte Codezeile ruft die show-Methode auf, die den Graphen auf der Konsole ausgibt. Ich habe einen Screenshot der Ergebnisse aus dem folgenden Plot bereitgestellt.  Dies stellt die normalisierten Schlusskurse für jede der Aktien über den ausgewählten Zeitraum dar.

def plot_data(df, title="Aktienkurse"):
ax = df.Plot(Titel=Titel,Schriftgröße = 2)
Axt.set_xlabel("Datum")
Axt.set_ylabel("Preis")
Handlung.Show()

Pandas ist eine robuste Datenmanipulationsbibliothek. Es kann für verschiedene Arten von Daten verwendet werden und bietet eine prägnante und effiziente Reihe von Methoden zur Manipulation Ihres Datensatzes. Unten habe ich den vollständigen Code aus dem Tutorial bereitgestellt, damit Sie ihn überprüfen und an Ihre Bedürfnisse anpassen können. Es gibt ein paar andere Methoden, die Ihnen bei der Datenmanipulation helfen, und ich empfehle Ihnen, die Pandas-Dokumente auf den folgenden Referenzseiten zu lesen. NumPy und MatPlotLib sind zwei weitere Bibliotheken, die sich gut für die Datenwissenschaft eignen und verwendet werden können, um die Leistung der Pandas-Bibliothek zu verbessern.

Vollständiger Code

Pandas als pd importieren
def plot_selected(df, Spalten, start_index, end_index):
plot_data(df.ix[start_index:end_index, Spalten])
def get_data(Symbole, Startdatum, Enddatum):
Panel = Daten.DataReader(Symbole, 'yahoo', start_date, end_date)
df = panel['Schließen']
drucken (df.Kopf(5))
drucken (df.Schwanz(5))
df . drucken.lo["2017-12-12"]
df . drucken.loc["2017-12-12", "AAPL" ]
df . drucken.loc[: , "GOOG" ]
df.füllen(0)
zurück df
def normalize_data(df):
Rückgabe df / df.ix[0,:]
def plot_data(df, title="Aktienkurse"):
ax = df.Plot(Titel=Titel,Schriftgröße = 2)
Axt.set_xlabel("Datum")
Axt.set_ylabel("Preis")
Handlung.Show()
def tutorial_run():
#Symbole auswählen
Symbole = ['SPY', 'AAPL','GOOG']
#Daten bekommen
df = get_data(Symbole, '2006-01-03', '2017-12-31')
plot_data(df)
if __name__ == "__main__":
tutorial_run()

Verweise

Pandas-Homepage
Pandas Wikipedia-Seite
https://de.Wikipedia.org/wiki/Wes_McKinney
NumFocus-Startseite

Die 5 besten Arcade-Spiele für Linux
Heutzutage sind Computer ernsthafte Maschinen, die zum Spielen verwendet werden. Wenn du den neuen Highscore nicht bekommst, weißt du was ich meine. I...
Schlacht um Wesnoth 1.13.6 Entwicklung veröffentlicht
Schlacht um Wesnoth 1.13.6, das letzten Monat veröffentlicht wurde, ist die sechste Entwicklungsversion im 1.13.x-Serie und bietet eine Reihe von Verb...
So installieren Sie League of Legends auf Ubuntu 14.04
Wenn Sie ein Fan von League of Legends sind, dann ist dies eine Gelegenheit für Sie, League of Legends zu testen. Beachten Sie, dass LOL von PlayOnLin...