Data Science mit Python - Jake VanderPlas - E-Book

Data Science mit Python E-Book

Jake VanderPlas

0,0

Beschreibung

Die wichtigsten Tools für die Datenanalyse und-bearbeitung im praktischen Einsatz Python effizient für datenintensive Berechnungen einsetzen mit IPython und Jupyter Laden, Speichern und Bearbeiten von Daten und numerischen Arrays mit NumPy und Pandas Visualisierung von Daten mit Matplotlib Python ist für viele die erste Wahl für Data Science, weil eine Vielzahl von Ressourcen und Bibliotheken zum Speichern, Bearbeiten und Auswerten von Daten verfügbar ist. In diesem Buch erläutert der Autor den Einsatz der wichtigsten Tools. Für Datenanalytiker und Wissenschaftler ist dieses umfassende Handbuch von unschätzbarem Wert für jede Art von Berechnung mit Python sowie bei der Erledigung alltäglicher Aufgaben. Dazu gehören das Bearbeiten, Umwandeln und Bereinigen von Daten, die Visualisierung verschiedener Datentypen und die Nutzung von Daten zum Erstellen von Statistiken oder Machine-Learning-Modellen. Dieses Handbuch erläutert die Verwendung der folgenden Tools: IPython und Jupyter für datenintensive Berechnungen NumPy und Pandas zum effizienten Speichern und Bearbeiten von Daten und Datenarrays in Python Matplotlib für vielfältige Möglichkeiten der Visualisierung von Daten Scikit-Learn zur effizienten und sauberen Implementierung der wichtigsten und am meisten verbreiteten Algorithmen des Machine Learnings Der Autor zeigt Ihnen, wie Sie die zum Betreiben von Data Science verfügbaren Pakete nutzen, um Daten effektiv zu speichern, zu handhaben und Einblick in diese Daten zu gewinnen. Grundlegende Kenntnisse in Python werden dabei vorausgesetzt. Leserstimme zum Buch: »Wenn Sie Data Science mit Python betreiben möchten, ist dieses Buch ein hervorragender Ausgangspunkt. Ich habe es sehr erfolgreich beim Unterrichten von Informatik- und Statistikstudenten eingesetzt. Jake geht weit über die Grundlagen der Open-Source-Tools hinaus und erläutert die grundlegenden Konzepte, Vorgehensweisen und Abstraktionen in klarer Sprache und mit verständlichen Erklärungen.« – Brian Granger, Physikprofessor, California Polytechnic State University, Mitbegründer des Jupyter-Projekts

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 590

Veröffentlichungsjahr: 2017

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Inhaltsverzeichnis
Impressum
Einleitung
Über den Autor
Kapitel 1: Mehr als normales Python: IPython
1.1 Shell oder Notebook?
1.1.1 Die IPython-Shell starten
1.1.2 Das Jupyter-Notebook starten
1.2 Hilfe und Dokumentation in IPython
1.2.1 Mit ? auf die Dokumentation zugreifen
1.2.2 Mit ?? auf den Quellcode zugreifen
1.2.3 Module mit der Tab-Vervollständigung erkunden
1.3 Tastaturkürzel in der IPython-Shell
1.3.1 Tastaturkürzel zum Navigieren
1.3.2 Tastaturkürzel bei der Texteingabe
1.3.3 Tastaturkürzel für den Befehlsverlauf
1.3.4 Sonstige Tastaturkürzel
1.4 Magische Befehle in IPython
1.4.1 Einfügen von Codeblöcken mit %paste und %cpaste
1.4.2 Externen Code ausführen mit %run
1.4.3 Messung der Ausführungszeit von Code mit %timeit
1.4.4 Hilfe für die magischen Funktionen anzeigen mit ?, %magic und %lsmagic
1.5 Verlauf der Ein- und Ausgabe
1.5.1 Die IPython-Objekte In und Out
1.5.2 Der Unterstrich als Abkürzung und vorhergehende Ausgaben
1.5.3 Ausgaben unterdrücken
1.5.4 Weitere ähnliche magische Befehle
1.6 IPython und Shell-Befehle
1.6.1 Kurz vorgestellt: die Shell
1.6.2 Shell-Befehle in IPython
1.6.3 Werte mit der Shell austauschen
1.7 Magische Befehle für die Shell
1.8 Fehler und Debugging
1.8.1 Exceptions handhaben: %xmode
1.8.2 Debugging: Wenn das Lesen von Tracebacks nicht ausreicht
1.9 Profiling und Timing von Code
1.9.1 Timing von Codeschnipseln: %timeit und %time
1.9.2 Profiling kompletter Skripte: %prun
1.9.3 Zeilenweises Profiling mit %lprun
1.9.4 Profiling des Speicherbedarfs: %memit und %mprun
1.10 Weitere IPython-Ressourcen
1.10.1 Quellen im Internet
1.10.2 Bücher
Kapitel 2: Einführung in NumPy
2.1 Die Datentypen in Python
2.1.1 Python-Integers sind mehr als nur ganzzahlige Werte
2.1.2 Python-Listen sind mehr als nur einfache Listen
2.1.3 Arrays feststehenden Typs in Python
2.1.4 Arrays anhand von Listen erzeugen
2.1.5 Neue Arrays erzeugen
2.1.6 NumPys Standarddatentypen
2.2 Grundlagen von NumPy-Arrays
2.2.1 Attribute von NumPy-Arrays
2.2.2 Indizierung von Arrays: Zugriff auf einzelne Elemente
2.2.3 Slicing: Teilmengen eines Arrays auswählen
2.2.4 Arrays umformen
2.2.5 Arrays verketten und aufteilen
2.3 Berechnungen mit NumPy-Arrays: universelle Funktionen
2.3.1 Langsame Schleifen
2.3.2 Kurz vorgestellt: UFuncs
2.3.3 NumPys UFuncs im Detail
2.3.4 UFunc-Features für Fortgeschrittene
2.3.5 UFuncs: mehr erfahren
2.4 Aggregationen: Minimum, Maximum und alles dazwischen
2.4.1 Summieren der Werte eines Arrays
2.4.2 Minimum und Maximum
2.4.3 Beispiel: Durchschnittliche Größe der US-Präsidenten
2.5 Berechnungen mit Arrays: Broadcasting
2.5.1 Kurz vorgestellt: Broadcasting
2.5.2 Für das Broadcasting geltende Regeln
2.5.3 Broadcasting in der Praxis
2.6 Vergleiche, Maskierungen und boolesche Logik
2.6.1 Beispiel: Regentage zählen
2.6.2 Vergleichsoperatoren als UFuncs
2.6.3 Boolesche Arrays verwenden
2.6.4 Boolesche Arrays als Maskierungen
2.7 Fancy Indexing
2.7.1 Fancy Indexing im Detail
2.7.2 Kombinierte Indizierung
2.7.3 Beispiel: Auswahl zufälliger Punkte
2.7.4 Werte per Fancy Indexing modifizieren
2.7.5 Beispiel: Daten gruppieren
2.8 Arrays sortieren
2.8.1 Schnelle Sortierung in NumPy: np.sort und np.argsort
2.8.2 Teilsortierungen: Partitionierung
2.8.3 Beispiel: k nächste Nachbarn
2.9 Strukturierte Daten: NumPys strukturierte Arrays
2.9.1 Strukturierte Arrays erzeugen
2.9.2 Erweiterte zusammengesetzte Typen
2.9.3 Record-Arrays: strukturierte Arrays mit Pfiff
2.9.4 Weiter mit Pandas
Kapitel 3: Datenbearbeitung mit Pandas
3.1 Pandas installieren und verwenden
3.2 Kurz vorgestellt: Pandas-Objekte
3.2.1 Das Pandas-Series-Objekt
3.2.2 Das Pandas-DataFrame-Objekt
3.2.3 Das Pandas-Index-Objekt
3.3 Daten indizieren und auswählen
3.3.1 Series-Daten auswählen
3.3.2 DataFrame-Daten auswählen
3.4 Mit Pandas-Daten arbeiten
3.4.1 UFuncs: Indexerhaltung
3.4.2 UFuncs: Indexanpassung
3.4.3 UFuncs: Operationen mit DataFrame und Series
3.5 Handhabung fehlender Daten
3.5.1 Überlegungen zu fehlenden Daten
3.5.2 Fehlende Daten in Pandas
3.5.3 Mit null-Werten arbeiten
3.6 Hierarchische Indizierung
3.6.1 Mehrfach indizierte Series
3.6.2 Methoden zum Erzeugen eines MultiIndex
3.6.3 Indizierung und Slicing eines MultiIndex
3.6.4 Multi-Indizes umordnen
3.6.5 Datenaggregationen mit Multi-Indizes
3.7 Datenmengen kombinieren: concat und append
3.7.1 Verkettung von NumPy-Arrays
3.7.2 Einfache Verkettungen mit pd.concat
3.8 Datenmengen kombinieren: Merge und Join
3.8.1 Relationale Algebra
3.8.2 Join-Kategorien
3.8.3 Angabe der zu verknüpfenden Spalten
3.8.4 Mengenarithmetik bei Joins
3.8.5 Konflikte bei Spaltennamen: das Schlüsselwort suffixes
3.8.6 Beispiel: Daten von US-Bundesstaaten
3.9 Aggregation und Gruppierung
3.9.1 Planetendaten
3.9.2 Einfache Aggregationen in Pandas
3.9.3 GroupBy: Aufteilen, Anwenden und Kombinieren
3.10 Pivot-Tabellen
3.10.1 Gründe für Pivot-Tabellen
3.10.2 Pivot-Tabellen von Hand erstellen
3.10.3 Die Syntax von Pivot-Tabellen
3.10.4 Beispiel: Geburtenraten
3.11 Vektorisierte String-Operationen
3.11.1 Kurz vorgestellt: String-Operationen in Pandas
3.11.2 Liste der Pandas-Stringmethoden
3.11.3 Beispiel: Rezeptdatenbank
3.12 Zeitreihen verwenden
3.12.1 Kalenderdaten und Zeiten in Python
3.12.2 Zeitreihen in Pandas: Indizierung durch Zeitangaben
3.12.3 Datenstrukturen für Zeitreihen in Pandas
3.12.4 Häufigkeiten und Abstände
3.12.5 Resampling, zeitliches Verschieben und geglättete Statistik
3.12.6 Mehr erfahren
3.12.7 Beispiel: Visualisierung von Fahrradzählungen in Seattle
3.13 Leistungsstarkes Pandas: eval() und query()
3.13.1 Der Zweck von query() und eval(): zusammengesetzte Ausdrücke
3.13.2 Effiziente Operationen mit pandas.eval()
3.13.3 DataFrame.eval() für spaltenweise Operationen
3.13.4 Die DataFrame.query()-Methode
3.13.5 Performance: Verwendung von eval() und query()
3.14 Weitere Ressourcen
Kapitel 4: Visualisierung mit Matplotlib
4.1 Allgemeine Tipps zu Matplotlib
4.1.1 Matplotlib importieren
4.1.2 Stil einstellen
4.1.3 show() oder kein show()? – Anzeige von Diagrammen
4.1.4 Grafiken als Datei speichern
4.2 Zwei Seiten derselben Medaille
4.3 Einfache Liniendiagramme
4.3.1 Anpassen des Diagramms: Linienfarben und -stile
4.3.2 Anpassen des Diagramms: Begrenzungen
4.3.3 Diagramme beschriften
4.4 Einfache Streudiagramme
4.4.1 Streudiagramme mit plt.plot() erstellen
4.4.2 Streudiagramme mit plt.scatter() erstellen
4.4.3 plot kontra scatter: eine Anmerkung zur Effizienz
4.5 Visualisierung von Fehlern
4.5.1 Einfache Fehlerbalken
4.5.2 Stetige Fehler
4.6 Dichtediagramme und Konturdiagramme
4.6.1 Visualisierung einer dreidimensionalen Funktion
4.7 Histogramme, Binnings und Dichte
4.7.1 Zweidimensionale Histogramme und Binnings
4.8 Anpassen der Legende
4.8.1 Legendenelemente festlegen
4.8.2 Legenden mit Punktgrößen
4.8.3 Mehrere Legenden
4.9 Anpassen von Farbskalen
4.9.1 Farbskala anpassen
4.9.2 Beispiel: Handgeschriebene Ziffern
4.10 Untergeordnete Diagramme
4.10.1 plt.axes: Untergeordnete Diagramme von Hand erstellen
4.10.2 plt.subplot: Untergeordnete Diagramme in einem Raster anordnen
4.10.3 plt.subplots: Das gesamte Raster gleichzeitig ändern
4.10.4 plt.GridSpec: Kompliziertere Anordnungen
4.11 Text und Beschriftungen
4.11.1 Beispiel: Auswirkungen von Feiertagen auf die Geburtenzahlen in den USA
4.11.2 Transformationen und Textposition
4.11.3 Pfeile und Beschriftungen
4.12 Achsenmarkierungen anpassen
4.12.1 Vorrangige und nachrangige Achsenmarkierungen
4.12.2 Markierungen oder Beschriftungen verbergen
4.12.3 Anzahl der Achsenmarkierungen verringern oder erhöhen
4.12.4 Formatierung der Achsenmarkierungen
4.12.5 Zusammenfassung der Formatter- und Locator-Klassen
4.13 Matplotlib anpassen: Konfigurationen und Stylesheets
4.13.1 Diagramme von Hand anpassen
4.13.2 Voreinstellungen ändern: rcParams
4.13.3 Stylesheets
4.14 Dreidimensionale Diagramme in Matplotlib
4.14.1 Dreidimensionale Punkte und Linien
4.14.2 Dreidimensionale Konturdiagramme
4.14.3 Drahtgitter- und Oberflächendiagramme
4.14.4 Triangulation von Oberflächen
4.15 Basemap: geografische Daten verwenden
4.15.1 Kartenprojektionen
4.15.2 Zeichnen eines Kartenhintergrunds
4.15.3 Daten auf einer Karte anzeigen
4.15.4 Beispiel: Kalifornische Städte
4.15.5 Beispiel: Oberflächentemperaturen
4.16 Visualisierung mit Seaborn
4.16.1 Seaborn kontra Matplotlib
4.16.2 Seaborn-Diagramme
4.17 Weitere Ressourcen
4.17.1 Matplotlib
4.17.2 Weitere Grafikbibliotheken für Python
Kapitel 5: Machine Learning
5.1 Was ist Machine Learning?
5.1.1 Kategorien des Machine Learnings
5.1.2 Qualitative Beispiele für Machine-Learning-Anwendungen
5.1.3 Zusammenfassung
5.2 Kurz vorgestellt: Scikit-Learn
5.2.1 Datenrepräsentierung in Scikit-Learn
5.2.2 Scikit-Learns Schätzer-API
5.2.3 Anwendung: Handgeschriebene Ziffern untersuchen
5.2.4 Zusammenfassung
5.3 Hyperparameter und Modellvalidierung
5.3.1 Überlegungen zum Thema Modellvalidierung
5.3.2 Auswahl des besten Modells
5.3.3 Lernkurven
5.3.4 Validierung in der Praxis: Rastersuche
5.3.5 Zusammenfasssung
5.4 Merkmalserstellung
5.4.1 Kategoriale Merkmale
5.4.2 Texte als Merkmale
5.4.3 Bilder als Merkmale
5.4.4 Abgeleitete Merkmale
5.4.5 Vervollständigung fehlender Daten
5.4.6 Pipelines mit Merkmalen
5.5 Ausführlich: Naive Bayes-Klassifikation
5.5.1 Bayes-Klassifikation
5.5.2 Gauß’sche naive Bayes-Klassifikation
5.5.3 Multinomiale naive Bayes-Klassifikation
5.5.4 Einsatzgebiete für naive Bayes-Klassifikation
5.6 Ausführlich: Lineare Regression
5.6.1 Einfache lineare Regression
5.6.2 Regression der Basisfunktion
5.6.3 Regularisierung
5.6.4 Beispiel: Vorhersage des Fahrradverkehrs
5.7 Ausführlich: Support Vector Machines
5.7.1 Gründe für Support Vector Machines
5.7.2 Support Vector Machines: Maximierung des Randbereichs
5.7.3 Beispiel: Gesichtserkennung
5.7.4 Zusammenfassung Support Vector Machines
5.8 Ausführlich: Entscheidungsbäume und Random Forests
5.8.1 Gründe für Random Forests
5.8.2 Schätzerensembles: Random Forests
5.8.3 Random-Forest-Regression
5.8.4 Beispiel: Random Forest zur Klassifikation handgeschriebener Ziffern
5.8.5 Zusammenfassung Random Forests
5.9 Ausführlich: Hauptkomponentenanalyse
5.9.1 Kurz vorgestellt: Hauptkomponentenanalyse
5.9.2 Hauptkomponentenanalyse als Rauschfilter
5.9.3 Beispiel: Eigengesichter
5.9.4 Zusammenfassung Hauptkomponentenanalyse
5.10 Ausführlich: Manifold Learning
5.10.1 Manifold Learning: »HELLO«
5.10.2 Multidimensionale Skalierung (MDS)
5.10.3 MDS als Manifold Learning
5.10.4 Nichtlineare Einbettungen: Wenn MDS nicht funktioniert
5.10.5 Nichtlineare Mannigfaltigkeiten: lokal lineare Einbettung
5.10.6 Überlegungen zum Thema Manifold-Methoden
5.10.7 Beispiel: Isomap und Gesichter
5.10.8 Beispiel: Visualisierung der Strukturen in Zifferndaten
5.11 Ausführlich: k-Means-Clustering
5.11.1 Kurz vorgestellt: der k-Means-Algorithmus
5.11.2 k-Means-Algorithmus: Expectation-Maximization
5.11.3 Beispiele
5.12 Ausführlich: Gauß’sche Mixture-Modelle
5.12.1 Gründe für GMM: Schwächen von k-Means
5.12.2 EM-Verallgemeinerung: Gauß’sche Mixture-Modelle
5.12.3 GMM als Dichteschätzung
5.12.4 Beispiel: GMM zum Erzeugen neuer Daten verwenden
5.13 Ausführlich: Kerndichteschätzung
5.13.1 Gründe für Kerndichteschätzung: Histogramme
5.13.2 Kerndichteschätzung in der Praxis
5.13.3 Beispiel: Kerndichteschätzung auf Kugeloberflächen
5.13.4 Beispiel: Nicht ganz so naive Bayes-Klassifikation
5.14 Anwendung: Eine Gesichtserkennungs-Pipeline
5.14.1 HOG-Merkmale
5.14.2 HOG in Aktion: eine einfache Gesichtserkennung
5.14.3 Vorbehalte und Verbesserungen
5.15 Weitere Machine-Learning-Ressourcen
5.15.1 Machine Learning in Python
5.15.2 Machine Learning im Allgemeinen

Data Science mit Python

Das Handbuch für den Einsatz von IPython, Jupyter, NumPy, Pandas, Matplotlib, Scikit-Learn

Jake VanderPlas

Übersetzung aus dem Englischen von Knut Lorenzen

Impressum

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über <http://dnb.d-nb.de> abrufbar.

ISBN 978-3-95845-697-6

1. Auflage 2018

www.mitp.de

E-Mail: [email protected]

Telefon: +49 7953 / 7189 - 079

Telefax: +49 7953 / 7189 - 082

© 2018 mitp Verlags GmbH & Co. KG

Dieses Werk, einschließlich aller seiner Teile, ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.

Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Authorized German translation of the English edition of Python Data Science Handbook – Essential Tools for Working with Data

ISBN 978-1491912058 © 2017 Jake VanderPlas

This translation is published and sold by permission of O'Reilly Media, Inc., which owns or controls all rights to publish and sell the same.

Lektorat: Sabine Schulz

Sprachkorrektorat: Sibylle Feldmann

Coverbild: © agsandrew / fotolia.com

electronic publication: III-satz, Husby, www.drei-satz.de

Dieses Ebook verwendet das ePub-Format und ist optimiert für die Nutzung mit dem iBooks-reader auf dem iPad von Apple. Bei der Verwendung anderer Reader kann es zu Darstellungsproblemen kommen.

Der Verlag räumt Ihnen mit dem Kauf des ebooks das Recht ein, die Inhalte im Rahmen des geltenden Urheberrechts zu nutzen. Dieses Werk, einschließlich aller seiner Teile, ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheherrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und Einspeicherung und Verarbeitung in elektronischen Systemen.

Der Verlag schützt seine ebooks vor Missbrauch des Urheberrechts durch ein digitales Rechtemanagement. Bei Kauf im Webshop des Verlages werden die ebooks mit einem nicht sichtbaren digitalen Wasserzeichen individuell pro Nutzer signiert.

Bei Kauf in anderen ebook-Webshops erfolgt die Signatur durch die Shopbetreiber. Angaben zu diesem DRM finden Sie auf den Seiten der jeweiligen Anbieter.

Einleitung

Was ist Data Science?

In diesem Buch geht es darum, Data Science mithilfe von Python zu betreiben, daher stellt sich unmittelbar die Frage: Was ist Data Science überhaupt? Das genau zu definieren, erweist sich als überraschend schwierig, insbesondere in Anbetracht der Tatsache, wie geläufig dieser Begriff inzwischen geworden ist. Von lautstarken Kritikern wird dieser Begriff mitunter als eine überflüssige Bezeichnung abgetan (denn letzten Endes kommt keine Wissenschaft ohne Daten aus) oder für ein leeres Schlagwort gehalten, das lediglich dazu dient, Lebensläufe aufzupolieren, um die Aufmerksamkeit übereifriger Personalverantwortlicher zu erlangen.

Meiner Ansicht nach übersehen diese Kritiker dabei einen wichtigen Punkt. Trotz des mit dem Begriff einhergehenden Hypes ist Data Science wohl die beste Beschreibung für fachübergreifende Fähigkeiten, die in vielen industriellen und akademischen Anwendungsbereichen immer wichtiger werden. Entscheidend ist hier die Interdisziplinarität: Ich halte Drew Conways​ Venn-Diagramm, das er im September 2010 erstmals in seinem Blog veröffentlichte, für die beste Definition von Data Science (siehe Abbildung 0.1).

Abb. 0.1: Das Venn-Diagramm zur Data Science von Drew Conway

Zwar sind einige der Bezeichnungen für die Schnittmengen nicht ganz ernst gemeint, aber dennoch erfasst dieses Diagramm das Wesentliche dessen, was gemeint ist, wenn man von »Data Science« spricht: Es handelt sich um ein grundlegend interdisziplinäres Thema. Data Science umfasst drei verschiedene und sich überschneidende Bereiche: die Aufgaben eines Statistikers, der (immer größer werdende) Datenmengen modellieren und zusammenfassen kann, die Arbeit des Informatikers, der Algorithmen für die effiziente Speicherung, Verarbeitung und Visualisierung dieser Daten entwerfen kann, und das erforderliche Fachwissen – das wir uns als das »klassisch« Erlernte eines Fachgebiets vorstellen können –, um sowohl die angemessenen Fragen zu stellen als auch die Antworten im richtigen Kontext zu bewerten.

Das habe ich im Sinn, wenn ich Sie dazu auffordere, Data Science nicht als ein neu zu erlernendes Fachwissensgebiet zu begreifen, sondern als neue Fähigkeiten, die Sie im Rahmen Ihres vorhandenen Fachwissens anwenden können. Ob Sie über Wahlergebnisse berichten, Aktienrenditen vorhersagen, Mausklicks auf Onlinewerbung optimieren, Mikroorganismen auf Mikroskopbildern identifizieren, nach neuen Arten astronomischer Objekte suchen oder mit irgendwelchen anderen Daten arbeiten: Ziel dieses Buchs ist es, Ihnen die Fähigkeit zu vermitteln, neuartige Fragen über das von Ihnen gewählte Fachgebiet zu stellen und diese zu beantworten.

An wen richtet sich das Buch?

Sowohl in meinen Vorlesungen an der Universität Washington als auch auf verschiedenen technisch orientierten Konferenzen und Treffen wird mir am häufigsten diese Frage gestellt: »Wie kann man Python am besten erlernen?« Bei den Fragenden handelt es sich im Allgemeinen um technisch interessierte Studenten, Entwickler oder Forscher, die oftmals schon über umfangreiche Erfahrung mit dem Schreiben von Code und der Verwendung von rechnergestützten und numerischen Tools verfügen. Die meisten dieser Personen möchten Python erlernen, um die Programmiersprache als Tool für datenintensive und rechnergestützte wissenschaftliche Aufgaben zu nutzen. Für diese Zielgruppe ist eine Vielzahl von Lernvideos, Blogbeiträgen und Tutorials online verfügbar. Allerdings frustriert mich bereits seit geraumer Zeit, dass es auf obige Frage keine wirklich eindeutige und gute Antwort gibt – und das war der Anlass für dieses Buch.

Das Buch ist nicht als Einführung in Python oder die Programmierung im Allgemeinen gedacht. Ich setze voraus, dass der Leser mit der Programmiersprache Python vertraut ist. Dazu gehören das Definieren von Funktionen, die Zuweisung von Variablen, das Aufrufen der Methoden von Objekten, die Steuerung des Programmablaufs und weitere grundlegende Aufgaben. Das Buch soll vielmehr Python-Usern dabei helfen, die zum Betreiben von Data Science verfügbaren Pakete zu nutzen – Bibliotheken wie IPython, NumPy, Pandas, Matplotlib, Scikit-Learn und ähnliche Tools –, um Daten effektiv zu speichern, zu handhaben und Einblick in diese Daten zu gewinnen.

Warum Python?

Python hat sich in den letzten Jahrzehnten zu einem erstklassigen Tool für wissenschaftliche Berechnungen entwickelt, insbesondere auch für die Analyse und Visualisierung großer Datensätze. Die ersten Anhänger der Programmiersprache Python dürfte das ein wenig überraschen: Beim eigentlichen Design der Sprache wurde weder der Datenanalyse noch wissenschaftlichen Berechnungen besondere Beachtung geschenkt.

Dass sich Python für die Data Science als so nützlich erweist, ist vor allem dem großen und aktiven Ökosystem der Programmpakete von Drittherstellern zu verdanken: Da gibt es NumPy für die Handhabung gleichartiger Array-basierter Daten, Pandas für die Verarbeitung verschiedenartiger und gekennzeichneter Daten, SciPy für gängige wissenschaftliche Berechnungen, Matplotlib für druckreife Visualisierungen, IPython für die interaktive Ausführung und zum Teilen von Code, Scikit-Learn für Machine Learning sowie viele weitere Tools, die später im Buch noch Erwähnung finden.

Falls Sie auf der Suche nach einer Einführung in die Programmiersprache Python sind, empfehle ich das dieses Buch ergänzende Projekt A Whirlwind Tour of the Python Language (https://github.com/jakevdp/WhirlwindTourOfPython). Hierbei handelt es sich um eine Tour durch die wesentlichen Features der Sprache Python, die sich an Data Scientists richtet, die bereits mit anderen Programmiersprachen vertraut sind.

Python 2 kontra Python 3

In diesem Buch wird die Syntax von Python 3 verwendet, die Spracherweiterungen enthält, die mit Python 2 inkompatibel sind. Zwar wurde Python 3 schon 2008 veröffentlicht, allerdings verbreitete sich diese Version insbesondere in den Communitys von Wissenschaft und Webentwicklung nur langsam. Das lag vor allem daran, dass die Anpassung vieler wichtiger Pakete von Drittherstellern an die neue Sprachversion Zeit benötigte. Seit Anfang 2014 gibt es jedoch stabile Versionen der für die Data Science wichtigsten Tools, die sowohl mit Python 2 als auch mit Python 3 kompatibel sind, daher wird in diesem Buch die neuere Syntax von Python 3 genutzt. Allerdings funktionieren die meisten Codeabschnitte dieses Buchs ohne Änderungen auch in Python 2. Wenn Py2-inkompatible Syntax verwendet wird, weise ich ausdrücklich darauf hin.

Inhaltsübersicht

Alle Kapitel in diesem Buch konzentrieren sich auf ein bestimmtes Paket oder Tool, das für die mit Python betriebene Data Science von grundlegender Bedeutung ist.

IPython und Jupyter (Kapitel 1)

Diese Pakete bieten eine Umgebung für Berechnungen, die von vielen Data Scientists genutzt wird, die Python einsetzen.

NumPy (Kapitel 2)

Diese Bibliothek stellt das ndarray-Objekt zur Verfügung, das ein effizientes Speichern und die Handhabung dicht gepackter Datenarrays in Python ermöglicht.

Pandas (Kapitel 3)

Diese Bibliothek verfügt über das DataFrame-Objekt, das ein effizientes Speichern und die Handhabung gekennzeichneter bzw. spaltenorientierter Daten in Python gestattet.

Matplotlib (Kapitel 4)

Diese Bibliothek ermöglicht flexible und vielfältige Visualisierungen von Daten in Python.

Scikit-Learn (Kapitel 5)

Diese Bibliothek stellt eine effiziente Implementierung der wichtigsten und gebräuchlichsten Machine-Learning-Algorithmen zur Verfügung.

Natürlich umfasst die PyData-Welt viel mehr als diese fünf Pakete – und sie wächst mit jedem Tag weiter. Ich werde mich im Folgenden daher bemühen, Hinweise auf andere interessante Projekte, Bestrebungen und Pakete zu geben, die die Grenzen des mit Python Machbaren erweitern. Dessen ungeachtet sind die fünf genannten Pakete derzeit für viele der mit Python möglichen Aufgaben der Data Science von grundlegender Bedeutung, und ich erwarte, dass sie wichtig bleiben, auch wenn das sie umgebende Ökosystem weiterhin wächst.

Verwendung der Codebeispiele

Unter https://github.com/jakevdp/PythonDataScienceHandbook steht ergänzendes Material (Codebeispiele, Abbildungen usw.) zum Herunterladen zur Verfügung. Das Buch soll Ihnen helfen, Ihre Arbeit zu erledigen. Den im Buch aufgeführten Code können Sie generell in Ihren eigenen Programmen und der Dokumentation verwenden. Sie brauchen uns nicht um Erlaubnis zu fragen, solange Sie nicht erhebliche Teile des Codes nutzen. Wenn Sie beispielsweise ein Programm schreiben, das einige der im Buch aufgeführten Codeschnipsel verwendet, benötigen Sie dafür keine Erlaubnis. Der Verkauf oder Vertrieb einer CD-ROM, die Codebeispiele aus dem Buch enthält, bedarf hingegen einer Genehmigung. Das Beantworten von Fragen durch Verwendung von Zitaten oder Beispielcode aus diesem Buch muss nicht extra genehmigt werden. Die Verwendung erheblicher Teile des Beispielcodes in der Dokumentation Ihres eigenen Produkts erfordert jedoch eine Genehmigung.

Wir freuen uns über Quellennennungen, machen sie jedoch nicht zur Bedingung. Üblich ist die Nennung von Titel, Autor(en), Verlag, Erscheinungsjahr und ISBN, also beispielsweise »Data Science mit Python« von Jake VanderPlas (mitp Verlag 2017), ISBN 978-3-95845-695-2.

Installation der Software

Die Installation von Python und der für wissenschaftliche Berechnungen erforderlichen Bibliotheken ist unkompliziert. In diesem Abschnitt finden Sie einige Überlegungen, denen Sie bei der Einrichtung Ihres Computers Beachtung schenken sollten.

Es gibt zwar verschiedene Möglichkeiten, Python zu installieren, allerdings empfehle ich zum Betreiben von Data Science die Anaconda-Distribution, die unter Windows, Linux und macOS auf ähnliche Weise funktioniert. Es gibt zwei Varianten der Anaconda-Distribution:

Miniconda​ (http://conda.pydata.org/miniconda.html) besteht aus dem eigentlichen Python-Interpreter und einem Kommandozeilenprogramm namens conda, das als plattformübergreifender Paketmanager für Python-Pakete fungiert. Das Programm arbeitet in ähnlicher Weise wie die Tools apt oder yum, die Linux-Usern bekannt sein dürften.

Anaconda​ (https://www.continuum.io/downloads) enthält sowohl Python als auch conda und darüber hinaus eine Reihe vorinstallierter Pakete, die für wissenschaftliche Berechnungen konzipiert sind. Aufgrund der Größe dieser Pakete müssen Sie davon ausgehen, dass die Installation mehrere Gigabyte Speicherplatz auf der Festplatte belegt.

Alle in Anaconda enthaltenen Pakete können auch nachträglich der Miniconda-Installation hinzugefügt werden. Daher empfehle ich, mit Miniconda anzufangen.

Laden Sie zunächst das Miniconda-Paket herunter und installieren Sie es. Vergewissern Sie sich, dass Sie eine Version auswählen, die Python 3 enthält. Installieren Sie dann die in diesem Buch verwendeten Pakete:

[~]$ conda install numpy pandas scikit-learn matplotlib seaborn ipython-notebook

Wir werden im gesamten Buch noch weitere, spezialisiertere Tools verwenden, die zum wissenschaftlich orientierten Ökosystem in Python gehören. Für gewöhnlich ist zur Installation lediglich eine Eingabe wie conda install paketname erforderlich. Weitere Informationen über conda, beispielsweise über das Erstellen und Verwenden von conda-Umgebungen (die ich nur nachdrücklich empfehlen kann), finden Sie in der Onlinedokumentation (http://conda.pydata.org/docs/).

Konventionen dieses Buchs

In diesem Buch gelten die folgenden typografischen Konventionen:

Kursive Schrift

Kennzeichnet neue Begriffe, Dateinamen und Dateinamenserweiterungen.

Nicht proportionale Schrift

Wird für URLs, Programmlistings und im Fließtext verwendet, um Programmbestandteile wie Variablen- oder Funktionsbezeichnungen, Datenbanken, Datentypen Umgebungsvariablen, Anweisungen und Schlüsselwörter zu kennzeichnen.

Fette nicht proportionale Schrift

Kommandos oder sonstiger Text, der vom User buchstabengetreu eingegeben werden soll.

Kursive nicht proportionale Schrift

Text, der durch eigene Werte oder durch kontextabhängige Werte zu ersetzen ist.

Die Webseite zum Buch

Der Verlag hält auf seiner Website weiteres Material zum Buch bereit. Unter http://www.mitp.de/695 können Sie sich Beispielcode herunterladen.

Über den Autor

Jake VanderPlas ist seit Langem User und Entwickler der SciPy-Umgebung. Derzeit ist er als interdisziplinärer Forschungsdirektor an der Universität Washington tätig, führt eigene astronomische Forschungsarbeiten durch und berät dort ansässige Wissenschaftler, die auf vielen verschiedenen Fachgebieten arbeiten.