SciPy
Kurz: Eine wissenschaftliche Python-Bibliothek, aufbauend auf NumPy — bietet fortgeschrittene Funktionen für Optimierung, Statistik, Signalverarbeitung und lineare Algebra.
Genauer: Während NumPy die Grunddatenstruktur (Arrays) und Basisoperationen liefert, ergänzt SciPy speziellere wissenschaftliche Algorithmen (z. B. numerische Integration, Fourier-Transformationen), die man sonst selbst implementieren müsste. Wird häufig zusammen mit NumPy und Pandas im selben Data-Science-Projekt eingesetzt.
Im Detail
Thematische Teilmodule
from scipy import stats, optimize
# Statistischer Test: unterscheiden sich zwei Gruppen signifikant?
t_stat, p_wert = stats.ttest_ind(gruppe_a, gruppe_b)
# Optimierung: Minimum einer Funktion finden
ergebnis = optimize.minimize(lambda x: (x - 3) ** 2, x0=0)
print(ergebnis.x) # nahe 3.0SciPy ist in thematische Teilmodule gegliedert, jedes für einen wissenschaftlichen Bereich: scipy.optimize (Optimierungsprobleme, z. B. eine Funktion minimieren oder ein Gleichungssystem lösen), scipy.stats (statistische Tests und Wahrscheinlichkeitsverteilungen), scipy.signal (Signalverarbeitung, Filter), scipy.linalg (fortgeschrittene lineare Algebra über NumPys Grundfunktionen hinaus), scipy.integrate (numerische Integration, Differentialgleichungen), scipy.interpolate (Interpolation zwischen Datenpunkten) und mehrere weitere. Diese Aufteilung spiegelt SciPys Rolle als Sammlung ausgereifter, gut getesteter Implementierungen klassischer numerischer/wissenschaftlicher Verfahren wider, statt eines monolithischen Werkzeugs — man importiert gezielt genau das Teilmodul, das man braucht.
Historischer Hintergrund
SciPy entstand Ende der 1990er/Anfang der 2000er als Community-Projekt, das viele der Funktionen aus kommerzieller wissenschaftlicher Software (wie MATLAB) frei verfügbar machen wollte. Zusammen mit NumPy (das ursprünglich Teil desselben Projekts war, bevor es sich als eigenständige Basis-Bibliothek abspaltete) bildete SciPy den Grundstein des heutigen Python-Wissenschafts-Ökosystems — praktisch jede spätere Bibliothek in diesem Bereich (scikit-learn für Machine Learning, Matplotlib für Visualisierung) baut direkt oder indirekt auf den von SciPy/NumPy etablierten Datenstrukturen und Konventionen auf.
Arbeitsteilung im Python-Ökosystem
Die Arbeitsteilung im Python-Data-Science-Ökosystem ist meist klar: NumPy liefert die grundlegende Array-Datenstruktur und einfache Operationen (Addition, Matrix-Multiplikation), Pandas darauf aufbauend tabellarische Datenverwaltung mit benannten Spalten und Zeitreihen-Funktionalität, SciPy ergänzt beide um spezialisierte wissenschaftliche Algorithmen, die man sonst mühsam selbst implementieren müsste. Ein typisches Projekt kombiniert alle drei: Pandas zum Einlesen/Bereinigen der Rohdaten, NumPy für die numerische Verarbeitung, SciPy für die eigentliche statistische Auswertung oder Optimierung.
Grenzen
SciPy ist auf klassische numerische/statistische Verfahren ausgelegt, nicht auf moderne Machine-Learning-Workflows — dafür existieren spezialisiertere Bibliotheken wie scikit-learn (klassisches ML) oder PyTorch/TensorFlow (Deep Learning), die zwar teilweise auf SciPy-Konzepten aufbauen, aber eigene, dafür optimierte Datenstrukturen (z. B. GPU-fähige Tensoren) mitbringen.
Siehe auch: NumPy, Data Science, Pandas