Bernd Klein
Numerisches Python
Arbeiten mit NumPy, Matplotlib und Pandas
Inhalt
6
Vorwort
16
Danksagung
17
1 Einleitung
18
1.1 Die richtige Wahl
18
1.2 Aufbau des Buches
19
1.3 Python-Installation
20
1.4 Download der Beispiele
20
1.5 Anregungen und Kritik
20
2 Numerisches Programmieren mit Python
22
2.1 Definition von numerischer Programmierung
22
2.2 Zusammenhang zwischen Python, NumPy, Matplotlib, SciPy und Pandas
23
2.3 Python, eine Alternative zu Matlab
24
Teil I Kurze Einführung in Python
26
3 Kurze Einführung in Python
28
3.1 Datenstrukturen
28
3.1.1 Zahlen und Variablen
28
3.1.2 Zeichenketten
29
3.1.3 Listen
32
3.1.4 Tupel
33
3.1.5 Frozensets und Mengen in Python
34
3.1.6 Dictionaries
35
3.2 Kontrollstrukturen
36
3.2.1 Bedingte Anweisungen
36
3.2.2 Schleifen
37
3.2.3 Funktionen
40
3.3 Ausnahmebehandlung
43
3.3.1 Die optionale else-Klausel
46
3.3.2 Exceptions generieren
46
3.3.3 Finalisierungsaktion
46
3.4 Dateien lesen und schreiben
47
3.4.1 Datei lesen
47
3.4.2 Datei schreiben
48
3.5 Modularisierung
49
3.5.1 Namensräume von Modulen
49
3.5.2 Suchpfad für Module
50
3.5.3 Inhalt eines Moduls
50
3.5.4 Eigene Module
50
3.5.5 Dokumentation für eigene Module
51
3.6 Klassen-Definition
52
3.6.1 Eine einfache Klasse
52
3.6.2 Attribute
52
3.6.3 Initialisierung von Instanzen
54
3.6.4 Vererbung
54
3.6.5 Private, geschützte und öffentliche Attribute
55
3.6.6 Properties
56
Teil II NumPy
58
4 NumPy Einführung
60
4.1 Überblick
60
4.2 Vergleich NumPy-Datenstrukturen und Python
61
4.3 Ein einfaches Beispiel
61
4.4 Grafische Darstellung der Werte
62
4.5 Speicherbedarf
63
4.6 Zeitvergleich zwischen Python-Listen und NumPy-Arrays
66
5 Arrays in NumPy erzeugen
68
5.1 Erzeugung äquidistanter Intervalle
68
5.1.1 arange
68
5.1.2 linspace
69
5.1.3 Nulldimensionale Arrays in NumPy
70
5.1.4 Eindimensionales Array
70
5.1.5 Zwei- und Mehrdimensionale Arrays
71
5.2 Shape/Gestalt eines Arrays
71
5.3 Indizierung und Teilbereichsoperator
73
5.4 Dreidimensionale Arrays
78
5.5 Arrays mit Nullen und Einsen
81
5.6 Arrays kopieren
82
5.6.1 numpy.copy(A) und A.copy()
82
5.6.2 Zusammenhängend gespeicherte Arrays
82
5.7 Identitätsarray
84
5.7.1 Die identity-Funktion
84
5.7.2 Die eye-Funktion
85
5.8 Aufgaben
86
5.9 Lösungen
87
6 Datentyp-Objekt: dtype
90
6.1 dtype
90
6.2 Strukturierte Arrays
92
6.3 Ein- und Ausgabe von strukturierten Arrays
94
6.4 Unicode-Strings in Arrays
96
6.5 Umbenennen von Spaltennamen
96
6.6 Spaltenwerte austauschen
97
6.7 Komplexeres Beispiel
97
6.8 Aufgaben
99
6.9 Lösungen
100
7 Dimensionsänderungen
102
7.1 Reduktion und Reshape von Arrays
102
7.1.1 flatten
103
7.1.2 ravel
103
7.1.3 Unterschiede zwischen ravel und flatten
104
7.1.4 reshape
105
7.2 Konkatenation von Arrays
106
7.3 Weitere Dimensionen hinzufügen
107
7.4 Vektoren stapeln
108
7.5 Fliesen mit tile
109
8 Numerische Operationen auf NumPy-Arrays
112
8.1 Operatoren und Skalare
112
8.2 Arithmetische Operationen auf zwei Arrays
114
8.3 Matrizenmultiplikation und Skalarprodukt
115
8.3.1 Definition der dot-Funktion
115
8.3.2 Beispiele zur dot-Funktion
115
8.3.3 Das dot-Produkt im 3-dimensionalen Fall
117
8.4 Vergleichsoperatoren
122
8.5 Logische Operatoren
123
8.6 Broadcasting
123
8.6.1 Zeilenweises Broadcasting
124
8.6.2 Spaltenweises Broadcasting:
126
8.6.3 Broadcasting von zwei eindimensionalen Arrays
127
8.7 Distanzmatrix
128
8.8 Ufuncs
129
8.8.1 Anwendung von Ufuncs
129
8.8.2 Parameter für Rückgabewerte bei Ufuncs
131
8.8.3 accumulate
132
8.8.4 reduce
133
8.8.5 outer
134
8.8.6 at
135
8.9 Aufgaben
135
8.10 Lösungen
136
9 Statistik und Wahrscheinlichkeiten
138
9.1 Einführung
138
9.2 Zufallszahlen mit Python
139
9.2.1 Die Module random und secrets
139
9.2.2 Erzeugen einer Liste von Zufallszahlen
139
9.3 Zufällige Integer-Zahlen mit Python
140
9.4 Stichproben/Auswahlen
143
9.5 Zufallsintervalle
144
9.6 Gewichtete Zufallsauswahl
145
9.7 Stichproben mit Python
147
9.8 Kartesische Auswahl
149
9.8.1 Kartesisches Produkt
149
9.8.2 Kartesische Auswahl: cartesian_choice
150
9.9 Echte Zufallszahlen
152
9.10 Seed/Startwert
153
9.11 Gauss'sche Normalverteilung
154
9.12 Übung mit Binärsender
156
9.13 Synthetische Verkaufszahlen
158
9.14 Aufgaben
160
9.15 Lösungen
162
10 Boolesche Maskierung und Indizierung
168
10.1 Fancy-Indizierung
170
10.2 Indizierung mit einem Integer-Array
170
10.2.1 Übung
171
10.2.2 Lösung
171
10.3 nonzero und where
171
10.3.1 Übung
172
10.3.2 Lösung
173
10.3.3 Flatnonzero und count_nonzero
173
11 Lesen und Schreiben von Datendateien
174
11.1 Textdateien speichern mit savetxt
174
11.2 Textdateien laden mit loadtxt
176
11.2.1 loadtxt ohne Parameter
176
11.2.2 Spezielle Trenner
176
11.2.3 Selektives Einlesen von Spalten
176
11.2.4 Datenkonvertierung beim Einlesen
177
11.3 tofile
178
11.4 fromfile
179
11.5 Best Practice, um Daten zu laden und zu speichern
181
11.6 Und noch ein anderer Weg: genfromtxt
181
Teil III Matplotlib
182
12 Einführung
184
12.1 Ein erstes Beispiel
185
12.2 Der Formatparameter von pyplot.plot
186
12.3 Bezeichnungen für die Achsen
189
12.4 Abfragen und Ändern des Wertebereichs der Achsen
191
12.5 linspace zur Definition von X-Werten
192
12.6 Linienstil ändern
194
12.7 Flächen einfärben
195
13 Achsen- und Skalenteilung
198
13.1 Achsenverschiebungen und Achsenbezeichnungen
198
13.2 Verändern der Achsenbeschriftungen
203
13.3 Justierung der Tick-Beschriftungen
204
14 Legenden und Kommentare hinzufügen
206
14.1 Legende hinzufügen
206
14.2 Kommentare
211
15 Mehrfache Plots und Doppelachsen
216
15.1 Mehrere Abbildungen und Achsen
216
15.2 Unterdiagramm mit gridspec
225
15.3 Arbeiten mit Objekten
228
15.4 Ein Plot innerhalb eines anderen Plots
230
15.5 Setzen des Plotbereichs
231
15.6 Logarithmische Darstellung
232
15.7 Sekundäre Y-Achse
233
15.8 Gitterlinien
234
15.9 Abbildungen speichern
235
15.10 Aufgaben
236
15.11 Lösungen
236
16 Konturplots
240
16.1 Erstellen eines Maschengitters
240
16.2 Berechnung der Werte
242
16.3 Linienstil und Farben anpassen
244
16.4 Gefüllte Konturen
245
16.5 Individuelle Farben
246
16.6 Schwellen
247
16.7 Andere Grids
248
16.7.1 Meshgrid genauer
248
16.7.2 mgrid
252
16.7.3 ogrid
252
16.8 Aufgaben
253
16.9 Lösungen
254
17 Balken-, Säulendiagramme und Histogramme
258
17.1 Histogramme
258
17.2 Säulendiagramm
264
17.3 Balkendiagramme
266
17.4 Aufgaben
267
17.5 Lösung
267
Teil IV Pandas
268
18 Einführung in Pandas
270
18.1 Datenstrukturen
270
18.2 Series
271
18.2.1 Indizierung
273
18.2.2 pandas.Series.apply
274
18.2.3 Zusammenhang zu Dictionaries
275
18.3 NaN – Fehlende Daten
275
18.3.1 Die Methoden isnull() und notnull()
276
18.3.2 Zusammenhang zwischen NaN und None
277
18.3.3 Fehlende Daten filtern
277
18.3.4 Fehlende Daten auffüllen
278
19 DataFrame
280
19.1 Zusammenhang zu Series
280
19.2 Manipulation der Spaltennamen
281
19.3 Zugriff auf Spalten
282
19.4 DataFrames aus Dictionaries
283
19.5 Index ändern
284
19.5.1 Umsortierung der Spalten
284
19.5.2 Spalte in Index umfunktionieren
286
19.6 Selektion von Zeilen
287
19.7 Summen und kumulative Summen
288
19.8 Spaltenwerte ersetzen
288
19.9 Sortierung
290
19.10 Spalten einfügen
291
19.11 DataFrame und verschachtelte Dictionaries
292
19.12 Aufgaben
293
19.13 Lösungen
295
20 Dateien lesen und schreiben
300
20.1 Trennerseparierte Werte
300
20.2 CSV- und DSV-Dateien lesen
301
20.3 Schreiben von CSV-Dateien
302
20.4 Lesen und Schreiben von Excel-Dateien
304
20.5 Aufgaben
305
20.6 Lösungen
305
21 Umgang mit NaN
308
21.1 'nan' in Python
308
21.2 NaN in Pandas
309
21.2.1 Beispiel mit NaNs
311
21.3 dropna() verwenden
312
21.4 Aufgaben
314
21.5 Lösungen
314
22 Binning
316
22.1 Einführung
316
22.2 Binning mit Pandas
318
22.2.1 Von Pandas verwendete Bins
318
22.2.2 Andere Wege, um Bins zu definieren
319
22.2.3 Bins und Werte zählen
320
22.2.4 Bins benennen
322
23 Mehrstufige Indizierung
324
23.1 Einführung
324
23.2 Mehrstufig indizierte Series
324
23.3 Zugriffsmöglichkeiten
326
23.4 Zusammenhang zu DataFrames
327
23.5 Dreistufige Indizes
329
23.6 Vertauschen mehrstufiger Indizes
331
23.7 Aufgaben
332
23.8 Lösungen
333
24 Datenvisualisierung mit Pandas
334
24.1 Einführung
334
24.2 Liniendiagramme in Pandas
335
24.2.1 Series
335
24.2.2 DataFrames
337
24.2.3 Sekundärachsen (Twin Axes)
339
24.2.4 Mehrere Y-Achsen
340
24.3 Ein komplexeres Beispiel
342
24.3.1 Spalten mit Zeichenketten (Strings) in Floats wandeln
345
24.4 Balkendiagramme in Pandas
346
24.4.1 Ein einfaches Beispiel
346
24.4.2 Balkengrafik für die Programmiersprachennutzung
347
24.4.3 Farbgebung einer Balkengrafik
348
24.5 Kuchendiagramme in Pandas
349
24.5.1 Ein einfaches Beispiel
349
25 Zeit und Datum
354
25.1 Einführung
354
25.2 Python-Standardmodule für Zeitdaten
355
25.2.1 Die date-Klasse
355
25.2.2 Die time-Klasse
356
25.3 Die datetime-Klasse
357
25.4 Unterschied zwischen Zeiten
359
25.4.1 Wandlung von datetime-Objekten in Strings
360
25.4.2 Wandlung mit strftime
360
25.5 Ausgabe in Landessprache
361
25.6 datetime-Objekte aus Strings erstellen
362
26 Zeitserien
364
26.1 Einführung
364
26.2 Zeitreihen und Python
364
26.3 Datumsbereiche erstellen
367
Stichwortverzeichnis
370
© 2009-2024 ciando GmbH