| 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 | <