Den DataFrame (kurz: DF) aus der Python Bibliothek Pandas kann man sich am einfachsten als tabellenähnliches Objekt vorstellen bestehend aus Daten, die in Zeilen und Spalten gespeichert sind. Pandas bietet, einfach gesprochen, dieselben Möglichkeiten wie strukturierte Arrays in NumPy mit dem Unterschied, dass die Zeilen und Spalten mit Namen angesprochen werden können, statt sie mit Zahlenindex aufrufen zu müssen. Dadurch wird die Arbeit mit großen Datensätzen und vielen Spalten erleichtert und der Code verständlicher.
Was ist Pandas?
Pandas ist eine leistungsstarke Open-Source-Bibliothek zur Datenmanipulation für Python. Sie bietet eine leistungsstarke, einfach zu verwendende Datenstruktur namens DataFrame, die besonders nützlich für Datenanalyseaufgaben ist. Am einfachsten lässt sich Pandas als das „Excel von Python“ verstehen, denn viele Funktionalitäten aus Microsoft Excel lassen sich auch mit Pandas durchführen. Darüber hinaus besitzt Pandas jedoch noch viel mehr Funktionalitäten und ist auch deutlich performanter.
Was ist ein Pandas DataFrame?
Ein Pandas DataFrame ist eine zweidimensionale, beschriftete Datenstruktur, die einer Tabellenkalkulation oder SQL-Tabelle ähnelt. Sie besteht aus Zeilen und Spalten, wobei jede Spalte einen anderen Datentyp haben kann. Die Zeilen und Spalten sind mit einem eindeutigen Index bzw. Spaltennamen versehen, was das Auswählen, Filtern und Manipulieren von Daten erleichtert.

Wie können DataFrames verstanden werden?
Bevor wir uns dem Erstellen von DFs widmen können, müssen wir verstehen aus welchen Objekten sich dieser zusammensetzen kann. Dieses Wissen ist nötig, da es verschiedene Wege gibt, DFs zu erstellen und diese davon abhängen, welches Datenobjekt man als Grundlage nutzt. Nur so lässt sich auch die Möglichkeiten verstehen, die man mit DFs hat und die diese auch deutlich abheben von den reinen Tabellen, mit denen sie oft verglichen werden.
Um die nachfolgenden Abschnitte zu verstehen, ist ein grundlegendes Wissen zu Datenstrukturen in Python und Pandas die Grundvoraussetzung. Falls Du dieses nicht hast oder Deine Kenntnisse auffrischen willst, nutze gerne unsere Beiträge zum Thema Pandas Series und Python Dictionary.

DataFrame als Sammlung von Series Objekten
Das Series Objekt in Pandas ist ein ein-dimensionales Array mit einem veränderbaren Index für das Aufrufen von einzelnen Einträgen. In Python kann man ein solches Objekt mit folgendem Befehl erstellen:
import pandas as pd
area_dict = {‘California’: 423967, ‘Texas’: 695662, ‘New York’: 141297, ‘Florida’: 170312, ‘Illinois’: 149995}
area = pd.Series(area_dict)
Die Series hat als Index verschiedene amerikanische Bundesstaaten und die zugehörige Fläche des Staates in km². Eine zweite Series mit demselben Index, also den gleichen fünf amerikanischen Staaten, enthält die Einwohnerzahl pro Staat.
population_dict = {‘California’: 38332521, ‘Texas’: 26448193, ‘New York’: 19651127, ‘Florida’: 19552860, ‘Illinois’: 12882135}
population = pd.Series(population_dict)
Da beide Series Objekte den gleichen Index besitzen, können wir sie zu einem DataFrame Objekt zusammenfassen, mit den Indexwerten (die fünf Staaten) als Zeilen und die Kategorien (Fläche und Einwohnerzahl) als Spalten:
states_df = pd.DataFrame({‘population’: population, ‘area’: area})
Genau wie die Series Objekte davor, hat auch der DF weiterhin ein Index, über den die Zeilen gezielt angesprochen werden können:
states.index
Zusätzlich haben können auch die Spalten des tabellenähnlichen DFs über ihre Namen aufgerufen werden:
states.columns
DataFrame als spezialisiertes Dictionary
Ein anderer Ansatz zur Interpretation von DataFrame Objekten ist es als spezialisiertes Dictionary zu sehen, bei dem der DF eine Spalte auf ein Series Objekt innerhalb der Spalte verweist, genau wie ein Dictionary einen Key zu einem Wert zuordnet. Wir können es auch genauso abfragen wie ein Dictionary und erhalten dabei jedoch die ganze Spalte und nicht nur einen speziellen Wert:
states[‘area’]
Wie erstellt man einen Pandas DataFrame?
Im Allgemeinen gibt es vier verschiedene Wege einen DF zu erstellen, die abhängig vom Use Case alle nützlich sein können:
- Aus einem einzelnen Series Objekt. Der DF ist eine Sammlung aus mehreren Series Objekten. Er kann jedoch auch aus einer einzelnen Series erstellt werden und weist dann nur eine Spalte auf:
pd.DataFrame(population, columns=[‘Population’]
- Aus einer Liste von Dictionaries. Selbst wenn nicht alle Dictionaries dieselben Keys besitzen, werden die fehlenden Werte mit NaN (‘not a number’) aufgefüllt. Die Anzahl der Spalten ergibt sich somit aus der Anzahl an eindeutigen Keys und die Zahl der Zeilen aus der Zahl an Dictionaries:
pd.DataFrame([{'a': 1, 'b': 2}, {'b': 3, 'c': 4}])
- Aus einem Dictionary von Series Objekten. Dieser Weg wurde bereits in den Abschnitten zuvor ausführlich beschrieben:
pd.DataFrame({‘population’: population, ‘area’: area})
- Aus einem zweidimensionale Numpy Array. Mehrere zweidimensionale Numpy Arrays können in einem DF zusammengefasst werden. Wenn keine Bezeichnungen als Spaltennamen gepflegt sind, werden Zahlen als Spaltenindex genutzt:
pd.DataFrame(np.array([[1, 2], [3, 4]]), columns=[col1, col2'], index=['row1', row2’])
Wie kann eine Excel- oder CSV-Datei eingelesen werden?
Wenn man nicht ein neues Objekt erstellen will und stattdessen auf eine bereits vorhandene Datei zurückgreifen will, lässt sich dies auch mit Pandas umsetzen. Mithilfe der Funktionen „read_csv()“ oder „read_excel()“ lassen sich die entsprechenden Dateien auslesen und werden direkt in einen DataFrame umgewandelt.
import pandas as pd
df = pd.read_csv("name_of_csv.csv")
df2 = pd.read_excel("name_of_excel.xlsx")
Wichtig ist hierbei, dass man auch die richtige Endung der Datei im Namen mit beachtet. Ansonsten kann es zu Fehlern kommen.
Kann man einen DataFrame in einer for-Schleife erstellen?
In anderen Programmiersprachen, wie R, ist es normal ein leeres Objekt zu erstellen und es dann mit einer for-Schleife schrittweise zu füllen, so wie man es in Python beispielsweise mit Listen tun kann. Diese Vorgehensweise ist bei Pandas DF zwar möglich, sollte aber, wenn möglich, nicht genutzt werden. Die Daten sollten erst in Listen oder Dictionaries gespeichert werden und dann in einem Schritt als DataFrame zusammengefasst werden. Diese Vorgehensweise spart massiv Zeit und Speicherkapazitäten (vgl. auch Stack Overflow).
Das solltest Du mitnehmen
- Der Pandas DataFrame ist ein sehr wichtiges Element bei der Datenaufbereitung für Künstliche Intelligenz.
- Er kann am ehesten als SQL-Tabelle verstanden werden mit Zeilen und Spalten, bietet darüber hinaus jedoch noch mehr Funktionalitäten.
- Der DataFrame kann sowohl als Sammlung von Series Objekten verstanden werden oder als spezialisiertes Dictionary.
- Er kann entweder aus einem einzelnen Series-Objekt, aus einer Liste von Dictionaries, aus einem zweidimensionalen NumPy Array oder aus einem Dictionary von Series Objekten erstellt werden.
- Darüber hinaus gibt es die Möglichkeit den DataFrame direkt aus einer Datei, wie beispielsweise aus einer CSV- oder Excel-Datei einzulesen.
Andere Beiträge zum Thema Pandas DataFrame
- Die offizielle Dokumentation von Pandas findest Du hier.