O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Data Science mit Python - Das Handbuch für den Einsatz von Ipython, Jupyter, NumPy, Pandas, Matplotlib, Scikit-Learn

Book Description

  • 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

Table of Contents

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