Szczegóły ebooka

Python Data Science. Niezbędne narzędzia do pracy z danymi. Wydanie II

Python Data Science. Niezbędne narzędzia do pracy z danymi. Wydanie II

Jake VanderPlas

Ebook

Python udostępnia pierwszorzędne narzędzia i biblioteki przeznaczone specjalnie do pracy z danymi. Zdobyły one uznanie wielu naukowców i ekspertów, ceniących ten język za wysoką jakość rozwiązań służących do wydobywania wiedzy z danych. Aby uzyskać najlepsze możliwe efekty, trzeba dobrze poznać zarówno poszczególne biblioteki Pythona, jak i zasady pracy z nimi.

Ta książka stanowi wszechstronne omówienie wszystkich bibliotek Pythona, potrzebnych naukowcom i specjalistom pracującym z danymi. Znalazł się tu dokładny opis IPythona, NumPy, Pandas, Matplotlib, Scikit-Learn i innych narzędzi. Podręcznik uwzględnia przede wszystkim ich aspekty praktyczne, dzięki czemu świetnie się sprawdzi w rozwiązywaniu codziennych problemów z manipulowaniem, przekształcaniem, oczyszczaniem i wizualizacją różnych typów danych, a także jako pomoc podczas tworzenia modeli statystycznych i modeli uczenia maszynowego. Docenią go wszyscy, którzy zajmują się obliczeniami naukowymi w Pythonie.

To wydanie zawiera jasne przykłady, które pomogą Ci skonfigurować i wykorzystać narzędzia do nauki o danych i uczenia maszynowego.

Anne Bonner, założycielka i dyrektor generalna Content Simplicity

Nauczysz się:

  • pracować w naukowym środowisku obliczeniowym IPythona
  • korzystać ze specjalistycznych bibliotek przeznaczonych do pracy z danymi
  • stosować typy ndarray i DataFrame do przechowywania i przetwarzania danych
  • tworzyć różnego rodzaju wizualizacje danych za pomocą Matplotlib
  • implementować najważniejsze algorytmy uczenia maszynowego z pakietu Scikit-Learn

Wydobywaj z danych mądre odpowiedzi na trudne pytania!

Wprowadzenie

Część I. Jupyter - coś więcej niż zwykły Python

  • 1. Wprowadzenie do IPythona oraz Jupytera
    • Uruchamianie powłoki IPythona
    • Uruchamianie Jupyter Notebook
    • IPython - pomoc i dokumentacja
      • Dostęp do dokumentacji za pomocą ?
      • Dostęp do kodu źródłowego za pomocą ??
      • Przeglądanie zawartości modułów za pomocą autouzupełniania z tabulatorem
    • Skróty klawiaturowe w powłoce IPython
      • Skróty do nawigacji
      • Skróty do wprowadzania tekstu
      • Skróty związane z historią poleceń
      • Pozostałe skróty
  • 2. Funkcje interaktywne
    • Magiczne polecenia IPythona
      • Uruchamianie zewnętrznego kodu za pomocą %run
      • Pomiar czasu wykonania za pomocą %timeit
      • Pomoc dotycząca magicznych poleceń ?, %magic i %lsmagic
    • Historia wejścia i wyjścia
      • Obiekty In i Out IPythona
      • Symbol podkreślenia i poprzednie wyjścia
      • Wyłączanie wyjścia
      • Inne magiczne polecenia
    • Polecenia IPythona i powłoki
      • Krótkie wprowadzenie do powłoki
      • Polecenia powłoki w IPythonie
      • Przekazywanie wartości do i z powłoki
      • Magiczne polecenia związane z powłoką
  • 3. Debugowanie i profilowanie
    • Błędy i debugowanie
      • Kontrolowanie wyjątków za pomocą %xmode
      • Debugowanie - gdy lektura śladu nie wystarcza
    • Profilowanie kodu i pomiary czasu jego wykonania
      • Pomiar czasu wykonania fragmentu kodu za pomocą %timeit i %time
      • Profilowanie całych skryptów za pomocą %prun
      • Profilowanie linia po linii za pomocą %lprun
      • Profilowanie pamięci za pomocą %memit i %mprun
    • Więcej materiałów na temat IPythona
      • Materiały dostępne w sieci
      • Książki

Część II. Wprowadzenie do NumPy

  • 4. Zrozumieć typy danych w Pythonie
    • Typ całkowitoliczbowy w Pythonie to coś więcej niż zwykły int
    • Lista w Pythonie to coś więcej niż zwykła lista
    • Tablice o stałym typie w Pythonie
    • Tworzenie tablic z list
    • Tworzenie tablic od podstaw
    • Standardowe typy danych NumPy
  • 5. Podstawy pracy z tablicami NumPy
    • Atrybuty tablicy NumPy
    • Indeksowanie tablicy - dostęp do pojedynczych elementów
    • Slicing, czyli sposób na dostęp do podtablic
      • Jednowymiarowe podtablice
      • Wielowymiarowe podtablice
      • Podtablice jako widoki bez kopiowania
      • Kopiowanie tablic
    • Zmiana kształtu tablic
    • Konkatenacja i dzielenie tablic
      • Konkatenacja tablic
      • Dzielenie tablic
  • 6. Obliczenia z użyciem tablic NumPy - funkcje uniwersalne
    • Powolność pętli
    • Wprowadzenie do funkcji uniwersalnych
    • Przegląd funkcji uniwersalnych dostępnych w NumPy
      • Arytmetyka tablicowa
      • Wartość bezwzględna
      • Funkcje trygonometryczne
      • Potęgi i logarytmy
      • Funkcje uniwersalne do zastosowań specjalnych
    • Zaawansowane możliwości funkcji uniwersalnych
      • Określanie miejsca zapisu danych wyjściowych
      • Agregacje
      • Metoda outer
    • Więcej materiałów na temat funkcji uniwersalnych
  • 7. Agregacje - minimum, maksimum i wszystko pomiędzy nimi
    • Sumowanie wartości w tablicy
    • Minimum i maksimum
      • Agregacja w wielu wymiarach
      • Inne funkcje agregujące
    • Przykład: jaki jest średni wzrost prezydenta USA?
  • 8. Obliczenia na tablicach - broadcasting
    • Co to jest broadcasting?
    • Zasady broadcastingu
      • Pierwszy przykład
      • Drugi przykład
      • Trzeci przykład
    • Broadcasting w praktyce
      • Centrowanie wartości w tablicy
      • Rysowanie wykresów funkcji dwuwymiarowych
  • 9. Porównania, maski i logika boolowska
    • Przykład: sprawdzanie, przez ile dni padało
    • Operatory porównania jako funkcje uniwersalne
    • Praca z tablicami wartości logicznych
      • Zliczanie wpisów
      • Operatory logiczne
    • Tablice wartości logicznych jako maski
    • Słowa kluczowe and i or kontra operatory &/|
  • 10. Fancy indexing
    • Jak działa fancy indexing?
    • Łączenie różnych metod indeksowania
    • Przykład: wybieranie losowych punktów
    • Modyfikowanie wartości za pomocą fancy indexingu
    • Przykład: podział danych na kubełki
  • 11. Sortowanie tablic
    • Szybkie sortowanie w NumPy - np.sort i np.argsort
    • Sortowanie wzdłuż wierszy lub kolumn
    • Sortowanie częściowe - partycjonowanie
    • Przykład: metoda k najbliższych sąsiadów
  • 12. Dane ustrukturyzowane - ustrukturyzowane tablice NumPy
    • Tworzenie ustrukturyzowanych tablic
    • Bardziej zaawansowane typy złożone
    • Tablice rekordów - ustrukturyzowane tablice z niespodzianką
    • W stronę Pandas

Część III. Przekształcanie danych za pomocą Pandas

  • 13. Wprowadzenie do obiektów Pandas
    • Obiekt typu Series
      • Obiekty typu Series jako uogólnienie tablic NumPy
      • Obiekt typu Series jako szczególny rodzaj słownika
      • Tworzenie obiektów typu Series
    • Obiekt typu DataFrame
      • Ramka danych jako uogólnienie tablicy NumPy
      • Ramka danych jako szczególny rodzaj słownika
      • Tworzenie obiektów typu DataFrame
    • Obiekt typu Index
      • Indeks jako niemutowalna tablica
      • Indeks jako uporządkowany zbiór
  • 14. Indeksowanie i wybieranie
    • Wybór danych z obiektów typu Series
      • Obiekt typu Series jako słownik
      • Obiekt typu Series jako jednowymiarowa tablica
      • Indeksatory: loc i iloc
    • Wybór danych z obiektów typu DataFrame
      • Obiekt typu DataFrame jako słownik
      • Obiekt typu DataFrame jako dwuwymiarowa tablica
      • Inne konwencje związane z indeksowaniem
  • 15. Operacje na danych w Pandas
    • Funkcje uniwersalne - zachowanie indeksu
    • Funkcje uniwersalne - dopasowanie indeksu
      • Dopasowanie indeksu w obiektach typu Series
      • Dopasowanie indeksu w obiektach typu DataFrame
    • Funkcje uniwersalne - operacje pomiędzy ramkami danych a obiektami typu Series
  • 16. Obsługa brakujących danych
    • Kompromisy w konwencjach dotyczących brakujących danych
    • Brakujące dane w Pandas
      • None jako rodzaj wartownika
      • NaN - brakujące dane liczbowe
      • NaN i None w Pandas
    • Nullowalne typy danych w Pandas
    • Praca z wartościami typu null
      • Wykrywanie wartości typu null
      • Usuwanie wartości typu null
      • Uzupełnianie braków
  • 17. Indeksowanie hierarchiczne
    • Wielokrotnie indeksowane obiekty typu Series
      • Zły sposób
      • Lepszy sposób - MultiIndex z Pandas
      • MultiIndex jako dodatkowy wymiar
    • MultiIndex - metody tworzenia
      • Tworzenie indeksu hierarchicznego z użyciem jawnego konstruktora
      • Nazwy poziomów indeksu hierarchicznego
      • MultiIndex dla kolumn
    • MultiIndex - indeksowanie i slicing
      • Obiekty typu Series z wielokrotnymi indeksami
      • Obiekty typu DataFrame z wielokrotnymi indeksami
    • MultiIndex - zmiana kolejności
      • Posortowane i nieposortowane indeksy
      • Metody stack i unstack
      • Ustawianie i resetowanie indeksu
  • 18. Łączenie zbiorów danych - concat i append
    • Przypomnienie: konkatenacja tablic NumPy
    • Prosta konkatenacja za pomocą pd.concat
      • Zduplikowane indeksy
      • Konkatenacja za pomocą złączeń
      • Metoda append
  • 19. Łączenie zbiorów danych - merge i join
    • Algebra relacji
    • Rodzaje złączeń
      • Złączenia jeden-do-jednego
      • Złączenia wiele-do-jednego
      • Złączenia wiele-do-wielu
    • Określanie klucza, na podstawie którego ma być wykonane złączenie
      • Słowo kluczowe on
      • Słowa kluczowe left_on i right_on
      • Słowa kluczowe left_index i right_index
    • Wykorzystanie arytmetyki zbiorów w złączeniach
    • Nakładające się nazwy kolumn - słowo kluczowe suffixes
    • Przykład: dane dotyczące stanów USA
  • 20. Agregacja i grupowanie
    • Dane na temat planet
    • Prosta agregacja w Pandas
    • Grupowanie - podziel, zastosuj funkcję, połącz
      • Podziel, zastosuj funkcję, połącz
      • Obiekt GroupBy
      • Agregacja, filtrowanie, transformacja, wywoływanie funkcji
      • Określanie sposobu podziału
      • Przykład grupowania
  • 21. Tabele przestawne
    • Dane na potrzeby przykładu
    • Ręczne tworzenie tabel przestawnych
    • Składnia tabel przestawnych
      • Wielopoziomowe tabele przestawne
      • Dodatkowe opcje tabel przestawnych
    • Przykład: dane dotyczące liczby urodzeń
  • 22. Zwektoryzowane operacje na łańcuchach znaków
    • Wprowadzenie do pracy z łańcuchami znaków w Pandas
    • Metody pracujące na łańcuchach znaków w Pandas
      • Metody podobne do metod znanych z Pythona
      • Metody wykorzystujące wyrażenia regularne
      • Różne metody
    • Przykład: baza przepisów
      • Prosty system rekomendacji przepisów
      • Jak można rozwinąć ten projekt?
  • 23. Praca z szeregami czasowymi
    • Daty i godziny w Pythonie
      • Daty i godziny w Pythonie - datetime i dateutil
      • Typowane tablice znaczników czasu - datetime64 z NumPy
      • Daty i godziny w Pandas - najlepsze elementy z obu światów
    • Szeregi czasowe w Pandas - indeksowanie według czasu
    • Struktury danych do przechowywania szeregów czasowych w Pandas
    • Regularne sekwencje dat - pd.date_range
    • Częstotliwości i przesunięcia
    • Ponowne próbkowanie, przesuwanie i okna
      • Ponowne próbkowanie i zmiana częstotliwości
      • Przesunięcia w czasie
      • Ruchome okna
    • Przykład: wizualizacja danych o liczbie rowerów w Seattle
      • Wizualizacja danych
      • Zagłębianie się w dane
  • 24. Wysoka wydajność w Pandas - eval i query
    • Dlaczego warto zastosować query i eval - wyrażenia złożone
    • Wydajne operacje z użyciem pandas.eval
    • Operacje na kolumnach z użyciem DataFrame.eval
      • Przypisanie w DataFrame.eval
      • Zmienne lokalne w DataFrame.eval
    • Metoda DataFrame.query
    • Wydajność - kiedy warto korzystać z tych funkcji
    • Materiały dodatkowe

Część IV. Wizualizacja z użyciem Matplotlib

  • 25. Wskazówki dotyczące korzystania z Matplotlib
    • Importowanie Matplotlib
    • Ustawianie stylów
    • Czy trzeba używać show()? Jak wyświetlić wygenerowane wykresy?
      • Rysowanie z poziomu skryptu
      • Rysowanie z poziomu IPythona
      • Rysowanie z poziomu notatnika Jupytera
      • Zapisywanie rysunków do pliku
      • Dwa interfejsy w cenie jednego
  • 26. Proste wykresy liniowe
    • Dostosowywanie wykresu - kolory i style linii
    • Dostosowywanie wykresu - granice osi
    • Etykietowanie wykresów
    • Pułapki Matplotlib
  • 27. Proste wykresy punktowe
    • Tworzenie wykresów punktowych za pomocą plt.plot
    • Tworzenie wykresów punktowych za pomocą plt.scatter
    • plot a scatter - uwaga na temat wydajności
    • Wizualizacja niepewności
      • Słupki błędów
      • Błędy ciągłe
  • 28. Wykresy gęstości i wykresy konturowe
    • Wizualizacja trójwymiarowych funkcji
    • Histogramy, kubełki i gęstości
    • Dwuwymiarowe histogramy i podział danych na kubełki
      • plt.hist2d - dwuwymiarowy histogram
      • plt.hexbin - podział na sześciokątne kubełki
      • Jądrowy estymator gęstości
  • 29. Dostosowywanie legend
    • Wybór elementów do legendy
    • Legenda opisująca rozmiary punktów
    • Wiele legend
  • 30. Dostosowywanie pasków kolorów
    • Dostosowywanie pasków kolorów
      • Wybór mapy kolorów
      • Granice kolorów i wartości spoza zakresu
      • Dyskretne paski kolorów
    • Przykład: odręcznie zapisane cyfry
  • 31. Podwykresy
    • plt.axes - manualne tworzenie podwykresów
    • plt.subplot - proste siatki podwykresów
    • plt.subplots - cała siatka za jednym zamachem
    • plt.GridSpec - bardziej skomplikowane układy
  • 32. Tekst i adnotacje
    • Przykład: wpływ świąt na liczbę urodzeń w Stanach Zjednoczonych
    • Transformacje i położenie tekstu
    • Strzałki i adnotacje
  • 33. Dostosowywanie znaczników osi
    • Główne i dodatkowe podziałki
    • Ukrywanie podziałek lub ich etykiet
    • Zmniejszenie lub zwiększenie liczby podziałek
    • Inne możliwości formatowania podziałek
    • Lokalizatory i formatery - podsumowanie
  • 34. Dostosowywanie wykresów - konfiguracja i style
    • Ręczne dostosowywanie wykresów
    • Zmiana ustawień domyślnych - rcParams
    • Arkusze stylów
      • Styl domyślny
      • Styl FiveThiryEight
      • Styl ggplot
      • Styl z książki Bayesian Methods for Hackers
      • Ciemne tło
      • Rysunki w skali szarości
      • Styl Seaborn
  • 35. Wykresy w przestrzeni trójwymiarowej
    • Trójwymiarowe punkty i krzywe
    • Trójwymiarowe wykresy konturowe
    • Wykresy typu wireframe i wykresy powierzchniowe
    • Triangulacja powierzchni
    • Przykład: wizualizacja wstęgi Möbiusa
  • 36. Wizualizacje z użyciem pakietu Seaborn
    • Przegląd możliwości pakietu Seaborn
      • Histogramy, jądrowy estymator gęstości i wykresy gęstości
      • Wykresy typu pairplot
      • Grupy histogramów
    • Wykresy typu catplot
      • Wspólne rozkłady prawdopodobieństwa
      • Wykresy słupkowe
    • Przykład: eksploracja danych na temat czasu ukończenia maratonu
    • Materiały dodatkowe
    • Inne biblioteki do wizualizacji danych w Pythonie

Część V. Uczenie maszynowe

  • 37. Czym jest uczenie maszynowe?
    • Rodzaje uczenia maszynowego
    • Przykłady problemów uczenia maszynowego
      • Klasyfikacja, czyli przewidywanie dyskretnych etykiet
      • Regresja, czyli przewidywanie ciągłych etykiet
      • Klasteryzacja, czyli ustalanie etykiet w oparciu o nieetykietowane dane
      • Redukcja wymiarowości - wnioskowanie o strukturze danych pozbawionych etykiet
    • Podsumowanie
  • 38. Wprowadzenie do Scikit-Learn
    • Reprezentacja danych w Scikit-Learn
      • Macierz cech
      • Tablica wartości docelowych
    • API Estimator
      • Podstawy korzystania z API
      • Przykład uczenia nadzorowanego: prosta regresja liniowa
      • Przykład uczenia nadzorowanego: klasyfikacja irysów
      • Przykład uczenia nienadzorowanego: redukcja wymiarowości w zbiorze Iris
      • Przykład uczenia nienadzorowanego: klasteryzacja irysów
    • Zastosowanie: eksploracja zbioru odręcznie zapisanych cyfr
      • Wczytywanie i wizualizacja danych
      • Przykład uczenia nienadzorowanego: redukcja wymiarowości
      • Klasyfikacja cyfr
    • Podsumowanie
  • 39. Hiperparametry i walidacja modelu
    • Walidacja modelu
      • Niewłaściwy sposób walidacji modelu
      • Właściwy sposób walidacji modelu, czyli podział danych na zbiór uczący i testowy
      • Walidacja modelu za pomocą walidacji krzyżowej
    • Wybór najlepszego modelu
      • Kompromis pomiędzy obciążeniem a wariancją
      • Krzywe walidacji w Scikit-Learn
    • Krzywe uczenia
    • Walidacja w praktyce - wyszukiwanie w siatce
    • Podsumowanie
  • 40. Inżynieria cech
    • Cechy o charakterze kategorialnym
    • Cechy tekstowe
    • Konwersja obrazów na cechy
    • Cechy pochodne
    • Imputacja brakujących danych
    • Potoki przetwarzania w inżynierii cech
  • 41. Dogłębne spojrzenie - naiwny klasyfikator Bayesa
    • Klasyfikacja bayesowska
    • Naiwny gaussowski klasyfikator Bayesa
    • Naiwny wielomianowy klasyfikator Bayesa
      • Przykład: klasyfikacja tekstu
    • Kiedy korzystać z naiwnego klasyfikatora Bayesa
  • 42. Dogłębne spojrzenie - regresja liniowa
    • Prosta regresja liniowa
    • Regresja funkcjami bazowymi
      • Wielomianowe funkcje bazowe
      • Gaussowskie funkcje bazowe
    • Regularyzacja
      • Regresja grzbietowa (regularyzacja L)
      • Regresja lasso (regularyzacja L)
    • Przykład: przewidywanie ruchu rowerowego
  • 43. Dogłębne spojrzenie - maszyny wektorów nośnych
    • Motywacje dla maszyn wektorów nośnych
    • Maszyny wektorów nośnych - maksymalizacja marginesu
      • Dopasowywanie maszyny wektorów nośnych
      • Maszyny wektorów nośnych z nieliniowymi granicami - jądrowy SVM
      • Dostrajanie SVM - zmiękczanie marginesów
    • Przykład: rozpoznawanie twarzy
    • Podsumowanie
  • 44. Dogłębne spojrzenie - drzewa decyzyjne i lasy losowe
    • Motywacje dla lasów losowych - drzewa decyzyjne
      • Tworzenie drzewa decyzyjnego
      • Drzewa decyzyjne i nadmierne dopasowanie
    • Zespoły estymatorów - lasy losowe
    • Regresja z użyciem lasów losowych
    • Przykład: wykorzystanie lasu losowego do klasyfikacji cyfr
    • Podsumowanie
  • 45. Dogłębne spojrzenie - analiza głównych składowych
    • Wprowadzenie do analizy głównych składowych
      • PCA jako metoda redukcji wymiarowości
      • Wykorzystanie PCA do wizualizacji - odręcznie zapisane cyfry
      • Co reprezentują składowe?
      • Wybór liczby składowych
    • PCA jako metoda filtrowania szumów
    • Przykład: rozpoznawanie twarzy
    • Podsumowanie
  • 46. Dogłębne spojrzenie - manifold learning
    • Manifold learning - słowo "hello"
    • Skalowanie wielowymiarowe
      • Skalowanie wielowymiarowe jako metoda manifold learningu
      • Osadzenia nieliniowe - gdy zawodzi skalowanie wielowymiarowe
    • Rozmaitości nieliniowe - lokalnie liniowe osadzanie
    • Kilka przemyśleń na temat metod manifold learningu
    • Przykład: mapowanie izometryczne w zbiorze zdjęć twarzy
    • Przykład: wizualizacja struktury w liczbach
  • 47. Dogłębne spojrzenie - klasteryzacja za pomocą algorytmu k-średnich
    • Wprowadzenie do algorytmu k-średnich
    • Estymacja-maksymalizacja
    • Przykłady
      • Przykład 1. Algorytm k-średnich w zbiorze digits
      • Przykład 2. Algorytm k-średnich w kompresji kolorów
  • 48. Dogłębne spojrzenie - modele mieszanin rozkładów Gaussa
    • Motywacje dla modeli mieszanin rozkładów Gaussa - słabości algorytmu k-średnich
    • Uogólnienie algorytmu EM - modele mieszanin rozkładów Gaussa
    • Wybór rodzaju kowariancji
    • Modele mieszanin rozkładów Gaussa jako narzędzie do szacowania gęstości
    • Przykład: wykorzystanie GMM do generowania nowych danych
  • 49. Dogłębne spojrzenie - jądrowy estymator gęstości
    • Motywacje dla jądrowego estymatora gęstości - histogramy
    • Jądrowy estymator gęstości w praktyce
    • Wybór parametru wygładzania za pomocą walidacji krzyżowej
    • Przykład: nie tak naiwny klasyfikator Bayesa
      • Anatomia niestandardowego estymatora
      • Korzystanie z naszego niestandardowego estymatora
  • 50. Zastosowanie - potok przetwarzania do wykrywania twarzy
    • Cechy HOG
    • HOG w akcji - prosty detektor twarzy
      • 1. Stwórz zbiór "pozytywnych" próbek
      • 2. Stwórz zbiór "negatywnych" próbek
      • 3. Połącz zbiory i wyodrębnij cechy HOG
      • 4. Wytrenuj maszynę wektorów nośnych
      • 5. Znajdź twarze na nowym zdjęciu
    • Zastrzeżenia i ulepszenia
    • Materiały dodatkowe na temat uczenia maszynowego
  • Tytuł: Python Data Science. Niezbędne narzędzia do pracy z danymi. Wydanie II
  • Autor: Jake VanderPlas
  • Tytuł oryginału: Python Data Science Handbook: Essential Tools for Working with Data, 2nd Edition
  • Tłumaczenie: Filip Kamiński
  • ISBN: 978-83-289-0069-1, 9788328900691
  • Data wydania: 2023-11-07
  • Format: Ebook
  • Identyfikator pozycji: pydasc
  • Wydawca: Helion