Serie und DataFrame in Python

Vor ein paar Monaten habe ich den Online-Kurs „Using Python for Research“ der Harvard University auf edX besucht. Während des Kurses lernte ich viele Konzepte von Python, NumPy, Matplotlib und PyPlot. Während dieses Kurses hatte ich auch die Möglichkeit, an Fallstudien zu arbeiten, und konnte mein Wissen über tatsächliche Datensätze nutzen. Weitere Informationen zu diesem Programm finden Sie hier.

In diesem Kurs habe ich zwei wichtige Konzepte gelernt - Series und DataFrame. Ich möchte Ihnen diese anhand eines kurzen Tutorials vorstellen.

Um mit dem Tutorial zu beginnen, können Sie den neuesten Quellcode von Python von der offiziellen Website hier herunterladen.

Sobald Sie Python installiert haben, verwenden Sie eine grafische Benutzeroberfläche namens IDLE, um mit Python zu arbeiten.

Importieren wir Pandas in unseren Arbeitsbereich. Pandas ist eine Python-Bibliothek, die Datenstrukturen und Datenanalysetools für verschiedene Funktionen bereitstellt.

Serie

Eine Serie ist ein eindimensionales Objekt, das jeden Datentyp wie Ganzzahlen, Gleitkommazahlen und Zeichenfolgen enthalten kann. Nehmen wir eine Liste von Elementen als Eingabeargument und erstellen ein Serienobjekt für diese Liste.

>>> import pandas as pd
>>> x = pd.Series([6,3,4,6])
>>> x
0 6
1 3
2 4
3 6
dtype: int64

Die Achsenbeschriftungen für die Daten werden als Index bezeichnet. Die Länge des Index muss mit der Länge der Daten übereinstimmen. Da wir im obigen Code keinen Index übergeben haben, wird der Standardindex mit Werten erstellt[0, 1, … len(data) -1]

Lassen Sie uns fortfahren und Indizes für die Daten definieren.

>>> x = pd.Series([6,3,4,6], index=[‘a’, ‘b’, ‘c’, ‘d’])
>>> x
a 6
b 3
c 4
d 6
dtype: int64

Der Index in der Spalte ganz links bezieht sich jetzt auf Daten in der rechten Spalte.

Wir können die Daten anhand ihres Index nachschlagen:

>>> x[“c”]
4

Python gibt uns die relevanten Daten für den Index.

Ein Beispiel für einen Datentyp ist das unten definierte Wörterbuch. Der Index und die Werte korrelieren mit Schlüsseln und Werten. Wir können den Index verwenden, um die Werte von Daten zu erhalten, die den Beschriftungen im Index entsprechen.

>>> data = {‘abc’: 1, ‘def’: 2, ‘xyz’: 3}
>>> pd.Series(data)
abc 1
def 2
xyz 3
dtype: int64

Ein weiteres interessantes Merkmal in der Serie ist das Vorhandensein von Daten als Skalarwert. In diesem Fall wird der Datenwert für jeden der definierten Indizes wiederholt.

>>> x = pd.Series(3, index=[‘a’, ‘b’, ‘c’, ‘d’])
>>> x
a 3
b 3
c 3
d 3
dtype: int64

DataFrame

Ein DataFrame ist ein zweidimensionales Objekt, das Spalten mit potenziell unterschiedlichen Typen enthalten kann. Verschiedene Arten von Eingaben umfassen Wörterbücher, Listen, Serien und sogar einen anderen DataFrame.

Es ist das am häufigsten verwendete Pandas-Objekt.

Erstellen Sie einen DataFrame, indem Sie ein NumPy-Array mit datetime als Indizes und beschrifteten Spalten übergeben:

>>> import numpy as np
>>> dates = pd.date_range(‘20170505’, periods = 8)
>>> dates
DatetimeIndex([‘2017–05–05’, ‘2017–05–06’, ‘2017–05–07’, ‘2017–05–08’,
‘2017–05–09’, ‘2017–05–10’, ‘2017–05–11’, ‘2017–05–12’],
dtype=’datetime64[ns]’, freq=’D’)
>>> df = pd.DataFrame(np.random.randn(8,3), index=dates, columns=list(‘ABC’))
>>> df
A B C
2017–05–05 -0.301877 1.508536 -2.065571
2017–05–06 0.613538 -0.052423 -1.206090
2017–05–07 0.772951 0.835798 0.345913
2017–05–08 1.339559 0.900384 -1.037658
2017–05–09 -0.695919 1.372793 0.539752
2017–05–10 0.275916 -0.420183 1.744796
2017–05–11 -0.206065 0.910706 -0.028646
2017–05–12 1.178219 0.783122 0.829979

Ein DataFrame mit einem Datums- / Zeitbereich von 8 Tagen wird wie oben gezeigt erstellt. Wir können die oberen und unteren Reihen des Rahmens mit df.headund anzeigen df.tail:

>>> df.head()
A B C
2017–05–05 -0.301877 1.508536 -2.065571
2017–05–06 0.613538 -0.052423 -1.206090
2017–05–07 0.772951 0.835798 0.345913
2017–05–08 1.339559 0.900384 -1.037658
2017–05–09 -0.695919 1.372793 0.539752
>>> df.tail()
A B C
2017–05–08 1.339559 0.900384 -1.037658
2017–05–09 -0.695919 1.372793 0.539752
2017–05–10 0.275916 -0.420183 1.744796
2017–05–11 -0.206065 0.910706 -0.028646
2017–05–12 1.178219 0.783122 0.829979

Wir können auch eine schnelle statistische Zusammenfassung unserer Daten beobachten:

>>> df.describe()
A B C
count 8.000000 8.000000 8.000000
mean 0.372040 0.729842 -0.109691
std 0.731262 0.657931 1.244801
min -0.695919 -0.420183 -2.065571
25% -0.230018 0.574236 -1.079766
50% 0.444727 0.868091 0.158633
75% 0.874268 1.026228 0.612309
max 1.339559 1.508536 1.744796

Wir können auch Funktionen auf die Daten anwenden, z. B. die kumulative Summe, Histogramme anzeigen, DataFrames zusammenführen, DataFrames verketten und umformen.

>>> df.apply(np.cumsum)
A B C
2017–05–05 -0.301877 1.508536 -2.065571
2017–05–06 0.311661 1.456113 -3.271661
2017–05–07 1.084612 2.291911 -2.925748
2017–05–08 2.424171 3.192296 -3.963406
2017–05–09 1.728252 4.565088 -3.423654
2017–05–10 2.004169 4.144905 -1.678858
2017–05–11 1.798104 5.055611 -1.707504
2017–05–12 2.976322 5.838734 -0.877526

Weitere Details zu diesen Datenstrukturen finden Sie hier.