Suchen und Finden
Service
Data Science mit Python - Das Handbuch für den Einsatz von IPython, Jupyter, NumPy, Pandas, Matplotlib und Scikit-Learn
Jake VanderPlas
Verlag mitp Verlags GmbH & Co. KG, 2017
ISBN 9783958456969 , 552 Seiten
Format PDF
Kopierschutz frei
Cover
1
Titel
3
Impressum
4
Inhaltsverzeichnis
5
Einleitung
13
Über den Autor
18
Kapitel 1: Mehr als normales Python: IPython
19
1.1 Shell oder Notebook?
19
1.1.1 Die IPython-Shell starten
20
1.1.2 Das Jupyter-Notebook starten
20
1.2 Hilfe und Dokumentation in IPython
21
1.2.1 Mit ? auf die Dokumentation zugreifen
22
1.2.2 Mit ?? auf den Quellcode zugreifen
23
1.2.3 Module mit der Tab-Vervollständigung erkunden
24
1.3 Tastaturkürzel in der IPython-Shell
26
1.3.1 Tastaturkürzel zum Navigieren
27
1.3.2 Tastaturkürzel bei der Texteingabe
27
1.3.3 Tastaturkürzel für den Befehlsverlauf
28
1.3.4 Sonstige Tastaturkürzel
29
1.4 Magische Befehle in IPython
29
1.4.1 Einfügen von Codeblöcken mit %paste und %cpaste
29
1.4.2 Externen Code ausführen mit %run
31
1.4.3 Messung der Ausführungszeit von Code mit %timeit
31
1.4.4 Hilfe für die magischen Funktionen anzeigen mit ?, %magic und %lsmagic
32
1.5 Verlauf der Ein- und Ausgabe
32
1.5.1 Die IPython-Objekte In und Out
33
1.5.2 Der Unterstrich als Abkürzung und vorhergehende Ausgaben
34
1.5.3 Ausgaben unterdrücken
34
1.5.4 Weitere ähnliche magische Befehle
35
1.6 IPython und Shell-Befehle
35
1.6.1 Kurz vorgestellt: die Shell
36
1.6.2 Shell-Befehle in IPython
37
1.6.3 Werte mit der Shell austauschen
37
1.7 Magische Befehle für die Shell
38
1.8 Fehler und Debugging
39
1.8.1 Exceptions handhaben: %xmode
39
1.8.2 Debugging: Wenn das Lesen von Tracebacks nicht ausreicht
41
1.9 Profiling und Timing von Code
44
1.9.1 Timing von Codeschnipseln: %timeit und %time
45
1.9.2 Profiling kompletter Skripte: %prun
46
1.9.3 Zeilenweises Profiling mit %lprun
47
1.9.4 Profiling des Speicherbedarfs: %memit und %mprun
48
1.10 Weitere IPython-Ressourcen
50
1.10.1 Quellen im Internet
50
1.10.2 Bücher
50
Kapitel 2: Einführung in NumPy
51
2.1 Die Datentypen in Python
52
2.1.1 Python-Integers sind mehr als nur ganzzahlige Werte
53
2.1.2 Python-Listen sind mehr als nur einfache Listen
54
2.1.3 Arrays feststehenden Typs in Python
56
2.1.4 Arrays anhand von Listen erzeugen
56
2.1.5 Neue Arrays erzeugen
57
2.1.6 NumPys Standarddatentypen
58
2.2 Grundlagen von NumPy-Arrays
59
2.2.1 Attribute von NumPy-Arrays
60
2.2.2 Indizierung von Arrays: Zugriff auf einzelne Elemente
61
2.2.3 Slicing: Teilmengen eines Arrays auswählen
62
2.2.4 Arrays umformen
65
2.2.5 Arrays verketten und aufteilen
66
2.3 Berechnungen mit NumPy-Arrays: universelle Funktionen
68
2.3.1 Langsame Schleifen
68
2.3.2 Kurz vorgestellt: UFuncs
70
2.3.3 NumPys UFuncs im Detail
70
2.3.4 UFunc-Features für Fortgeschrittene
75
2.3.5 UFuncs: mehr erfahren
77
2.4 Aggregationen: Minimum, Maximum und alles dazwischen
77
2.4.1 Summieren der Werte eines Arrays
77
2.4.2 Minimum und Maximum
78
2.4.3 Beispiel: Durchschnittliche Größe der US-Präsidenten
80
2.5 Berechnungen mit Arrays: Broadcasting
82
2.5.1 Kurz vorgestellt: Broadcasting
82
2.5.2 Für das Broadcasting geltende Regeln
84
2.5.3 Broadcasting in der Praxis
87
2.6 Vergleiche, Maskierungen und boolesche Logik
88
2.6.1 Beispiel: Regentage zählen
89
2.6.2 Vergleichsoperatoren als UFuncs
90
2.6.3 Boolesche Arrays verwenden
91
2.6.4 Boolesche Arrays als Maskierungen
94
2.7 Fancy Indexing
97
2.7.1 Fancy Indexing im Detail
97
2.7.2 Kombinierte Indizierung
98
2.7.3 Beispiel: Auswahl zufälliger Punkte
99
2.7.4 Werte per Fancy Indexing modifizieren
101
2.7.5 Beispiel: Daten gruppieren
102
2.8 Arrays sortieren
104
2.8.1 Schnelle Sortierung in NumPy: np.sort und np.argsort
105
2.8.2 Teilsortierungen: Partitionierung
107
2.8.3 Beispiel: k nächste Nachbarn
107
2.9 Strukturierte Daten: NumPys strukturierte Arrays
112
2.9.1 Strukturierte Arrays erzeugen
113
2.9.2 Erweiterte zusammengesetzte Typen
114
2.9.3 Record-Arrays: strukturierte Arrays mit Pfiff
115
2.9.4 Weiter mit Pandas
115
Kapitel 3: Datenbearbeitung mit Pandas
117
3.1 Pandas installieren und verwenden
117
3.2 Kurz vorgestellt: Pandas-Objekte
118
3.2.1 Das Pandas-Series-Objekt
118
3.2.2 Das Pandas-DataFrame-Objekt
122
3.2.3 Das Pandas-Index-Objekt
126
3.3 Daten indizieren und auswählen
127
3.3.1 Series-Daten auswählen
127
3.3.2 DataFrame-Daten auswählen
131
3.4 Mit Pandas-Daten arbeiten
135
3.4.1 UFuncs: Indexerhaltung
136
3.4.2 UFuncs: Indexanpassung
137
3.4.3 UFuncs: Operationen mit DataFrame und Series
139
3.5 Handhabung fehlender Daten
140
3.5.1 Überlegungen zu fehlenden Daten
141
3.5.2 Fehlende Daten in Pandas
141
3.5.3 Mit null-Werten arbeiten
145
3.6 Hierarchische Indizierung
149
3.6.1 Mehrfach indizierte Series
149
3.6.2 Methoden zum Erzeugen eines MultiIndex
153
3.6.3 Indizierung und Slicing eines MultiIndex
156
3.6.4 Multi-Indizes umordnen
159
3.6.5 Datenaggregationen mit Multi-Indizes
162
3.7 Datenmengen kombinieren: concat und append
164
3.7.1 Verkettung von NumPy-Arrays
165
3.7.2 Einfache Verkettungen mit pd.concat
165
3.8 Datenmengen kombinieren: Merge und Join
169
3.8.1 Relationale Algebra
170
3.8.2 Join-Kategorien
170
3.8.3 Angabe der zu verknüpfenden Spalten
173
3.8.4 Mengenarithmetik bei Joins
176
3.8.5 Konflikte bei Spaltennamen: das Schlüsselwort suffixes
177
3.8.6 Beispiel: Daten von US-Bundesstaaten
178
3.9 Aggregation und Gruppierung
183
3.9.1 Planetendaten
183
3.9.2 Einfache Aggregationen in Pandas
184
3.9.3 GroupBy: Aufteilen, Anwenden und Kombinieren
186
3.10 Pivot-Tabellen
195
3.10.1 Gründe für Pivot-Tabellen
195
3.10.2 Pivot-Tabellen von Hand erstellen
196
3.10.3 Die Syntax von Pivot-Tabellen
197
3.10.4 Beispiel: Geburtenraten
199
3.11 Vektorisierte String-Operationen
204
3.11.1 Kurz vorgestellt: String-Operationen in Pandas
204
3.11.2 Liste der Pandas-Stringmethoden
206
3.11.3 Beispiel: Rezeptdatenbank
211
3.12 Zeitreihen verwenden
215
3.12.1 Kalenderdaten und Zeiten in Python
215
3.12.2 Zeitreihen in Pandas: Indizierung durch Zeitangaben
219
3.12.3 Datenstrukturen für Zeitreihen in Pandas
220
3.12.4 Häufigkeiten und Abstände
222
3.12.5 Resampling, zeitliches Verschieben und geglättete Statistik
224
3.12.6 Mehr erfahren
229
3.12.7 Beispiel: Visualisierung von Fahrradzählungen in Seattle
229
3.13 Leistungsstarkes Pandas: eval() und query()
236
3.13.1 Der Zweck von query() und eval(): zusammengesetzte Ausdrücke
236
3.13.2 Effiziente Operationen mit pandas.eval()
237
3.13.3 DataFrame.eval() für spaltenweise Operationen
239
3.13.4 Die DataFrame.query()-Methode
241
3.13.5 Performance: Verwendung von eval() und query()
242
3.14 Weitere Ressourcen
242
Kapitel 4: Visualisierung mit Matplotlib
245
4.1 Allgemeine Tipps zu Matplotlib
246
4.1.1 Matplotlib importieren
246
4.1.2 Stil einstellen
246
4.1.3 show() oder kein show()? – Anzeige von Diagrammen
246
4.1.4 Grafiken als Datei speichern
248
4.2 Zwei Seiten derselben Medaille
250
4.3 Einfache Liniendiagramme
251
4.3.1 Anpassen des Diagramms: Linienfarben und -stile
254
4.3.2 Anpassen des Diagramms: Begrenzungen
256
4.3.3 Diagramme beschriften
258
4.4 Einfache Streudiagramme
260
4.4.1 Streudiagramme mit plt.plot() erstellen
260
4.4.2 Streudiagramme mit plt.scatter() erstellen
263
4.4.3 plot kontra scatter: eine Anmerkung zur Effizienz
265
4.5 Visualisierung von Fehlern
265
4.5.1 Einfache Fehlerbalken
265
4.5.2 Stetige Fehler
267
4.6 Dichtediagramme und Konturdiagramme
268
4.6.1 Visualisierung einer dreidimensionalen Funktion
268
4.7 Histogramme, Binnings und Dichte
272
4.7.1 Zweidimensionale Histogramme und Binnings
274
4.8 Anpassen der Legende
277
4.8.1 Legendenelemente festlegen
279
4.8.2 Legenden mit Punktgrößen
280
4.8.3 Mehrere Legenden
282
4.9 Anpassen von Farbskalen
283
4.9.1 Farbskala anpassen
284
4.9.2 Beispiel: Handgeschriebene Ziffern
288
4.10 Untergeordnete Diagramme
290
4.10.1 plt.axes: Untergeordnete Diagramme von Hand erstellen
290
4.10.2 plt.subplot: Untergeordnete Diagramme in einem Raster anordnen
292
4.10.3 plt.subplots: Das gesamte Raster gleichzeitig ändern
293
4.10.4 plt.GridSpec: Kompliziertere Anordnungen
294
4.11 Text und Beschriftungen
296
4.11.1 Beispiel: Auswirkungen von Feiertagen auf die Geburtenzahlen in den USA
296
4.11.2 Transformationen und Textposition
299
4.11.3 Pfeile und Beschriftungen
300
4.12 Achsenmarkierungen anpassen
303
4.12.1 Vorrangige und nachrangige Achsenmarkierungen
304
4.12.2 Markierungen oder Beschriftungen verbergen
305
4.12.3 Anzahl der Achsenmarkierungen verringern oder erhöhen
306
4.12.4 Formatierung der Achsenmarkierungen
307
4.12.5 Zusammenfassung der Formatter- und Locator-Klassen
310
4.13 Matplotlib anpassen: Konfigurationen und Stylesheets
311
4.13.1 Diagramme von Hand anpassen
311
4.13.2 Voreinstellungen ändern: rcParams
312
4.13.3 Stylesheets
314
4.14 Dreidimensionale Diagramme in Matplotlib
318
4.14.1 Dreidimensionale Punkte und Linien
319
4.14.2 Dreidimensionale Konturdiagramme
320
4.14.3 Drahtgitter- und Oberflächendiagramme
322
4.14.4 Triangulation von Oberflächen
323
4.15 Basemap: geografische Daten verwenden
326
4.15.1 Kartenprojektionen
328
4.15.2 Zeichnen eines Kartenhintergrunds
332
4.15.3 Daten auf einer Karte anzeigen
334
4.15.4 Beispiel: Kalifornische Städte
335
4.15.5 Beispiel: Oberflächentemperaturen
337
4.16 Visualisierung mit Seaborn
339
4.16.1 Seaborn kontra Matplotlib
339
4.16.2 Seaborn-Diagramme
341
4.17 Weitere Ressourcen
357
4.17.1 Matplotlib
357
4.17.2 Weitere Grafikbibliotheken für Python
357
Kapitel 5: Machine Learning
359
5.1 Was ist Machine Learning?
360
5.1.1 Kategorien des Machine Learnings
360
5.1.2 Qualitative Beispiele für Machine-Learning-Anwendungen
361
5.1.3 Zusammenfassung
369
5.2 Kurz vorgestellt: Scikit-Learn
369
5.2.1 Datenrepräsentierung in Scikit-Learn
370
5.2.2 Scikit-Learns Schätzer-API
372
5.2.3 Anwendung: Handgeschriebene Ziffern untersuchen
380
5.2.4 Zusammenfassung
385
5.3 Hyperparameter und Modellvalidierung
385
5.3.1 Überlegungen zum Thema Modellvalidierung
385
5.3.2 Auswahl des besten Modells
389
5.3.3 Lernkurven
396
5.3.4 Validierung in der Praxis: Rastersuche
399
5.3.5 Zusammenfasssung
401
5.4 Merkmalserstellung
401
5.4.1 Kategoriale Merkmale
402
5.4.2 Texte als Merkmale
403
5.4.3 Bilder als Merkmale
404
5.4.4 Abgeleitete Merkmale
405
5.4.5 Vervollständigung fehlender Daten
407
5.4.6 Pipelines mit Merkmalen
408
5.5 Ausführlich: Naive Bayes-Klassifikation
409
5.5.1 Bayes-Klassifikation
409
5.5.2 Gauß’sche naive Bayes-Klassifikation
410
5.5.3 Multinomiale naive Bayes-Klassifikation
413
5.5.4 Einsatzgebiete für naive Bayes-Klassifikation
416
5.6 Ausführlich: Lineare Regression
417
5.6.1 Einfache lineare Regression
417
5.6.2 Regression der Basisfunktion
419
5.6.3 Regularisierung
423
5.6.4 Beispiel: Vorhersage des Fahrradverkehrs
427
5.7 Ausführlich: Support Vector Machines
432
5.7.1 Gründe für Support Vector Machines
433
5.7.2 Support Vector Machines: Maximierung des Randbereichs
434
5.7.3 Beispiel: Gesichtserkennung
443
5.7.4 Zusammenfassung Support Vector Machines
447
5.8 Ausführlich: Entscheidungsbäume und Random Forests
448
5.8.1 Gründe für Random Forests
448
5.8.2 Schätzerensembles: Random Forests
454
5.8.3 Random-Forest-Regression
455
5.8.4 Beispiel: Random Forest zur Klassifikation handgeschriebener Ziffern
457
5.8.5 Zusammenfassung Random Forests
459
5.9 Ausführlich: Hauptkomponentenanalyse
460
5.9.1 Kurz vorgestellt: Hauptkomponentenanalyse
460
5.9.2 Hauptkomponentenanalyse als Rauschfilter
467
5.9.3 Beispiel: Eigengesichter
469
5.9.4 Zusammenfassung Hauptkomponentenanalyse
472
5.10 Ausführlich: Manifold Learning
473
5.10.1 Manifold Learning: »HELLO«
473
5.10.2 Multidimensionale Skalierung (MDS)
475
5.10.3 MDS als Manifold Learning
477
5.10.4 Nichtlineare Einbettungen: Wenn MDS nicht funktioniert
479
5.10.5 Nichtlineare Mannigfaltigkeiten: lokal lineare Einbettung
480
5.10.6 Überlegungen zum Thema Manifold-Methoden
482
5.10.7 Beispiel: Isomap und Gesichter
483
5.10.8 Beispiel: Visualisierung der Strukturen in Zifferndaten
487
5.11 Ausführlich: k-Means-Clustering
490
5.11.1 Kurz vorgestellt: der k-Means-Algorithmus
490
5.11.2 k-Means-Algorithmus: Expectation-Maximization
492
5.11.3 Beispiele
497
5.12 Ausführlich: Gauß’sche Mixture-Modelle
503
5.12.1 Gründe für GMM: Schwächen von k-Means
503
5.12.2 EM-Verallgemeinerung: Gauß’sche Mixture-Modelle
507
5.12.3 GMM als Dichteschätzung
511
5.12.4 Beispiel: GMM zum Erzeugen neuer Daten verwenden
515
5.13 Ausführlich: Kerndichteschätzung
518
5.13.1 Gründe für Kerndichteschätzung: Histogramme
518
5.13.2 Kerndichteschätzung in der Praxis
522
5.13.3 Beispiel: Kerndichteschätzung auf Kugeloberflächen
524
5.13.4 Beispiel: Nicht ganz so naive Bayes-Klassifikation
527
5.14 Anwendung: Eine Gesichtserkennungs-Pipeline
532
5.14.1 HOG-Merkmale
533
5.14.2 HOG in Aktion: eine einfache Gesichtserkennung
534
5.14.3 Vorbehalte und Verbesserungen
539
5.15 Weitere Machine-Learning-Ressourcen
541
5.15.1 Machine Learning in Python
541
5.15.2 Machine Learning im Allgemeinen
541
Stichwortverzeichnis
543