print("Hello World!")
Hello World!
In dieser Lehrveranstaltung werden Sie die Programmiersprache Python kennenlernen. Zunächst werden wichtige Sprachelemente wie z.B. Schleifen, Funktionen und Bedingungen sowie grundlegende Datentypen vorgestellt. Nach einer ausführlichen Behandlung dieser Grundlagen werden Sie lernen, wie man Python für die Analyse von Daten einsetzen kann (z.B. Einlesen von Textdateien, Repräsentieren von numerischen Daten, Erstellen von Grafiken). Abschließend werden Sie mit dem in der Psychologie populären Python-Paket PsychoPy einfache Experimente erstellen.
Diese Lehrveranstaltung setzt keinerlei Programmierkenntnisse voraus. Die Grundlagen des Programmierens werden praxisnah erläutert – dieses Wissen können Sie danach auch auf die meisten anderen Programmiersprachen übertragen. Aufgrund des begrenzten Umfangs werden allerdings nur grundlegende Konzepte in Python abgedeckt, die aber Voraussetzung für alle komplexeren Anwendungen sind. Sie werden durch ein umfassendes Basiswissen darauf vorbereitet, sich fortgeschrittenere Methoden selbst anzueignen.
Folgende (positive) Eigenschaften werden oft mit Python in Verbindung gebracht:
Python ist eine generische Programmiersprache, d.h. Python ist nicht spezialisiert auf ein eingeschränktes Gebiet, so wie z.B. R auf Datenanalyse/Statistik ausgerichtet ist. Mit spezialisierten Programmiersprachen kann man manche Dinge schneller, besser, eleganter oder kürzer lösen als generische Programmiersprachen. Im Gegensatz dazu ist man mit generischen Programmiersprachen aber nicht auf ein bestimmtes Gebiet eingeschränkt. Mit Python kann man neben Datenanalysen, numerischen Berechnungen und Statistik auch z.B. Webanwendungen oder Programme mit grafischen Oberflächen erstellen. Bevor man ein konkretes Problem lösen möchte, sollte man sich also unter anderem auch überlegen, welches Tool bzw. welche Programmiersprache dafür geeignet ist.
Python ist mittlerweile eine der populärsten Programmiersprachen weltweit. Verschiedene Versuche, die Beliebtheit von Programmiersprachen abzuschätzen (z.B. PYPL, IEEE Spectrum Top Programming Languages und TIOBE), sehen Python seit Jahren auf einem der vordersten Plätze (oft sogar auf dem ersten Platz).
Die Popularität einer Programmiersprache ist auch in der Praxis durchaus relevant, denn je größer und aktiver die Community einer Sprache ist, desto einfacher wird man existierende Lösungen zu Problemen finden bzw. desto schneller wird man eine Antwort auf eine noch nicht beantwortete Frage bekommen.
Im Folgenden sind beispielhaft einige Zeilen Python-Code dargestellt. Vieles ist vielleicht intuitiv verständlich, manches ist aber wahrscheinlich (noch) komplett unverständlich. Alle Beispiele werden im Laufe der Lehrveranstaltung erklärt, im Moment sollen diese nur der Veranschaulichung dienen.
Die grauen Kästchen zeigen Python-Befehle, unmittelbar darunter folgt das Ergebnis des jeweiligen Befehls.
print("Hello World!")
Hello World!
"lauter kleinbuchstaben".upper()
'LAUTER KLEINBUCHSTABEN'
for i in range(10):
print(i, end=", ")
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
print(", ".join([str(i) for i in range(10)]))
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
**2 for k in range(0, 100, 10)] [k
[0, 100, 400, 900, 1600, 2500, 3600, 4900, 6400, 8100]
Auf der offiziellen Python-Website findet man alles rund um Python. Dort kann man auch Installationspakete für diverse Betriebssysteme herunterladen. Außerdem gibt es dort auch die sehr umfangreiche offizielle Dokumentation mit vielen Beispielen und Tutorials. Mittlerweile ist die Installation auf Windows und macOS so einfach, dass man die offiziellen Installer bedenkenlos empfehlen kann (unter Linux ist es aber nach wie vor besser, die distributionseigenen Paketmanager dafür zu verwenden, falls Python nicht ohnehin schon vorinstalliert ist).
In diesen Unterlagen wird beispielhaft die Installation der Version 3.10.7 gezeigt. Sie sollten aber die aktuellste Version installieren und verwenden!
Unter Windows wählt man im Installationsfenster die Standard-Installation aus, aber setzt unbedingt das Häkchen bei “Add Python 3.10 to PATH”. Die Option “Install launcher for all users (recommended)” kann deaktiviert werden, damit können Sie Python ohne Administratorrechte installieren. Das folgende Bild zeigt diese Einstellungen:
Nachdem Sie Python installiert haben können Sie den sogenannten Python-Interpreter starten. Dabei handelt es sich um ein Programm, welches Python-Befehle verstehen und verarbeiten kann. Man kann mit dem Python-Interpreter auch interaktiv arbeiten. Interaktiv bedeutet, dass man einen Befehl eintippt und mit der Eingabetaste bestätigt. Danach wird der eingegebene Befehl direkt verarbeitet und das Ergebnis ausgegeben.
Es gibt einige Möglichkeiten, den Python-Interpreter zu verwenden – mehr dazu in der nächsten Einheit. Fürs erste ist es am einfachsten, wenn Sie unter Windows das Programm “Python 3.10 (64-bit)” starten (es befindet sich im Startmenü im Ordner “Python 3.10”).
Unter macOS bzw. Linux öffnen Sie ein Terminal und tippen dort python
gefolgt von der Eingabetaste. Achten Sie auf die vom Interpreter angezeigte Versionsnummer um sicherzustellen, dass die korrekte Python-Version gestartet wurde.
Auf macOS muss man python3
statt python
zum Starten des interaktiven Interpreters verwenden! Dies kann auch unter Linux erforderlich sein, hier hängt es aber davon ab, welche Linux-Distribution man verwendet.
Wir können nun Python-Befehle eintippen und mit der Eingabetaste bestätigen. Der sogenannte Prompt >>>
signalisiert dabei, dass Python bereit für Eingaben ist (dieser Prompt ist nicht Teil eines Python-Befehls). Der Python-Interpreter läuft im Hintergrund und führt Ihre Befehle aus. So können Sie Python z.B. als Taschenrechner verwenden. Die vier Grundrechenarten Addition, Subtraktion, Multiplikation und Division können wie folgt verwendet werden:
1 + 1
2
10 - 7
3
7 * 8
56
120 / 7
17.142857142857142
Die ganzzahlige Division hat einen eigenen Operator, der aus zwei Zeichen besteht:
120 // 7
17
Der ganzzahlige Rest einer Division wird mit dem Rest-Operator berechnet:
120 % 7
1
Potenzieren (also eine Zahl hoch eine andere Zahl) ist ebenso möglich:
2**64
18446744073709551616
Python kennt die Vorrangs- und Klammerregeln:
13 + 6) * 8 - 12 / (2.5 + 1.6) (
149.0731707317073
Bei der Eingabe bzw. Darstellung von Zahlen ist darauf zu achten, dass Python die englische Zahlenschreibweise mit einem Punkt als Dezimaltrennzeichen verwendet.
Wenn Sie mathematische Funktionen wie beispielsweise Sinus oder Cosinus verwenden möchten, müssen Sie zuerst das math
-Modul importieren, in dem Sie (einmalig) folgende Zeile eintippen:
import math
Danach stehen viele mathematische Funktionen wie z.B. sqrt
(Wurzel), log
(Logarithmus), sin
(Sinus), cos
(Cosinus) und Konstanten wie pi
(die Kreiszahl \(\pi\)) oder e
(die Eulersche Zahl) zur Verfügung, die man mit einem vorangestellten math.
verwendet:
2) math.sqrt(
1.4142135623730951
math.pi
3.141592653589793
math.e
2.718281828459045
1 + math.sqrt(5) * 7 - 2 * math.pi * 1.222
8.974423397125074
Python wird heutzutage in vielen verschiedenen Bereichen verwendet. Um Ihnen zu verdeutlichen, was man mit Python in der Psychologie und den Neurowissenschaften machen kann, sind hier einige prominente Beispiele angeführt, die vielleicht für Sie relevant sein könnten. Diese Auswahl ist jedoch bei weitem nicht vollständig und spiegelt vor allem meine persönliche Erfahrung wider.
PsychoPy ist ein Programm zur Präsentation von Stimuli für psychophysiologische Untersuchungen. Beispielsweise kann man mit PsychoPy Experimente erstellen, um Reaktionszeiten zu messen. Das Programm kann aber auch für fMRI- bzw. EEG-Untersuchungen verwendet werden, um die dort benötigten (visuellen bzw. auditorischen) Stimuli zeitpräzise zu präsentieren. PsychoPy kann über eine grafische Oberfläche bedient werden, aber spezielle Versuchsdesigns, die über die mitgelieferten Standardparadigmen hinausgehen, erstellt man am besten direkt mit Python-Code. Wir werden uns in den letzten beiden Einheiten mit PsychoPy beschäftigen.
Eine Alternative zu PsychoPy ist as ebenfalls in Python geschriebene Tool OpenSesame.
Python ist sehr populär in den Neurowissenschaften. Auf der NIPY-Website (Neuroimaging for Python) haben sich einzelne Projekte zusammengeschlossen, welche spezifische Aufgaben im Bereich der Neurowissenschaften abdecken. Besonders viele Pakete gibt es für die Auswertung von fMRI-Daten. Hier gibt es z.B. NiBabel zum Einlesen verschiedenster Neuroimaging-Datenformate, Nipype zur einheitlichen Verwendung unterschiedlicher fMRI-Analyseprogramme, sowie Nipy, Nitime und Nilearn zur Analyse von fMRI-Daten.
MNE-Python kann man zur Analyse von EEG- bzw. MEG-Signalen verwenden. Es werden eine Vielzahl an Methoden unterstützt, welche in der Verarbeitung von elektrophysiologischen Gehirnsignalen eine Rolle spielen, wie z.B. Filterung, Artefaktbereinigung, Quelllokalisation und Konnektivitätsanalysen. Es gibt dafür auch eine grafische Oberfläche names MNELAB.
Zur statistischen Auswertung von Daten gibt es in Python ebenfalls eine große Anzahl an Paketen. Besonders wichtig sind dafür NumPy, SciPy, pandas, statsmodels, Matplotlib, seaborn und scikit-learn. Einige dieser Pakete werden wir im Rahmen dieses Seminars kennenlernen (wenn auch nur sehr oberflächlich).
In Python kann man auch eigenständige Programme mit grafischen Oberflächen erstellen. Ein Beispiel dafür ist Spyder, eine grafische Entwicklungsumgebung für Python, welche selbst komplett in Python geschrieben ist. Auch die grafische Oberfläche von PsychoPy ist in Python geschrieben.
Zwei sehr prominente Beispiele dürfen an dieser Stelle nicht fehlen: das erste Bild eines schwarzen Lochs (im Zentrum der Galaxie Messier 87) wurde mit Hilfe von Python erzeugt:
Auch bei der Visualisierung des schwarzen Lochs Sagittarius A* im Zentrum unser eigenen Galaxie wurde Python verwendet:
Installieren Sie Python auf Ihrem Rechner. Starten Sie dann den Python-Interpreter. Welche Version von Python meldet der Interpreter? Ist dies die aktuellste Version?
Tippen Sie im Python-Interpreter import antigravity
ein. Was passiert? Was geschieht, wenn Sie import this
eingeben? Welchen Effekt hat import math
?
Berechnen Sie mit Python das Ergebnis der Division \(4 : 0.4\). Berechnen Sie außerdem das ganzzahlige Ergebnis und den Rest. Was fällt Ihnen auf?
Gegeben seien folgende Messwerte: 11, 27, 15, 10, 33, 18, 25, 22, 39, 11. Berechnen Sie den arithmetischen Mittelwert \(\bar{x}\). Verwenden Sie dafür keine fertigen Funktionen, sondern nur Grundrechenarten und führen Sie diese Berechnung mit einem Befehl (ohne Zwischenergebnisse) durch.
Berechnen Sie das Ergebnis des folgenden Ausdrucks mit einem Befehl (in einer Zeile):
\[\frac{(5^5 - \pi) \cdot \frac{19}{3}}{\sqrt{13} + 7^\frac{2}{3}}\]
Hinweis: Achten Sie auf die Klammersetzung! Das richtige Ergebnis beträgt ungefähr 2722.
Warum funktioniert der folgende Befehl nicht (unter der Annahme dass vorher import math
ausgeführt wurde)?
4) math.Sqrt(