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.
| IDE | Beschreibung | Link |
|---|---|---|
| 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]: 1000Rechenoperationen
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:
| Rechenoperation | Zeichen |
|---|---|
| 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]: TrueVariablen 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]: 1980Datentypen
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:
| Bedeutung | Datentyp | Beispiel |
|---|---|---|
| Ganze Zahl | integer | 2 |
| Fließkommazahl | float | 2.5 |
| Zeichenkette | string | "sehr gut" |
| Boolescher Wert (Wahrheitswert) | boolean | True / False |
| Liste | list | ["blau", "rot", "grün"] |
| Tupel | tuple | ("Max", "Mustermann", 1975) |
| Dictionary | dict | {"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]: boolPandas Datentypen
Pandas ist das wahrscheinlich wichtigste Python-Paket für die Datenanalyse. Pandas bringt eigene zusätzliche Datentypen mit.
| Datentyp | Beschreibung |
|---|---|
Series | Eine 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. |
DataFrame | Ein 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. |
category | Kategoriale 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 associationEinlesen 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.
