E-Book, Deutsch, 552 Seiten
Reihe: mitp Professional
VanderPlas Data Science mit Python
1. Auflage 2017
ISBN: 978-3-95845-696-9
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 0 - No protection
Das Handbuch für den Einsatz von IPython, Jupyter, NumPy, Pandas, Matplotlib und Scikit-Learn
E-Book, Deutsch, 552 Seiten
Reihe: mitp Professional
ISBN: 978-3-95845-696-9
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 0 - No protection
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
Zielgruppe
Programmierer aus den Bereichen Big Data und Data Science
Autoren/Hrsg.
Weitere Infos & Material
1;Cover;1
2;Titel;3
3;Impressum;4
4;Inhaltsverzeichnis;5
5;Einleitung;13
6;Über den Autor;18
7;Kapitel 1: Mehr als normales Python: IPython;19
7.1;1.1 Shell oder Notebook?;19
7.1.1;1.1.1 Die IPython-Shell starten;20
7.1.2;1.1.2 Das Jupyter-Notebook starten;20
7.2;1.2 Hilfe und Dokumentation in IPython;21
7.2.1;1.2.1 Mit ? auf die Dokumentation zugreifen;22
7.2.2;1.2.2 Mit ?? auf den Quellcode zugreifen;23
7.2.3;1.2.3 Module mit der Tab-Vervollständigung erkunden;24
7.3;1.3 Tastaturkürzel in der IPython-Shell;26
7.3.1;1.3.1 Tastaturkürzel zum Navigieren;27
7.3.2;1.3.2 Tastaturkürzel bei der Texteingabe;27
7.3.3;1.3.3 Tastaturkürzel für den Befehlsverlauf;28
7.3.4;1.3.4 Sonstige Tastaturkürzel;29
7.4;1.4 Magische Befehle in IPython;29
7.4.1;1.4.1 Einfügen von Codeblöcken mit %paste und %cpaste;29
7.4.2;1.4.2 Externen Code ausführen mit %run;31
7.4.3;1.4.3 Messung der Ausführungszeit von Code mit %timeit;31
7.4.4;1.4.4 Hilfe für die magischen Funktionen anzeigen mit ?, %magic und %lsmagic;32
7.5;1.5 Verlauf der Ein- und Ausgabe;32
7.5.1;1.5.1 Die IPython-Objekte In und Out;33
7.5.2;1.5.2 Der Unterstrich als Abkürzung und vorhergehende Ausgaben;34
7.5.3;1.5.3 Ausgaben unterdrücken;34
7.5.4;1.5.4 Weitere ähnliche magische Befehle;35
7.6;1.6 IPython und Shell-Befehle;35
7.6.1;1.6.1 Kurz vorgestellt: die Shell;36
7.6.2;1.6.2 Shell-Befehle in IPython;37
7.6.3;1.6.3 Werte mit der Shell austauschen;37
7.7;1.7 Magische Befehle für die Shell;38
7.8;1.8 Fehler und Debugging;39
7.8.1;1.8.1 Exceptions handhaben: %xmode;39
7.8.2;1.8.2 Debugging: Wenn das Lesen von Tracebacks nicht ausreicht;41
7.9;1.9 Profiling und Timing von Code;44
7.9.1;1.9.1 Timing von Codeschnipseln: %timeit und %time;45
7.9.2;1.9.2 Profiling kompletter Skripte: %prun;46
7.9.3;1.9.3 Zeilenweises Profiling mit %lprun;47
7.9.4;1.9.4 Profiling des Speicherbedarfs: %memit und %mprun;48
7.10;1.10 Weitere IPython-Ressourcen;50
7.10.1;1.10.1 Quellen im Internet;50
7.10.2;1.10.2 Bücher;50
8;Kapitel 2: Einführung in NumPy;51
8.1;2.1 Die Datentypen in Python;52
8.1.1;2.1.1 Python-Integers sind mehr als nur ganzzahlige Werte;53
8.1.2;2.1.2 Python-Listen sind mehr als nur einfache Listen;54
8.1.3;2.1.3 Arrays feststehenden Typs in Python;56
8.1.4;2.1.4 Arrays anhand von Listen erzeugen;56
8.1.5;2.1.5 Neue Arrays erzeugen;57
8.1.6;2.1.6 NumPys Standarddatentypen;58
8.2;2.2 Grundlagen von NumPy-Arrays;59
8.2.1;2.2.1 Attribute von NumPy-Arrays;60
8.2.2;2.2.2 Indizierung von Arrays: Zugriff auf einzelne Elemente;61
8.2.3;2.2.3 Slicing: Teilmengen eines Arrays auswählen;62
8.2.4;2.2.4 Arrays umformen;65
8.2.5;2.2.5 Arrays verketten und aufteilen;66
8.3;2.3 Berechnungen mit NumPy-Arrays: universelle Funktionen;68
8.3.1;2.3.1 Langsame Schleifen;68
8.3.2;2.3.2 Kurz vorgestellt: UFuncs;70
8.3.3;2.3.3 NumPys UFuncs im Detail;70
8.3.4;2.3.4 UFunc-Features für Fortgeschrittene;75
8.3.5;2.3.5 UFuncs: mehr erfahren;77
8.4;2.4 Aggregationen: Minimum, Maximum und alles dazwischen;77
8.4.1;2.4.1 Summieren der Werte eines Arrays;77
8.4.2;2.4.2 Minimum und Maximum;78
8.4.3;2.4.3 Beispiel: Durchschnittliche Größe der US-Präsidenten;80
8.5;2.5 Berechnungen mit Arrays: Broadcasting;82
8.5.1;2.5.1 Kurz vorgestellt: Broadcasting;82
8.5.2;2.5.2 Für das Broadcasting geltende Regeln;84
8.5.3;2.5.3 Broadcasting in der Praxis;87
8.6;2.6 Vergleiche, Maskierungen und boolesche Logik;88
8.6.1;2.6.1 Beispiel: Regentage zählen;89
8.6.2;2.6.2 Vergleichsoperatoren als UFuncs;90
8.6.3;2.6.3 Boolesche Arrays verwenden;91
8.6.4;2.6.4 Boolesche Arrays als Maskierungen;94
8.7;2.7 Fancy Indexing;97
8.7.1;2.7.1 Fancy Indexing im Detail;97
8.7.2;2.7.2 Kombinierte Indizierung;98
8.7.3;2.7.3 Beispiel: Auswahl zufälliger Punkte;99
8.7.4;2.7.4 Werte per Fancy Indexing modifizieren;101
8.7.5;2.7.5 Beispiel: Daten gruppieren;102
8.8;2.8 Arrays sortieren;104
8.8.1;2.8.1 Schnelle Sortierung in NumPy: np.sort und np.argsort;105
8.8.2;2.8.2 Teilsortierungen: Partitionierung;107
8.8.3;2.8.3 Beispiel: k nächste Nachbarn;107
8.9;2.9 Strukturierte Daten: NumPys strukturierte Arrays;112
8.9.1;2.9.1 Strukturierte Arrays erzeugen;113
8.9.2;2.9.2 Erweiterte zusammengesetzte Typen;114
8.9.3;2.9.3 Record-Arrays: strukturierte Arrays mit Pfiff;115
8.9.4;2.9.4 Weiter mit Pandas;115
9;Kapitel 3: Datenbearbeitung mit Pandas;117
9.1;3.1 Pandas installieren und verwenden;117
9.2;3.2 Kurz vorgestellt: Pandas-Objekte;118
9.2.1;3.2.1 Das Pandas-Series-Objekt;118
9.2.2;3.2.2 Das Pandas-DataFrame-Objekt;122
9.2.3;3.2.3 Das Pandas-Index-Objekt;126
9.3;3.3 Daten indizieren und auswählen;127
9.3.1;3.3.1 Series-Daten auswählen;127
9.3.2;3.3.2 DataFrame-Daten auswählen;131
9.4;3.4 Mit Pandas-Daten arbeiten;135
9.4.1;3.4.1 UFuncs: Indexerhaltung;136
9.4.2;3.4.2 UFuncs: Indexanpassung;137
9.4.3;3.4.3 UFuncs: Operationen mit DataFrame und Series;139
9.5;3.5 Handhabung fehlender Daten;140
9.5.1;3.5.1 Überlegungen zu fehlenden Daten;141
9.5.2;3.5.2 Fehlende Daten in Pandas;141
9.5.3;3.5.3 Mit null-Werten arbeiten;145
9.6;3.6 Hierarchische Indizierung;149
9.6.1;3.6.1 Mehrfach indizierte Series;149
9.6.2;3.6.2 Methoden zum Erzeugen eines MultiIndex;153
9.6.3;3.6.3 Indizierung und Slicing eines MultiIndex;156
9.6.4;3.6.4 Multi-Indizes umordnen;159
9.6.5;3.6.5 Datenaggregationen mit Multi-Indizes;162
9.7;3.7 Datenmengen kombinieren: concat und append;164
9.7.1;3.7.1 Verkettung von NumPy-Arrays;165
9.7.2;3.7.2 Einfache Verkettungen mit pd.concat;165
9.8;3.8 Datenmengen kombinieren: Merge und Join;169
9.8.1;3.8.1 Relationale Algebra;170
9.8.2;3.8.2 Join-Kategorien;170
9.8.3;3.8.3 Angabe der zu verknüpfenden Spalten;173
9.8.4;3.8.4 Mengenarithmetik bei Joins;176
9.8.5;3.8.5 Konflikte bei Spaltennamen: das Schlüsselwort suffixes;177
9.8.6;3.8.6 Beispiel: Daten von US-Bundesstaaten;178
9.9;3.9 Aggregation und Gruppierung;183
9.9.1;3.9.1 Planetendaten;183
9.9.2;3.9.2 Einfache Aggregationen in Pandas;184
9.9.3;3.9.3 GroupBy: Aufteilen, Anwenden und Kombinieren;186
9.10;3.10 Pivot-Tabellen;195
9.10.1;3.10.1 Gründe für Pivot-Tabellen;195
9.10.2;3.10.2 Pivot-Tabellen von Hand erstellen;196
9.10.3;3.10.3 Die Syntax von Pivot-Tabellen;197
9.10.4;3.10.4 Beispiel: Geburtenraten;199
9.11;3.11 Vektorisierte String-Operationen;204
9.11.1;3.11.1 Kurz vorgestellt: String-Operationen in Pandas;204
9.11.2;3.11.2 Liste der Pandas-Stringmethoden;206
9.11.3;3.11.3 Beispiel: Rezeptdatenbank;211
9.12;3.12 Zeitreihen verwenden;215
9.12.1;3.12.1 Kalenderdaten und Zeiten in Python;215
9.12.2;3.12.2 Zeitreihen in Pandas: Indizierung durch Zeitangaben;219
9.12.3;3.12.3 Datenstrukturen für Zeitreihen in Pandas;220
9.12.4;3.12.4 Häufigkeiten und Abstände;222
9.12.5;3.12.5 Resampling, zeitliches Verschieben und geglättete Statistik;224
9.12.6;3.12.6 Mehr erfahren;229
9.12.7;3.12.7 Beispiel: Visualisierung von Fahrradzählungen in Seattle;229
9.13;3.13 Leistungsstarkes Pandas: eval() und query();236
9.13.1;3.13.1 Der Zweck von query() und eval(): zusammengesetzte Ausdrücke;236
9.13.2;3.13.2 Effiziente Operationen mit pandas.eval();237
9.13.3;3.13.3 DataFrame.eval() für spaltenweise Operationen;239
9.13.4;3.13.4 Die DataFrame.query()-Methode;241
9.13.5;3.13.5 Performance: Verwendung von eval() und query();242
9.14;3.14 Weitere Ressourcen;242
10;Kapitel 4: Visualisierung mit Matplotlib;245
10.1;4.1 Allgemeine Tipps zu Matplotlib;246
10.1.1;4.1.1 Matplotlib importieren;246
10.1.2;4.1.2 Stil einstellen;246
10.1.3;4.1.3 show() oder kein show()? – Anzeige von Diagrammen;246
10.1.4;4.1.4 Grafiken als Datei speichern;248
10.2;4.2 Zwei Seiten derselben Medaille;250
10.3;4.3 Einfache Liniendiagramme;251
10.3.1;4.3.1 Anpassen des Diagramms: Linienfarben und -stile;254
10.3.2;4.3.2 Anpassen des Diagramms: Begrenzungen;256
10.3.3;4.3.3 Diagramme beschriften;258
10.4;4.4 Einfache Streudiagramme;260
10.4.1;4.4.1 Streudiagramme mit plt.plot() erstellen;260
10.4.2;4.4.2 Streudiagramme mit plt.scatter() erstellen;263
10.4.3;4.4.3 plot kontra scatter: eine Anmerkung zur Effizienz;265
10.5;4.5 Visualisierung von Fehlern;265
10.5.1;4.5.1 Einfache Fehlerbalken;265
10.5.2;4.5.2 Stetige Fehler;267
10.6;4.6 Dichtediagramme und Konturdiagramme;268
10.6.1;4.6.1 Visualisierung einer dreidimensionalen Funktion;268
10.7;4.7 Histogramme, Binnings und Dichte;272
10.7.1;4.7.1 Zweidimensionale Histogramme und Binnings;274
10.8;4.8 Anpassen der Legende;277
10.8.1;4.8.1 Legendenelemente festlegen;279
10.8.2;4.8.2 Legenden mit Punktgrößen;280
10.8.3;4.8.3 Mehrere Legenden;282
10.9;4.9 Anpassen von Farbskalen;283
10.9.1;4.9.1 Farbskala anpassen;284
10.9.2;4.9.2 Beispiel: Handgeschriebene Ziffern;288
10.10;4.10 Untergeordnete Diagramme;290
10.10.1;4.10.1 plt.axes: Untergeordnete Diagramme von Hand erstellen;290
10.10.2;4.10.2 plt.subplot: Untergeordnete Diagramme in einem Raster anordnen;292
10.10.3;4.10.3 plt.subplots: Das gesamte Raster gleichzeitig ändern;293
10.10.4;4.10.4 plt.GridSpec: Kompliziertere Anordnungen;294
10.11;4.11 Text und Beschriftungen;296
10.11.1;4.11.1 Beispiel: Auswirkungen von Feiertagen auf die Geburtenzahlen in den USA;296
10.11.2;4.11.2 Transformationen und Textposition;299
10.11.3;4.11.3 Pfeile und Beschriftungen;300
10.12;4.12 Achsenmarkierungen anpassen;303
10.12.1;4.12.1 Vorrangige und nachrangige Achsenmarkierungen;304
10.12.2;4.12.2 Markierungen oder Beschriftungen verbergen;305
10.12.3;4.12.3 Anzahl der Achsenmarkierungen verringern oder erhöhen;306
10.12.4;4.12.4 Formatierung der Achsenmarkierungen;307
10.12.5;4.12.5 Zusammenfassung der Formatter- und Locator-Klassen;310
10.13;4.13 Matplotlib anpassen: Konfigurationen und Stylesheets;311
10.13.1;4.13.1 Diagramme von Hand anpassen;311
10.13.2;4.13.2 Voreinstellungen ändern: rcParams;312
10.13.3;4.13.3 Stylesheets;314
10.14;4.14 Dreidimensionale Diagramme in Matplotlib;318
10.14.1;4.14.1 Dreidimensionale Punkte und Linien;319
10.14.2;4.14.2 Dreidimensionale Konturdiagramme;320
10.14.3;4.14.3 Drahtgitter- und Oberflächendiagramme;322
10.14.4;4.14.4 Triangulation von Oberflächen;323
10.15;4.15 Basemap: geografische Daten verwenden;326
10.15.1;4.15.1 Kartenprojektionen;328
10.15.2;4.15.2 Zeichnen eines Kartenhintergrunds;332
10.15.3;4.15.3 Daten auf einer Karte anzeigen;334
10.15.4;4.15.4 Beispiel: Kalifornische Städte;335
10.15.5;4.15.5 Beispiel: Oberflächentemperaturen;337
10.16;4.16 Visualisierung mit Seaborn;339
10.16.1;4.16.1 Seaborn kontra Matplotlib;339
10.16.2;4.16.2 Seaborn-Diagramme;341
10.17;4.17 Weitere Ressourcen;357
10.17.1;4.17.1 Matplotlib;357
10.17.2;4.17.2 Weitere Grafikbibliotheken für Python;357
11;Kapitel 5: Machine Learning;359
11.1;5.1 Was ist Machine Learning?;360
11.1.1;5.1.1 Kategorien des Machine Learnings;360
11.1.2;5.1.2 Qualitative Beispiele für Machine-Learning-Anwendungen;361
11.1.3;5.1.3 Zusammenfassung;369
11.2;5.2 Kurz vorgestellt: Scikit-Learn;369
11.2.1;5.2.1 Datenrepräsentierung in Scikit-Learn;370
11.2.2;5.2.2 Scikit-Learns Schätzer-API;372
11.2.3;5.2.3 Anwendung: Handgeschriebene Ziffern untersuchen;380
11.2.4;5.2.4 Zusammenfassung;385
11.3;5.3 Hyperparameter und Modellvalidierung;385
11.3.1;5.3.1 Überlegungen zum Thema Modellvalidierung;385
11.3.2;5.3.2 Auswahl des besten Modells;389
11.3.3;5.3.3 Lernkurven;396
11.3.4;5.3.4 Validierung in der Praxis: Rastersuche;399
11.3.5;5.3.5 Zusammenfasssung;401
11.4;5.4 Merkmalserstellung;401
11.4.1;5.4.1 Kategoriale Merkmale;402
11.4.2;5.4.2 Texte als Merkmale;403
11.4.3;5.4.3 Bilder als Merkmale;404
11.4.4;5.4.4 Abgeleitete Merkmale;405
11.4.5;5.4.5 Vervollständigung fehlender Daten;407
11.4.6;5.4.6 Pipelines mit Merkmalen;408
11.5;5.5 Ausführlich: Naive Bayes-Klassifikation;409
11.5.1;5.5.1 Bayes-Klassifikation;409
11.5.2;5.5.2 Gauß’sche naive Bayes-Klassifikation;410
11.5.3;5.5.3 Multinomiale naive Bayes-Klassifikation;413
11.5.4;5.5.4 Einsatzgebiete für naive Bayes-Klassifikation;416
11.6;5.6 Ausführlich: Lineare Regression;417
11.6.1;5.6.1 Einfache lineare Regression;417
11.6.2;5.6.2 Regression der Basisfunktion;419
11.6.3;5.6.3 Regularisierung;423
11.6.4;5.6.4 Beispiel: Vorhersage des Fahrradverkehrs;427
11.7;5.7 Ausführlich: Support Vector Machines;432
11.7.1;5.7.1 Gründe für Support Vector Machines;433
11.7.2;5.7.2 Support Vector Machines: Maximierung des Randbereichs;434
11.7.3;5.7.3 Beispiel: Gesichtserkennung;443
11.7.4;5.7.4 Zusammenfassung Support Vector Machines;447
11.8;5.8 Ausführlich: Entscheidungsbäume und Random Forests;448
11.8.1;5.8.1 Gründe für Random Forests;448
11.8.2;5.8.2 Schätzerensembles: Random Forests;454
11.8.3;5.8.3 Random-Forest-Regression;455
11.8.4;5.8.4 Beispiel: Random Forest zur Klassifikation handgeschriebener Ziffern;457
11.8.5;5.8.5 Zusammenfassung Random Forests;459
11.9;5.9 Ausführlich: Hauptkomponentenanalyse;460
11.9.1;5.9.1 Kurz vorgestellt: Hauptkomponentenanalyse;460
11.9.2;5.9.2 Hauptkomponentenanalyse als Rauschfilter;467
11.9.3;5.9.3 Beispiel: Eigengesichter;469
11.9.4;5.9.4 Zusammenfassung Hauptkomponentenanalyse;472
11.10;5.10 Ausführlich: Manifold Learning;473
11.10.1;5.10.1 Manifold Learning: »HELLO«;473
11.10.2;5.10.2 Multidimensionale Skalierung (MDS);475
11.10.3;5.10.3 MDS als Manifold Learning;477
11.10.4;5.10.4 Nichtlineare Einbettungen: Wenn MDS nicht funktioniert;479
11.10.5;5.10.5 Nichtlineare Mannigfaltigkeiten: lokal lineare Einbettung;480
11.10.6;5.10.6 Überlegungen zum Thema Manifold-Methoden;482
11.10.7;5.10.7 Beispiel: Isomap und Gesichter;483
11.10.8;5.10.8 Beispiel: Visualisierung der Strukturen in Zifferndaten;487
11.11;5.11 Ausführlich: k-Means-Clustering;490
11.11.1;5.11.1 Kurz vorgestellt: der k-Means-Algorithmus;490
11.11.2;5.11.2 k-Means-Algorithmus: Expectation-Maximization;492
11.11.3;5.11.3 Beispiele;497
11.12;5.12 Ausführlich: Gauß’sche Mixture-Modelle;503
11.12.1;5.12.1 Gründe für GMM: Schwächen von k-Means;503
11.12.2;5.12.2 EM-Verallgemeinerung: Gauß’sche Mixture-Modelle;507
11.12.3;5.12.3 GMM als Dichteschätzung;511
11.12.4;5.12.4 Beispiel: GMM zum Erzeugen neuer Daten verwenden;515
11.13;5.13 Ausführlich: Kerndichteschätzung;518
11.13.1;5.13.1 Gründe für Kerndichteschätzung: Histogramme;518
11.13.2;5.13.2 Kerndichteschätzung in der Praxis;522
11.13.3;5.13.3 Beispiel: Kerndichteschätzung auf Kugeloberflächen;524
11.13.4;5.13.4 Beispiel: Nicht ganz so naive Bayes-Klassifikation;527
11.14;5.14 Anwendung: Eine Gesichtserkennungs-Pipeline;532
11.14.1;5.14.1 HOG-Merkmale;533
11.14.2;5.14.2 HOG in Aktion: eine einfache Gesichtserkennung;534
11.14.3;5.14.3 Vorbehalte und Verbesserungen;539
11.15;5.15 Weitere Machine-Learning-Ressourcen;541
11.15.1;5.15.1 Machine Learning in Python;541
11.15.2;5.15.2 Machine Learning im Allgemeinen;541
12;Stichwortverzeichnis;543