Pandas Data Frame Tutorial

Pandas Data Frame Tutorial

Pandas für die numerische Analyse

Pandas wurde aus der Notwendigkeit einer effizienten Möglichkeit entwickelt, Finanzdaten in Python zu verwalten. Pandas ist eine Bibliothek, die in Python importiert werden kann, um das Manipulieren und Transformieren von numerischen Daten zu unterstützen. Wes McKinney startete das Projekt im Jahr 2008. Pandas wird nun von einer Gruppe von Ingenieuren verwaltet und vom Numfocus -gemeinnützigen Organisation unterstützt, das ihr zukünftiges Wachstum und seine künftige Entwicklung versichert wird. Dies bedeutet, dass Pandas viele Jahre lang eine stabile Bibliothek sein wird und ohne die Sorge eines kleinen Projekts in Ihre Bewerbungen aufgenommen werden kann.

Obwohl Pandas ursprünglich für die Modellierung von Finanzdaten entwickelt wurde, können seine Datenstrukturen verwendet werden, um eine Vielzahl von numerischen Daten zu manipulieren. Pandas verfügt über eine Reihe von Datenstrukturen, die integriert sind und zur einfachen Modellierung und Manipulation numerischer Daten verwendet werden können. Dieses Tutorial wird die Pandas abdecken Datenrahmen Datenstruktur eingehend.

Was ist ein Datenrahmen?

A Datenrahmen ist eine der primären Datenstrukturen in Pandas und stellt eine 2-D-Datenerfassung dar. Diese Art von 2-D-Datenstruktur gibt es viele analoge Objekte, von denen einige die immer beliebte Excel-Tabelle, eine Datenbanktabelle oder ein 2-D-Array enthalten, das in den meisten Programmiersprachen gefunden wurde. Unten ist ein Beispiel für a Datenrahmen in einem grafischen Format. Es repräsentiert eine Gruppe von Zeitreihen von Aktienschlussabschlüssen nach Datum.

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

Daten importieren

PANDAS -Klassen haben einige integrierte Methoden, um Daten in eine Datenstruktur zu importieren. Im Folgenden finden Sie ein Beispiel dafür, wie Daten in ein Pandas -Panel mit dem importiert werden können DataReader Klasse. Es kann verwendet werden, um Daten aus mehreren kostenlosen Finanzdatenquellen wie Quandl, Yahoo Finance und Google zu importieren. Um die Pandas -Bibliothek zu verwenden, müssen Sie sie als Import in Ihrem Code hinzufügen.

Pandas als PD importieren

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

Wenn __name__ == "__main__":
tutorial_run ()

Der 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 Aktienkickern. Diese Variable wird später im Code als Liste von Aktien verwendet, für die Daten angefordert werden, um die zu bevölkern Datenrahmen. Die zweite Codezeile ruft die auf Daten bekommen Methode. Wie wir sehen werden, die Daten bekommen Die Methode nimmt drei Parameter als Eingabe an. Wir werden die Liste der Aktienkicker, das Startdatum und das Enddatum für die Daten übergeben, die wir anfordern werden.

def tutorial_run ():
#STOCK TICKERS, um von Yahoo Finance zu beziehen
Symbole = ['Spy', 'aapl', 'goog']
#Daten bekommen
df = get_data (Symbole, '2006-01-03', '2017-12-31')

Unten werden wir das definieren Daten bekommen Methode. Wie ich oben erwähnt habe, erfordert drei Parameter eine Liste von Symbolen, ein Start- und Enddatum.

Die erste Codezeile definiert ein Pandas -Panel, indem er a instanziiert wird DataReader Klasse. Der Anruf an die DataReader Die Klasse verbindet eine Verbindung zum Yahoo Finance Server und fordert die täglichen Hoch-, niedrigen, engen und angepassten Schließwerte für jede der Aktien in der Symbole Liste. Diese Daten werden von Pandas in ein Panel -Objekt geladen.

A Panel ist eine 3-D-Matrix und kann als „Stapel“ von angesehen werden Datenrahmen. Jede Datenrahmen Im Stack enthält eine der täglichen Werte für die angeforderten Aktien und Datumsbereiche. Zum Beispiel die unten Datenrahmen, zuvor präsentiert ist der Schlusskurs Datenrahmen Aus der Anfrage. Jede Art von Preis (hoch, niedrig, eng und angepasstes Schließen) hat seine eigene Datenrahmen im resultierenden Panel zurückgegeben aus der Anfrage.

Die zweite Codezeile schneidet das Panel in eine einzelne Datenrahmen und weist die resultierenden Daten zu df. Dies wird meine Variable für die sein Datenrahmen dass ich für den Rest des Tutorials benutze. Es hält tägliche Schließwerte für die drei Aktien für den angegebenen Datumsbereich. Das Panel wird in Scheiben geschnitten, indem angegeben wird, welches der Panel angibt Datenrahmen Sie möchten zurückkehren. In dieser Beispielzeile von Code unten ist es das "Schließen".

Sobald wir unsere haben Datenrahmen In Ort werde ich einige der nützlichen Funktionen in der Pandas -Bibliothek abdecken, die es uns ermöglichen, die Daten in der Daten zu manipulieren Datenrahmen Objekt.

Def get_data (Symbole, start_date, end_date):
Panel = Daten.DataReader (Symbole, 'Yahoo', start_date, end_date)
df = panel ['close']
drucken (df.Kopf (5))
drucken (df.Schwanz (5))
Return df

Kopf und Zahl

Die dritte und vierte Linie von Daten bekommen Drucken Sie den Funktionskopf und den Schwanz des Datenrahmens aus. Ich finde dies am nützlichsten beim Debuggen und Visualisierung der Daten, kann aber auch verwendet werden, um die erste oder letzte Stichprobe der Daten in der Daten auszuwählen Datenrahmen. Die Kopf- und Schwanzfunktion ziehen die ersten und letzten Datenzeilen von der Datenrahmen. Der Ganzzahlparameter zwischen den Klammern definiert die Anzahl der Zeilen, die nach der Methode ausgewählt werden sollen.

.loc

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

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

loc kann auch als zweidimensionales 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.

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

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

drucken df.loc [:, "goog"]

.fillna

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

Der .fillna Die Methode ersetzt den angegebenen Wert für jeden NAN -Wert in Ihrem Datensatz. Die folgende Codezeile füllt die gesamte Nan in unserer Datenrahmen mit einer 0. Dieser Standardwert kann für einen Wert geändert werden, der den Bedarf des Datensatzes entspricht, mit dem Sie arbeiten, indem Sie den Parameter aktualisieren, der an die Methode übergeben wird.

df.fillna (0)

Daten normalisieren

Bei Verwendung von Algorithmen für maschinelles Lernen oder Finanzanalyse ist es häufig nützlich, Ihre Werte zu normalisieren. Die folgende Methode ist eine effiziente Berechnung für die Normalisierung von Daten in einem Pandas Datenrahmen. Ich ermutige Sie, diese Methode zu verwenden, da dieser Code effizienter als andere Methoden zur Normalisierung ausgeführt wird und große Leistungserhöhungen bei großen Datensätzen zeigen kann.

.Iloc ist eine ähnliche Methode wie .loc Nimmt jedoch standortbasierte Parameter an und nicht die Tag -basierten Parameter. Es nimmt einen nuloth -basierten Index an und nicht den Spaltennamen 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 lineare Algebra -Lektion überspringen, aber im Wesentlichen teilt diese Codezeile die gesamte Matrix oder teil 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 mit dem nachstehenden Matrixbasis -Stil leicht berechnet werden.

Def Normalize_Data (DF):
Rückgabe df / df.Iloc [0 ,:]

Daten auftreten

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

Die folgende Methode nimmt unsere Datenrahmen und plant es in einer Standard -Liniengrafik. Die Methode nimmt a Datenrahmen und ein Titel als Parameter. Die erste Codezeile 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 Etiketten für die X- und Y -Achse. In der endgültigen Codezeile werden die Show -Methode aufgerufen, die das Diagramm in die Konsole druckt. Ich habe einen Screenshot der Ergebnisse aus dem folgenden Diagramm bereitgestellt. Dies stellt die normalisierten Schlussabschlusspreise für jede der Aktien über den ausgewählten Zeitraum dar.

Def Plot_data (df,):
ax = df.Plot (Titel = Titel, fontsize = 2)
Axt.set_xlabel ("Datum")
Axt.set_ylabel ("Preis")
Parzelle.zeigen()

Pandas ist eine robuste Datenmanipulationsbibliothek. Es kann für verschiedene Arten von Daten verwendet werden und präsentiert einen prägnanten und effizienten Satz von Methoden, um Ihren Datensatz zu manipulieren. Im Folgenden habe ich den vollständigen Code aus dem Tutorial bereitgestellt, damit Sie überprüfen und ändern können, um Ihre Anforderungen zu erfüllen. Es gibt einige andere Methoden, die Sie bei der Datenmanipulation unterstützen, und ich empfehle Ihnen, die in den folgenden Referenzseiten veröffentlichten Pandas -Dokumente zu überprüfen. Numpy und Matplotlib sind zwei weitere Bibliotheken, die für die Datenwissenschaft gut funktionieren und zur Verbesserung der Leistung der Pandas -Bibliothek verwendet werden können.

Voller 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, start_date, end_date):
Panel = Daten.DataReader (Symbole, 'Yahoo', start_date, end_date)
df = panel ['close']
drucken (df.Kopf (5))
drucken (df.Schwanz (5))
drucken df.loc ["2017-12-12"]
drucken df.loc ["2017-12-12", "AAPL"]
drucken df.loc [:, "goog"]
df.fillna (0)
Return df
Def Normalize_Data (DF):
Rückgabe df / df.ix [0 ,:]
Def Plot_data (df,):
ax = df.Plot (Titel = Titel, fontsize = 2)
Axt.set_xlabel ("Datum")
Axt.set_ylabel ("Preis")
Parzelle.zeigen()
def tutorial_run ():
#Choose Symbole
Symbole = ['Spy', 'aapl', 'goog']
#Daten bekommen
df = get_data (Symbole, '2006-01-03', '2017-12-31')
plot_data (df)
Wenn __name__ == "__main__":
tutorial_run ()

Verweise

Pandas Homepage
Pandas Wikipedia Seite
https: // en.Wikipedia.org/wiki/wes_mckkinney
Numfocus Homepage