Matematyczny Python
Obliczenia
naukowe i analiza danych z użyciem NumPy, SciPy i Matplotlib
Nie
tylko programiści lubią Pythona. Również naukowcy i
analitycy danych coraz częściej korzystają z tego języka, zwłaszcza że
przed praktykami obliczeniowymi otwierają się niespotykane możliwości.
Rozwój sprzętu, oprogramowania i algorytmów
pozwala śmiało wkraczać w nowe obszary zastosowania i tworzyć nowe
branże. W dalszym ciągu jednak prowadzenie obliczeń pozostaje dziedziną
interdyscyplinarną, wymagającą wiedzy matematycznej i myślenia
naukowego. Jeśli chce się wykorzystać do obliczeń nowoczesne
technologie, takie jak Python wraz z szerokim ekosystemem bibliotek i
rozszerzeń, trzeba też posiadać praktyczne umiejętności programowania.
W tej książce wyczerpująco
przedstawiono nowoczesne metody rozwiązywania problemów
obliczeniowych z tak różnych dziedzin, jak badania naukowe,
inżynieria, finanse czy analiza danych za pomocą Pythona i jego
bibliotek.
Omówiono
również wiele technik, w tym obliczenia oparte na tablicach,
obliczenia symboliczne, metody wizualizacji danych, numeryczne operacje
wejścia-wyjścia, rozwiązywanie równań, optymalizacja,
interpolacja czy całkowanie. Pokazano także, jak rozwiązywać problemy
obliczeniowe charakterystyczne dla takich dziedzin jak rozwiązywanie
równań różniczkowych, analiza danych, modelowanie
statystyczne i uczenie maszynowe. Znalazło się tu też wiele
studiów przypadków, ukazujących zastosowanie
Pythona w analizie danych i statystyce.
W książce między innymi:
- wektory i macierze w NumPy
- wykresy i wizualizacje
danych w Matplotlib
- analiza danych z pandas i
SciPy
- modelowanie statystyczne i
uczenie maszynowe z statsmodels i scikit-learn
- optymalizacja kodu za
pomocą Numba i Cython
O
autorze 13
O korektorach merytorycznych 15
Wprowadzenie 19
Rozdział 1.
Wprowadzenie do obliczeń w Pythonie 23
Środowiska obliczeniowe w Pythonie 26
Python 27
Interpreter 27
Konsola IPython 28
Buforowanie wejścia i wyjścia 29
Autouzupełnianie i introspekcja obiektów 30
Dokumentacja 30
Interakcja z powłoką systemową 31
Rozszerzenia IPythona 31
Jupyter 36
Jupyter QtConsole 37
Jupyter Notebook 37
Jupyter Lab 39
Rodzaje komórek 40
Edycja komórek 41
Komórki typu Markdown 42
Możliwości prezentacji danych 42
nbconvert 46
Zintegrowane środowisko programistyczne Spyder 48
Edytor kodu źródłowego 50
Konsola w Spyderze 50
Inspektor obiektów 51
Podsumowanie 51
Materiały dodatkowe 52
Bibliografia 52
Rozdział 2.
Wektory,
macierze i tablice wielowymiarowe
53
Importowanie modułów 54
Typ tablicowy NumPy 54
Typy danych 55
Reprezentacja danych tablicowych w pamięci 57
Tworzenie tablic 58
Tablice utworzone na podstawie list i innych obiektów
tablicopodobnych 60
Tablice wypełnione stałymi wartościami 60
Tablice wypełnione rosnącymi wartościami 61
Tablice z wartościami rozmieszczonymi logarytmicznie 62
Tablice z siatkami współrzędnych 62
Tworzenie niezainicjalizowanych tablic 63
Tworzenie tablic o cechach innych tablic 63
Tworzenie macierzy 63
Indeksowanie i zakresy 64
Tablice jednowymiarowe 64
Tablice wielowymiarowe 66
Widoki 67
Indeksowanie logiczne i fancy indexing 68
Zmiany kształtu i rozmiaru 69
Wyrażenia zwektoryzowane 74
Operacje arytmetyczne 74
Funkcje działające na elementach 77
Funkcje agregujące 79
Wyrażenia warunkowe i tablice wartości logicznych 81
Operacje na zbiorach 84
Operacje na tablicach 85
Operacje macierzowe i wektorowe 86
Podsumowanie 91
Materiały dodatkowe 92
Bibliografia 92
Rozdział 3.
Obliczenia
symboliczne 93
Importowanie modułów 94
Symbole 95
Liczby 97
Wyrażenia 102
Manipulowanie wyrażeniami 103
Upraszczanie wyrażeń 103
Rozwijanie wyrażeń 105
Funkcje factor, collect i combine 105
Funkcje Apart, Together i Cancel 106
Podstawienia 107
Ewaluacja wyrażeń 108
Rachunek różniczkowy 109
Pochodne 109
Całki 111
Szeregi 112
Granice 114
Sumy i iloczyny uogólnione 115
Równania 115
Algebra liniowa 117
Podsumowanie 120
Materiały dodatkowe 121
Bibliografia 121
Rozdział 4.
Wykresy
i wizualizacje 123
Importowanie modułów 124
Pierwsze kroki 125
Tryb interaktywny i nieinteraktywny 128
Klasa Figure 130
Klasa Axes 131
Typy wykresów 132
Parametry linii 133
Legendy 136
Formatowanie tekstu i adnotacje 138
Właściwości osi 140
Złożone układy obiektów Axes 149
Wstawki 149
plt.subplots 150
subplot2grid 152
GridSpec 152
Wykresy typu colormap 153
Wykresy 3D 156
Podsumowanie 158
Materiały dodatkowe 158
Bibliografia 158
Rozdział 5.
Rozwiązywanie
równań 159
Importowanie modułów 160
Układy równań liniowych 160
Układy z macierzą kwadratową 161
Układy równań z macierzą prostokątną 166
Problem wartości własnych 169
Równania nieliniowe 171
Równania jednowymiarowe 171
Układy równań nieliniowych 177
Podsumowanie 181
Materiały dodatkowe 181
Bibliografia 181
Rozdział 6.
Optymalizacja 183
Importowanie modułów 184
Klasyfikacja problemów optymalizacyjnych 184
Optymalizacja jednowymiarowa 187
Optymalizacja wielowymiarowa bez ograniczeń 190
Nieliniowy problem najmniejszych kwadratów 196
Optymalizacja z ograniczeniami 198
Programowanie liniowe 202
Podsumowanie 204
Materiały dodatkowe 205
Bibliografia 205
Rozdział 7.
Interpolacja 207
Importowanie modułów 208
Interpolacja 208
Wielomiany 209
Interpolacja wielomianowa 212
Interpolacja funkcjami sklejanymi 216
Interpolacja funkcji wielu zmiennych 218
Podsumowanie 224
Materiały dodatkowe 224
Bibliografia 224
Rozdział 8.
Całkowanie 225
Importowanie modułów 226
Metody całkowania numerycznego 226
Całkowanie numeryczne z użyciem SciPy 230
Całki z funkcji w postaci tablicowej 233
Całki wielokrotne 235
Całkowanie symboliczne i całkowanie z dowolną precyzją 239
Całki krzywoliniowe 241
Transformaty całkowe 241
Podsumowanie 244
Materiały dodatkowe 245
Bibliografia 245
Rozdział 9.
Równanie
różniczkowe zwyczajne
247
Importowanie modułów 248
Równania różniczkowe zwyczajne 248
Rozwiązania symboliczne 250
Pola kierunków 255
Rozwiązywanie równań z użyciem transformaty Laplace'a 258
Numeryczne metody rozwiązywania równań
różniczkowych 261
Numeryczne rozwiązywanie równań różniczkowych z
użyciem SymPy 264
Podsumowanie 275
Materiały dodatkowe 276
Bibliografia 276
Rozdział 10.
Macierze rzadkie i grafy 277
Importowanie modułów 278
Macierze rzadkie w SciPy 278
Funkcje do tworzenia macierzy rzadkich 283
Algebra liniowa macierzy rzadkich 285
Układy równań liniowych 285
Grafy i sieci 291
Podsumowanie 297
Materiały dodatkowe 297
Bibliografia 297
Rozdział 11.
Równania
różniczkowe cząstkowe
299
Importowanie modułów 300
Równania różniczkowe cząstkowe 301
Metoda różnic skończonych 302
Metoda elementów skończonych 307
Przegląd frameworków MES 310
Rozwiązywanie równań różniczkowych cząstkowych z
użyciem FEniCS-a 311
Podsumowanie 330
Materiały dodatkowe 330
Bibliografia 331
Rozdział 12.
Przetwarzanie i analiza
danych 333
Importowanie modułów 334
Wprowadzenie do Pandas 334
Typ Series 335
Typ DataFrame 337
Szeregi czasowe 344
Biblioteka Seaborn 353
Podsumowanie 358
Materiały dodatkowe 358
Bibliografia 359
Rozdział 13.
Statystyka 361
Importowanie modułów 362
Statystyka i prawdopodobieństwo 362
Liczby losowe 364
Zmienne losowe i rozkłady 367
Testowanie hipotez 374
Metody nieparametryczne 378
Podsumowanie 381
Materiały dodatkowe 381
Bibliografia 381
Rozdział 14.
Modelowanie statystyczne
383
Importowanie modułów 384
Wprowadzenie do modelowania statystycznego 385
Definiowanie modeli statystycznych w Patsy 386
Regresja liniowa 393
Przykładowe zbiory danych 400
Regresja dyskretna 401
Regresja logistyczna 402
Model Poissona 406
Szeregi czasowe 409
Podsumowanie 413
Materiały dodatkowe 413
Bibliografia 413
Rozdział 15.
Uczenie maszynowe 415
Importowanie modułów 416
Krótki przegląd uczenia maszynowego 417
Regresja 419
Klasyfikacja 428
Klasteryzacja 431
Podsumowanie 436
Materiały dodatkowe 436
Bibliografia 436
Rozdział 16.
Statystyka bayesowska 437
Importowanie modułów 438
Wprowadzenie do statystyki bayesowskiej 439
Definiowanie modelu 441
Próbkowanie rozkładów a posteriori 445
Regresja liniowa 448
Podsumowanie 458
Materiały dodatkowe 459
Bibliografia 459
Rozdział 17.
Przetwarzanie
sygnałów 461
Importowanie modułów 462
Analiza spektralna 462
Transformata Fouriera 462
Okna czasowe 467
Spektrogramy 471
Filtrowanie sygnałów 474
Filtry konwolucyjne 474
Filtry o skończonej i nieskończonej odpowiedzi impulsowej 476
Podsumowanie 481
Materiały dodatkowe 481
Bibliografia 481
Rozdział 18.
Wprowadzanie i wyprowadzanie danych
483
Importowanie modułów 484
Format CSV 485
HDF5 489
h5py 490
PyTables 500
HDFStore z Pandas 503
JSON 505
Serializacja 509
Podsumowanie 511
Materiały dodatkowe 511
Bibliografia 512
Rozdział 19.
Optymalizacja kodu
513
Importowanie modułów 515
Numba 516
Cython 522
Podsumowanie 531
Materiały dodatkowe 532
Bibliografia 532
Dodatek. Instalacja i konfiguracja środowiska 533
Miniconda i conda 534
Pełne środowisko 540
Podsumowanie 543
Materiały dodatkowe 543
544
strony, Format: 17.0x23.0cm, oprawa miękka