Einführung in Python

Python ist eine vielseitige Programmiersprache, die neben klassischer Softwareentwicklung u. A. auch für die Analyse quantitativer Datensätze eingesetzt werden kann. Die Arbeit mit Python basiert auf Objekten (z. B. ein Datensatz oder eine Variable daraus) mit denen wir mithilfe von Funktionen und Methoden interagieren. Oft werden zusätzlich zur Basis-Installation von Python weitere Funktionen benötigt. Dafür lassen sich weitere Module installieren, die in der Regel zu Paketen zusammengefasst sind. Python folgt einer simplen Syntax, die es erlaubt, Schritte sukzessive aufeinander aufzubauen.

In diesem Artikel betrachten wir, wie Python zur Bearbeitung und Analyse statistischer Datensätze eingesetzt werden kann.

Einstieg und technische Voraussetzungen

Python ist kein "All-in-one" Statistikprogramm, wie bspw. SPSS. Um Daten mit der Programmiersprache Python zu analysieren benötigen wir mehrere Programme. Erste Voraussetzung ist Python selbst. Die Standardinstallation enhält die Python.exe, das Programm, dass wir ansprechen um z.B. Python-Skripte auszuführen, sowie einige Basispakete. Pakete enthalten, einfach gesagt, unsere Werkzeuge, mit denen wir in Python arbeiten, und bestimmen den Funktionsumfang unserer Installation. Um zusätzliche Pakete installieren zu können benötigen wir als zweites Programm den Paket-Manager "pip". Bei den meisten Python-Installationen wird dieser mitgeliefert, in abweichenden Fällen muss er separat installiert werden.

Theoretisch kann an dieser Stelle bereits mit Python gearbeitet werden. Es ist aber üblich und empfohlen, in einer integrierten Entwicklungsumgebung (IDE - integrated development environment) zu arbeiten. Solche IDEs erleichtern den Arbeitsprozess durch einen Code-Editor mit Syntaxhervorhebung (manchen Python-Elementen werden Farben für bessere Übersichtlichkeit zugeordnet), Möglichkeiten, Code zu testen, Debugging-Funktionalitäten und vielem Weiteren. Insgesamt lohnt es sich in einer einheitlichen Umgebung zu coden, die verschiedene Werkzeuge vereint.

IDEBeschreibungLink
Visual Studio Code (VSC) VSC ist vielseitig und ermöglicht das Schreiben, Testen und Ausführen von Python-Code. VSC bietet Debugging, einen Dateien-Explorer, ein integriertes Terminal und Unterstützung für Git. https://code.visualstudio.com/
JupyterLab JupyterLab legt Python-Code in Notebooks (.ipynb) an, wo er interaktiv und schrittweise ausgeführt wird. Anders als bei Python-Skripten (.py) erscheinen Outputs nicht getrennt vom Skript im Terminal, sondern direkt unter der ausgeführten Codezeile. Auch Grafiken werden sofort angezeigt. Diese Logik eignet sich besonders für exploratives Arbeiten mit Daten. https://jupyter.org/
Spyder Spyder ist eine speziell für Python und Datenanalyse entwickelte IDE. Sie ist für die Arbeit mit den für Datenanalyse wichtigsten Python-Paketen optimiert. Spyder bietet eine integrierte Konsole, einen Variablen-Explorer und Funktionen zur Verwaltung von Projekten. https://www.spyder-ide.org/

Installation von Python

Die aktuelle Python-Version kann für alle kompatiblen Systeme auf https://www.python.org/downloads heruntergeladen werden.

Windows

Für die Installation von Python auf Windows kann der Python install manager unter https://www.python.org/downloads heruntergeladen werden. Nach Ausführen der Datei öffnet sich ein Fenster, in dem Sie die Installation starten können. Anschließend wird ein Terminal geöffnet, in dem während der Installation noch einige Abfragen erfolgen.

The global shortcuts directory is not configured.

Configuring this enables commands like python3.14.exe to run from your terminal, but is not needed for the python or py commands (for example, py -V:3.14).

We can add the directory (C:\Users\...\AppData\Local\Python\bin*) to PATH now, but you will need to restart your terminal to use it. The entry will be removed if you run py uninstall --purge, or else you can remove it manually when uninstalling Python. Add commands directory to your PATH now? [y/N]

Diese Abfrage ermöglicht es, einen Ordner der Python-Installation als Path-Umgebungsvariable anzulegen, um alle Python-Befehle direkt aus der Windows Eingabeaufforderung oder Windows PowerShell nutzen zu können. Da Python wie beschrieben bereits mit den Befehlen python und py angesprochen werden kann, ist dies optional. Grundsätzlich schadet es natürlich nicht, alle Schreibweisen zur Verfügung zu haben, da Tutorials und Dokumentationen teilweise unterschiedliche Versionen verwenden. Um die Option zu nutzen, geben Sie ein "y" in das Terminal ein und bestätigen Sie mit Enter. Abgelehnt wird die Option mit einem "n".

You do not have the latest Python runtime.

Install the current latest version of CPython? If not, you can use 'py install default' later to install.

Install CPython now? [Y/n]

CPython ist die Standard-Implementierung von Python und fungiert als "Interpreter". Das heißt, CPython ist nötig um Python-Skripte auszuführen und den Paket-Manager "pip" zu nutzen. Deshalb sollten Sie CPython installieren.

Linux

Bei vielen Linux-Distributionen ist Python bereits vorinstalliert. Um zu überprüfen, ob eine Python-Installation vorliegt, öffnen Sie ein Terminal und geben folgenden Befehl ein:

python3 -V

Wenn als Ausgabe eine Python-Version angezeigt wird, ist Python bereits installiert. Als nächstes müssen wir überprüfen ob Pythons Paket-Installer "pip" installiert ist:

python3 -m pip --version

Wird eine Version von pip angezeigt, ist die Installation vollständig. Erfolgt stattdessen ein Output wie "No module named pip", installieren Sie pip mithilfe des Paket-Managers Ihrer Distribution. Nutzen Sie dazu die Dokumentation der Distribution. Für Debian-basierte Distributionen, die "apt" nutzen, sieht der Befehl so aus:

sudo apt update
sudo apt install python3-pip

Falls Python nicht installiert ist, folgen Sie ebenfalls der Dokumentation der Distribution und installieren Python mit dem jeweiligen Paket-Manager. Für Debian-basierte Distributionen funktioniert es so:

sudo apt update
sudo apt install python3 python3-pip

Auf diese Weise wird die aktuelle Python-Version sowie Pythons Paket-Installer "pip" installiert.

macOS

Die Python-Versionen mit macOS Installer finden sich unter https://www.python.org/downloads/macos/. Dort kann direkt der Installer für die aktuelle Version heruntergeladen werden. Alternativ befindet sich dieser auf der Seite der aktuellen Python-Version im Bereich "Files". Nach Ausführen des Installers ist Python installiert und kann im Terminal mit dem Befehl python3 angesprochen werden.

Installation mit Anaconda

Python kann auch im Rahmen der Anaconda Distribution heruntergeladen werden: https://www.anaconda.com/download

Anaconda bietet viele Python-Pakete als eigene Conda-Pakete an, die in einer graphischen Nutzeroberfläche angewählt werden können. Zusätzlich sind die IDEs JupyterNotebook, JupyterLab und Spyder im Installer enthalten, sodass keine separate IDE installiert werden muss. Auch weitere IDEs wie PyCharm und RStudio können im Anaconda Navigator per Klick installiert werden.

Der Anaconda Navigator läuft technisch allerdings etwas schwerfällig. Für NutzerInnen, denen eine flüssige Experience wichtig ist, empfiehlt sich eine Python-Installation auf dem Standardweg in Kombination mit einer IDE.

Windows

Falls Sie unter Windows per Terminal auf Anaconda (z.B. Installation von Paketen) oder Python (z.B. Ausführung von Skripten) mit Befehlen zugreifen wollen, müssen Sie bei der Installation die entsprechende Option, eine PATH-Variable anzulegen, auswählen.

Nach der Installation kann im Anaconda Navigator JupyterLab gestartet werden, das sich im Browser öffnet.

Linux

Der Linux-Installer wird als Shell-Skript heruntergeladen und muss anschließend ausgeführt werden. Öffnen Sie dafür ein Terminal und manövrieren mit cd in den Ordner, der das Skript enthält (wir zeigen es am Beispiel des Download-Ordners). Nutzen Sie dann den Befehl bash und den vollständigen Datei-Namen des Skripts:

cd /home/user/Downloads/
bash <DATEINAME>.sh

Nach der Installation kann der Anaconda-Navigator im Terminal gestartet werden:

anaconda-navigator
macOS

Der macOS-Installer kann ohne Besonderheiten ausgeführt und durchlaufen werden.

Installation von IDEs

Visual Studio Code

Microsofts Visual Studio Code bietet eine Programmierumgebung, die gut für die Arbeit mit Python geeignet ist. Installationsdateien für Windows, Linux und macOS finden Sie unter https://code.visualstudio.com.

Beim ersten Starten des Programms wird eine Anmeldung für den GitHub Copilot geöffnet. Da der AI-Assistent sensible Daten preisgeben kann, ist die Aktivierung insbesondere im universitären Kontext nicht zu empfehlen.

Um mit Python zu arbeiten benötigen wir jetzt noch die "Python"-Extension. Öffnen Sie dafür in der linken Seitenleiste den Reiter "Erweiterungen". Über die Suchfunktion kann die Erweiterung gefunden und installiert werden.

Für die Datenanalyse kann sich eine weitere Konfiguration lohnen: Um Code zeilenweise ausführen zu können (wie z.B. aus RStudio gewohnt), suchen Sie in den Einstellungen nach der Option "python.useEnvironmentsExtension" und deaktivieren sie. Nach einem Programm-Neustart können Zeilen in Skripten mit Shift+Enter ausgeführt werden.

JupyterLab

JupyterLab ist eine Notebook-Umgebung, die es ermöglicht Python-Code interaktiv und schrittweise auszuführen. Output und Visualisierungen werden im Notebook direkt unter dem Input ausgegeben. Das ist besonders hilfreich für das explorative Auswerten von Daten und Tutorial-artige Python-Skripte, in denen viel zum Programmcode erklärt wird.

Installation als Python Paket

JupyterLab kann als Python-Paket direkt im Terminal Ihres Betriebssystems (Windows: Eingabeaufforderung, PowerShell; Linux: Terminal; macOS: Terminal) installiert und ausgeführt werden. Die Installation von Paketen wird grundlegend erst im Anschluss an dieses Kapitel erläutert. An dieser Stelle greifen wir vor und zeigen einen Befehl, mit dem das Jupyter-Paket installiert werden kann:

python -m pip install jupyterlab

Nach der Installation kann JupyterLab gestartet werden. Es lohnt sich aber davor in das Datei-Verzeichnis zu wechseln, in dem wir unsere Notebooks speichern wollen. Dann sind beim Speichern keine weiteren Schritte nötig. Um das Datei-Verzeichnis auszuwählen nutzen wir den Befehl cd in Verbindung mit dem Pfad des entsprechenden Ordners:

cd "C:\Users\...\"

JupyterLab wird so gestartet:

python -m jupyterlab

Die Umgebung öffnet sich im Browser. Dort können wir eine neue Jupyter Notebook-Datei öffnen und ein Python-Kernel auswählen (z.B. ipykernel).

JupyterLab Desktop

JupyterLab kann auch als Desktop Applikation von der GitHub-Seite des Projekts heruntergeladen werden: https://github.com/jupyterlab/jupyterlab-desktop#installation

Installer stehen für Windows, macOS und Linux zur Verfügung.

Spyder

Die IDE Spyder wirbt damit, eigens für die Datenanalyse und das wissenschaftliche Arbeiten mit Python entwickelt zu sein. Installationsdateien für Windows, Linux und macOS finden Sie unter: https://www.spyder-ide.org/download

Linux

Der Linux-Installer wird als Shell-Skript heruntergeladen und muss anschließend ausgeführt werden. Öffnen Sie dafür ein Terminal und manövrieren mit cd in den Ordner, der das Skript enthält (wir zeigen es am Beispiel des Download-Ordners). Nutzen Sie dann den Befehl bash und den vollständigen Datei-Namen des Skripts:

cd /home/user/Downloads/ 
basbash <DATEINAME>.sh

Anschließend muss die Linzenzvereinbarung mit dem Befehl yes bestätigt werden. Wenn gewünscht, kann danach noch der Speicherort geändert werden oder mit der Enter-Taste bestätigt werden.

Installation von Paketen

Für spezifische Aufgaben (wie z.B. die Datenanalyse) werden oft Werkzeuge benötigt, die über den Funktionsumfang der Basis-Python-Installation hinausgehen. Dafür brauchen wir weitere Module, die in der Regel zu Paketen zusammengefasst sind. Pakete können jederzeit zusätzlich installiert werden um über weitere benötigte Funktionen, Klassen etc. zu verfügen. Um die Funktionen nutzen zu können, müssen in jeder Python-Session die entsprechenden Pakete importiert werden. Das gilt für zusätzlich installierte Pakete, aber auch für einige Pakete, die zum Basisumfang von Python dazugehören, aber dennoch importiert werden müssen (siehe z.B. das Paket os im Beispiel unten).

Installation mit Pip

Python verwendet einen separates Programm namens Pip als Paket-Installer. Hinweise zur Installation finden Sie im Abschnitt "Installation von Python". Die meisten Installationen enthalten Pip aber automatisch. Im Terminal können damit Pakete mit dem Befehl pip install installiert werden:

pip install <PAKETNAME>

Dieser Befehl ist nicht immer abrufbar, unter Windows muss Pip z.B. als Path-Umgebungsvariable angelegt sein. Pip lässt sich aber alternativ auch über python, py oder python3 ansprechen, z.B. mit python -m pip install:

python -m pip install <PAKETNAME>

Installation via Skript

In unserer IDE können wir Pakete auch in einem Skript installieren. Dazu muss das Paket "os" importiert werden, das mit dem Betriebssystem des Geräts kommuniziert. Mit der Funktion os.system() installieren wir Pakete:

In [1]: import os
In [2]: os.system("pip install <PAKETNAME>")

Pakete installieren mit Anaconda

Falls Sie Python mit einer Anaconda-Installation verwenden, stehen viele Python-Pakete als eigene Conda-Pakete zur Verfügung, die wiefolgt installiert werden können:

Installation im Anaconda Navigator: Conda-Pakete können im Anaconda Navigator im Bereich Environments für die jeweiligen Umgebungen an- und abgewählt werden.

Installation im Terminal: In einem Terminal können Conda-Pakete mit dem Befehl conda install <PAKETNAME> installiert werden.

Hinweis: nicht alle Python-Pakete sind als Conda-Paket verfügbar. Sollten Sie ein Paket benötigen, welches darunter fällt, können Sie Pythons Standard-Vorgehensweisen zur Paket-Installation nutzen, wie im direkten Vorlauf dieses Abschnitts beschrieben.

Python Syntax

Hinweis: Wir nutzen für Python-Code in unseren Tutorials die Notebook-Schreibweise, um neben dem Code auch zugehörige Outputs übersichtlich darstellen zu können. Wenn Sie nicht in einer Notebook-Umgebung arbeiten, gilt es allerdings ein paar funktionelle Unterschiede zu beachten: Sollen Werte als Output ausgegeben werden, müssen die entsprechenden Objekte oder Formeln von der Funktion print() umschlossen sein. Auch für das Anzeigen von Grafiken kann je nach Paket eine weitere Funktion nötig sein (z.B. plt.show() aus dem Paket "matplotlib".

Python führt Code zeilenweise von links nach rechts aus. Entsprechend bauen wir unsere Datenanalysen Zeile für Zeile auf, sodass auf einander aufbauende Schritte in der richtigen Reihenfolge ausgeführt werden. Bei einer Datenanalyse bedeutet das grob zusammengefasst, dass wir zu erst die benötigten Pakete importieren, anschließend den Datensatz einlesen und erst dann Berechnungen durchführen.

In [1]: import pandas as pd

In [2]: dat = pd.read_spss(r"C:\... Pfad ...\dat.sav")

In [3]: dat["nachhilfe"].value_counts()
Out[3]: 
nachhilfe
0.0    69
1.0    51

Dieses Beispiel soll lediglich aufzeigen, wie Befehle in Python aufeinander aufbauen können. Im ersten Schritt wird das Paket Pandas installiert. Anschließend wird eine Funktion (pd.read_spss()) aus dem Paket eingesetzt, um unseren Beispieldatensatz zu importieren und unter der Bezeichnung "dat" zu speichern. Schließlich wählen wir aus dem Datensatz die Variable "nachhilfe" aus und erstellen mit der Methode .value_counts() eine Häufigkeitstabelle. 51 SchülerInnen haben Nachhilfe in Anspruch genommen. Die zweite und dritte Codezeile setzen jeweils die vorausgegangene Zeile voraus, um funktionieren zu können.

Kommentare

Es kann sich lohnen, ein Python-Skript mit Kommentaren zu versehen, um Struktur und Übersichtlichkeit zu schaffen oder sonstige Informationen in das Skript zu integrieren. Ein Kommentar wird mit einem Rautezeichen begonnen. Alles was darauf in der Zeile folgt, wird von Python nicht ausgeführt.

In [1]: # Befragungsgruppe 1
In [2]: n = 1000 # Anzahl Befragte
In [3]: n
Out[3]: 1000

Rechenoperationen

Wir wollen als Beispiel folgend Rechnung in Python durchführen: $$6+\frac{3}{10}-8$$

Dafür schreiben wir die entsprechenden Rechenzeichen in eine Zeile

In [1]: 6 + 3 / 10 - 8
Out[1]: -1.7000000000000002

Hinweis: Hier wird eine Stolperfalle von Python deutlich. Wenn wir die oben durchgeführte Rechnung mit einem Taschenrechner vornehmen, ist das Ergebnis -1,7. Warum kommt Python zu einem anderen Ergebnis?

Computer speichern Fließkommazahlen (float) als Brüche in Binärcode (Nullen und Einsen) ab. Diese Übertragung funktioniert häufig nicht eins zu eins, sodass leichte Ungenauigkeiten entstehen. Diese Art der Zahlenspeicherung ist auch für Python relevant und führt dafür, dass wir hier nicht das exakte Ergebnis von -1,7 erhalten. In der Regel werden diese Rechenungenauigkeiten keine wesentlichen Auswirkungen auf die Ergebnisse statistischer Analysen haben. In Fällen, wo dies dennoch der Fall ist, kann das Modul "decimal" Abhilfe schaffen, das in der Standard-Installation von Python enthalten ist.

In [1]: from decimal import *

In [2]: Decimal(6) + Decimal(3) / Decimal(10) - Decimal(8)
Out[2]: Decimal('-1.7')

Rechenoperationen können mit diesen Zeichen durchgeführt werden:

RechenoperationZeichen
Addition+
Subtraktion-
Multiplikation*
Division/
Potenz**
Ganzzahlige Division (ohne Rest)//
Modulo-Division (Rest einer Division)%

Logische Operatoren

Neben Rechenoperatoren können auch logische Operatoren verwendet werden:

Logischer Operator Zeichen
Gleich ==
Ungleich !=
Nicht !
Größer als >
Kleiner als <
Größer gleich >=
Kleiner gleich <=
Und &
Oder |

Diese Operatoren können nur eines von zwei Ergebnissen erzielen — sie sind entweder wahr (True) oder unwahr (False):

Es ist wahr, dass 2 nicht 3 entspricht.

In [1]: 2 != 3
Out[1]: True

Es ist unwahr, dass 3 gößer als 4 ist.

In [2]: 3 > 4
Out[2]: False

Es ist unwahr, dass sowohl 8 als auch 9 gleich 3 hoch 2 sind.

In [3]: 8 & 9 == 3**2
Out[3]: False

Es ist wahr, dass entweder 8 oder 9 3 hoch 2 entsprechen.

In [4]: 8 | 9 == 3**2
Out[4]: True

Variablen und Objekte

Python ist eine objektorientierte Programmiersprache. Einzelne Werte, ganze DataFrames, selbst Grafiken, sind Objekte. Solchen Objekten können wir Namen zuweisen, um sie abzuspeichern, bzw. zukünftig leicht auf sie zugreifen zu können:

In [1]: a = 1
In [2]: b = 2.5
In [3]: c = "Nein"

Wenn wir die Variable ansteuern, wird der gespeicherte Wert ausgegeben:

In [4]: a
Out[4]: 1

In [5]: b
Out[5]: 2.5

In [6]: c
Out[6]: 'Nein'

Listen, Tupel und Dictionaries

Manche Objekte können mehr als einen Wert enthalten. Listen werden mit eckigen Klammern erstellt:

In [10]: zahlen = [1, 2, 3, 4]
In [10]: farben = ["blau", "rot", "grün"]

In [11]: zahlen
Out[11]: [1, 2, 3, 4]

Einzelne Werte aus einer Liste können durch das hinzufügen des jeweiligen Index abgerufen werden. Achtung: Python beginnt Indizes immer bei 0 statt 1. Der erste Wert hat also den Index 0, von dortaus wird weitergezählt:

In [12]: farben[1]
Out[12]: 'rot'

Tupel enthalten ebenfalls mehrere Werte und werden mit runden Klammern gebildet. Im Unterschied zu Listen sind Tupel unveränderlich, also z.B. zum Speichern von Konstanten geeignet:

In [17]: person1 = ("Max", "Mustermann", 1975)
In [18]: person1
Out[18]: ('Max', 'Mustermann', 1975)

Dictionaries speichern Werte in Paaren, bestehend aus einem Schlüssel (key) und einem Wert (value). Im Prinzip können wir uns ein Dictionary wie eine Sammlung aus Variablen vorstellen.

In [19]: person2 = {"vorname" : "Sahra",
                    "nachname" : "Musterperson",
                    "geburtsjahr" : 1980}

In [20]: person2
Out[20]: {'vorname': 'Sahra', 'nachname': 'Musterperson', 'geburtsjahr': 1980}

Mithilfe der Schlüssel können wir einzelen Werte abrufen:

In [21]: person2["geburtsjahr"]
Out[21]: 1980

Datentypen

Python arbeitet mit unterschiedlichen Datentypen (auch Klassen genannt), also Formaten von Werten, die wir z.B. in Variablen ablegen können. Bei Zahlen wird vor allem zwischen ganzen Zahlen und Fließkommazahlen unterschieden. Dazu kommen unter anderem Text und Wahrheitswerte:

BedeutungDatentypBeispiel
Ganze Zahlinteger2
Fließkommazahlfloat2.5
Zeichenkettestring"sehr gut"
Boolescher Wert (Wahrheitswert)booleanTrue / False
Listelist["blau", "rot", "grün"]
Tupeltuple("Max", "Mustermann", 1975)
Dictionarydict{"vorname": "Sahra", "nachname": "Musterperson", "geburtsjahr": 1980}

Der Datentyp kann mit der Funktion type() überprüft werden:

In [1]: type(2.5)
Out[1]: float

In [2]: type(True)
OUt[2]: bool

Pandas Datentypen

Pandas ist das wahrscheinlich wichtigste Python-Paket für die Datenanalyse. Pandas bringt eigene zusätzliche Datentypen mit.

DatentypBeschreibung
SeriesEine Series kann wie eine einzelne Spalte einer Datentabelle (unter Hinzunahme des Index) vorgestellt werden. Sie stellt eine einzelne Variable dar und verfügt über einen Index und einen dtype, der den Datentyp der Werte in der Series spezifiziert.
DataFrameEin DataFrame ist eine vollständige Datentabelle mit mehreren Variablen bzw. Spalten, die unterschiedliche dtypes (Datentypen) haben können. Hinzu kommen ein Zeilen- und ein Spaltenindex, über die einzelne Spalten, Zeilen oder Werte angesprochen werden können.
categoryKategoriale Variable mit begrenzter Anzahl an fest definierten Merkmalsausprägungen (=Kategorien) und optional festgelegter Reihenfolge (Ordinalskala).

Die Datentypen Series und DataFrame speicher eine beziehungsweise mehrere Datenspalten, die wiederum unterschiedliche Datentypen enthalten können. Wenn wir die Funktion type() auf ein DataFrame anwenden bekommen wir den Datentyp DataFrame widergespiegelt. Die Datentypen der Werte in den Spalten sind Eigenschaften des DataFrames und können mit dem Attribut .dtypes oder .dtype abgerufen werden. Um den Unterschied zu verdeutlichen, laden wir unseren Beispieldatensatz in Python und sehen uns beide Varianten an:

In [1]: import pandas as pd

In [2]: dat = pd.read_spss(r"C:\... Pfad ...\dat.sav")

In [3]: type(dat)
Out[3]: pandas.DataFrame

In [4]: dat.dtypes
Out[4]: 
punkte                     float64
schlafdauer                float64
lernzeit                   float64
nachhilfe                  float64
zeugnis_mathe_roh          float64
zeugnis_mathe_punkte       float64
zeugnis_mathe_note        category
zeugnis_deutsch_punkte     float64
zeugnis_deutsch_note      category
lsport                    category
sport_fb                   float64
sport_bb                   float64
sport_sw                   float64
sport_tn                   float64
sport_an                   float64
sport_no                   float64
sport_test                 float64
kantine_zufr               float64
taschengeld                float64
lauf100                    float64
lauf1000                   float64
lauf5000                   float64
lfach                          str
kugel                      float64
dtype: object

Die Python Funktion type() zeigt und, dass unser Datensatz "dat" als Pandas-DataFrame angelegt ist. Wenn wir das Attribut .dtypes des Objekts aufrufen, sehen wir den Datentypen der Variablen im DataFrame. Pandas verwendet hier nicht die Python-Standardklassen wie float sondern eigene Abwandlungen wie float64. Beides Varianten bezeichnen Fließkommazahlen und können für unsere Zwecke synonym verwendet werden. Die Variable "punkte" enthält zum Beispiel Fließkommazahlen. Im Datensatz befinden sich auch kategoriale Variablen wie "lsport". Der Datentyp category ist kommt ebenfalls durch das Paket pandas hinzu. Ähnlich wie die key und value Paare bei Dictionaries werden die einzelnen Werte Kategorien zugeordnet.

Methoden

In Python ist jeder Datentyp über eine eigene Klasse definiert. In der Definition einer Klasse ist festgelegt welche Informationen für Daten dieses Typs vorliegen müssen (am Beispiel einer Zeichenkette: Welches Zeichen steht an erster, zweiter, dritter, ... Stelle? Welche Zeichenkodierung wird verwendet?). Zusätzlich gehören zu einer Objektklasse in Python aber immer auch spezifische Funktionen, die Methoden genannt werden. Je nach Klasse (also Datentyp) haben wir bestimmte Operationen für unsere Objekte zur Verfügung. Methoden werden immer an die Bezeichnung eines Objekts, also die Variable angehangen. Das zeigen wir jetzt am Beispiel einer Liste. Die Methoden von bestimmten Klassen können Sie auf diversen Informationsseiten finden.

Listen: https://www.w3schools.com/python/python_lists_methods.asp

Strings: https://www.geeksforgeeks.org/python/python-string-methods/

Dictionaries: https://www.datacamp.com/tutorial/python-dictionary-methods

Nachdem wir die Liste angelegt haben, können wir z.B. mit der Methode .append() einen weiteren Eintrag hinzufügen:

In [1]: zahlen = [1, 2, 3, 4]
In [2]: zahlen.append(5)
In [3]: zahlen
Out[3]: [1, 2, 3, 4, 5]

Mit der Methode .remove() können wir einen Wert aus der Liste entfernen:

In [4]: zahlen.remove(2)
In [5]: zahlen
Out[5]: [1, 3, 4, 5]

Die Methode .index() gibt den Index eines Werts in der Liste aus:

In [6]: zahlen.index(3)
Out[6]: 1

Die 3 befindet sich an der zweiten Stelle (da die Zählung bei 0 beginnt). Mit der Methode .insert() können wir einen Wert an eine spezifische Position hinzufügen. In der Methode spezifizieren wir erst den Index und dann das Objekt:

In [7]: zahlen.insert(1, 2)
In [8]: zahlen
Out[8]: [1, 2, 3, 4, 5]

An Index 1 (2. Position) steht jetzt wieder eine 2. Mit der Methode .reverse() kann die Reihenfolge der Liste umgedreht werden:

In [9]: zahlen.reverse()
In [10]: zahlen
Out[10]: [5, 4, 3, 2, 1]

Importieren von Paketen

Grundsätzlich werden Pakete mit der Syntax import as \<PAKETNAME\> importiert. Das gilt allerdings nicht in allen Fällen. Sie sollten den korrekten Import der Dokumentation des jeweiligen Pakets entnehmen. Die Dokumentationen von "pandas" und "matplotlib" empfehlen z.B. folgende Schreibweise:

In [1]: import pandas as pd
In [2]: import matplotlib.pyplot as plt

Die jeweiligen Bennungen verwenden wir auch, wenn wir Funktionen aus den Paketen ansprechen wollen z.B. pd.crosstab() oder plt.show().

In manchen Fällen benötigen wir nicht das gesamte Paket, sondern nur einen Teil davon. Zum Berechnen einer Korrelation benötigen wir bspw. die Funktion association() aus "SciPy". Also importieren wir nur diese:

In [3]: from scipy.stats.contingency import association

Einlesen von Datensätzen in verschiedenen Formaten

Das Paket "pandas" kann Datensätze einlesen und ein Dataframe erstellen, dass wir unter einem selbstgewählten Namen speichern können. In der entsprechenden Funktion muss der Dateipfad zum Datensatz angegeben werden. Wir zeigen das hier beispielhaft für CSV-, SAV-, DTA-, und Excel-Dateien:

In [1]: dat_csv = pd.read_csv(r"C:\... Pfad ...\dat.csv")
In [2]: dat_sav = pd.read_spss(r"C:\... Pfad ...\dat.sav") 
In [3]: dat_dta = pd.read_stata(r"C:\... Pfad ...\dat.dta")
In [4]: dat_excel = pd.read_excel(r"C:\... Pfad ...\dat.xlsx")

Das eingesetzte "r" vor dem Dateipfad sorgt dafür, dass die Zeichenkette als "raw string" behandelt wird. Das verhindert das die "\"-Zeichen, wie sie Windows in Dateipfaden nutzt, als escape-Zeichen interpretiert werden und die Bedeutung des Strings ändern.

Creative Commons Lizenzvertrag

Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

Autor*innen dieses Artikels

Sebastian Gerhartz, Jonas Kiefer

Diese Seite wurde zuletzt am 29.09.2026 aktualisiert.