Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

Marek Gągolewski

Przetwarzanie i analiza danych w języku Python

Anna Cena
Maciej Bartoszuk
Marek Gągolewski
Maciej Bartoszuk
Anna Cena

Celem autorów książki jest przygotowanie Czytelnika do samodzielnego przepro-


wadzenia całego procesu analizy danych, od pobrania i załadowania zbioru, przez
jego wstępne przetworzenie i wyczyszczenie, aż po samą analizę, wizualizację
wyników i ich interpretację. Wiemy, że pewne rozwiązania, które stworzy Czytel-
Przetwarzanie i analiza danych
nik, przeznaczone będą do wielokrotnego użytku i tym samym zasługiwać będą
w języku Python

Przetwarzanie i analiza danych w języku Python


na wdrożenie w ramach większych projektów informatycznych. Z tego powodu
omawiamy także zestaw dobrych praktyk inżynierii oprogramowania.

Publikacja zawiera szereg przykładów, od prostych do bardziej rozbudowanych,


pozwalających zrozumieć nie tylko poszczególne etapy procesu analizy danych, ale
również zasady funkcjonowania środowiska Python 3. Czytelna struktura książki
umożliwia osobom mającym już pewną wiedzę łatwe wyszukanie tylko wybra-
nych, interesujących ich zagadnień.

Przetwarzanie i analiza danych w języku Python jest podsumowaniem doświad-


czeń autorów wyniesionych z zajęć prowadzonych na Wydziale Matematyki i Nauk
Informacyjnych Politechniki Warszawskiej (m.in. dla studentów matematyki
i informatyki ze specjalności dotyczących statystyki matematycznej, analizy
danych i data science), licznych szkoleń (np. dla Data Science Retreat w Berlinie),
a także z pracy naukowo-badawczej w Instytucie Badań Systemowych Polskiej
Akadamii Nauk oraz w Instytucie Podstaw Informatyki PAN w ramach International
Ph.D. Studies Program (m. in. w dziedzinie analizy i agregacji danych).
Przetwarzanie i analiza danych
w języku Python
Marek Gągolewski
Maciej Bartoszuk
Anna Cena

Przetwarzanie i analiza danych


w języku Python
SPIS TREŚCI

Przedmowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XI

I Podstawy języka Python

1. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. J˛ezyk i środowisko Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1. Instalacja dystrybucji środowiska Python . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2. Instalacja pakietów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2. Notatniki Jupyter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1. Tryby pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2. Najważniejsze skróty klawiszowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.3. Podstawy j˛ezyka Markdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3. Pierwsze kroki w j˛ezyku Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2. Typy skalarne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1. Liczby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.1. Operatory arytmetyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.2. Konwersja typów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.3. Tworzenie obiektów nazwanych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.4. Funkcje wbudowane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.5. Pola i metody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.6. Arytmetyka zmiennopozycyjna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2. Wartości logiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.1. Operatory relacyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.2. Operatory logiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3. Napisy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.1. Tworzenie napisów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.2. Podstawowe operacje na napisach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3. Typy sekwencyjne i iterowalne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32


3.1. Podstawowe rodziny obiektów typu sekwencyjnego . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.1. Listy i krotki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.2. Zakresy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.1.3. Napisy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
VI SPIS TREŚCI

3.2. Zarzadzanie
˛ elementami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.1. Wybieranie elementów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.2. Modyfikacja elementów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.3. Dodawanie i usuwanie elementów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.4. Kopiowanie referencji, kopiowanie płytkie a gł˛ebokie . . . . . . . . . . . . . . . . . 41
3.3. Obiekty iterowalne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4. Działania na obiektach iterowalnych i typu sekwencyjnego . . . . . . . . . . . . . . . . . . . 47
3.4.1. Podstawowe metody i funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.4.2. Krotki identyfikatorów po lewej stronie operatora przypisania . . . . . . . . . . . . . 50
3.4.3. Wyrażenia listotwórcze i generatory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4.4. Formatowanie napisów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4. Słowniki i zbiory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.1. Słowniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.1.1. Tworzenie słowników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.1.2. Podstawowe metody i funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.2. Zbiory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2.1. Tworzenie zbiorów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2.2. Podstawowe metody i funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5. Instrukcje sterujace
˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1. Instrukcja warunkowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.2. P˛etle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2.1. P˛etla while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2.2. P˛etla for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.2.3. Instrukcje break i continue oraz blok else w p˛etlach . . . . . . . . . . . . . . . . 69
5.3. Obsługa wyjatków˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.3.1. Zgłaszanie wyjatków ˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.3.2. Rodzaje wyjatków ˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.3.3. Wychwytywanie wyjatków ˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

6. Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.1. Definiowanie funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.1.1. Dokumentowanie funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.1.2. Wartość zwracana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.3. Wyrażenia lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.2. Parametry i argumenty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.1. Sposób przekazywania argumentów . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.2.2. Sprawdzanie poprawności argumentów . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.2.3. Dopasowywanie argumentów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.2.4. Parametry z argumentami domyślnymi . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.2.5. Rozpakowywanie argumentów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.2.6. Parametry specjalne *args i **kwargs . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.3. Zasi˛eg zmiennych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.1. Zmienne lokalne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.2. Zmienne globalne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.3.3. Zmienne nielokalne, fabryki funkcji i domkni˛ecia . . . . . . . . . . . . . . . . . . . . 90
6.4. Pakiety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
SPIS TREŚCI VII

II Przetwarzanie danych

7. Wektory, macierze i inne tablice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97


7.1. Tworzenie i reprezentacja tablic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.1.1. Funkcja array() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.1.2. Reprezentacja tablic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
7.1.3. Typ przechowywanych elementów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.1.4. Tworzenie tablic specjalnego rodzaju . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.1.5. Łaczenie
˛ tablic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.2. Podstawowe metody i funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
7.2.1. Operatory arytmetyczne. Uzgadnianie kształtów . . . . . . . . . . . . . . . . . . . . . 108
7.2.2. Operacje relacyjne i logiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
7.2.3. Zwektoryzowane funkcje matematyczne . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.2.4. Agregacja danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.2.5. Inne operacje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
7.3. Indeksowanie tablic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.3.1. Indeksowanie wektorów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.3.2. Indeksowanie macierzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
7.3.3. Indeksowanie tablic N-wymiarowych . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.3.4. Wyszukiwanie indeksów elementów spełniajacych ˛ zadane kryteria . . . . . . . . . . 134

8. Ramki danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137


8.1. Tworzenie ramek danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8.1.1. Konstruktor klasy DataFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
8.1.2. Importowanie ramek danych z plików i innych źrodeł . . . . . . . . . . . . . . . . . . 139
8.1.3. Odczytywanie podstawowych informacji o ramkach danych . . . . . . . . . . . . . . 140
8.2. Zmienne, czyli obiekty typu Series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
8.2.1. Wydobywanie poszczególnych zmiennych . . . . . . . . . . . . . . . . . . . . . . . . 143
8.2.2. Tworzenie i reprezentacja zmiennych . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
8.2.3. Zmienne typu data i czas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
8.2.4. Zmienne jakościowe i porzadkowe
˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
8.3. Etykiety, czyli obiekty typu Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
8.3.1. Etykietowanie wierszy i kolumn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
8.3.2. Etykiety hierarchiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
8.4. Indeksowanie zmiennych i ramek danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
8.4.1. Wybór elementów pojedynczej zmiennej . . . . . . . . . . . . . . . . . . . . . . . . . 154
8.4.2. Wybór podzbioru wierszy i kolumn ramki danych . . . . . . . . . . . . . . . . . . . . 160
8.5. Wybrane operacje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
8.5.1. Dodawanie oraz usuwanie kolumn i wierszy . . . . . . . . . . . . . . . . . . . . . . . 164
8.5.2. Przekształcanie zmiennych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
8.5.3. Podsumowania ramek danych i zmiennych . . . . . . . . . . . . . . . . . . . . . . . . 168
8.5.4. Sortowanie ramek danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
8.5.5. Zmiana kształtu ramek danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
8.5.6. Obserwacje brakujace ˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

9. Przetwarzanie napisów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179


9.1. Operacje na pojedynczych napisach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
9.1.1. Podstawowe stałe napisowe i operacje na pojedynczych znakach . . . . . . . . . . . 180
VIII SPIS TREŚCI

9.1.2. Wyszukiwanie ustalonego wzorca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182


9.1.3. Translacja znaków . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
9.1.4. Sprawdzanie, czy wszystkie znaki należa˛ do podanej kategorii . . . . . . . . . . . . 184
9.1.5. Dzielenie i sklejanie tekstu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
9.2. Wyszukiwanie wzorca przy użyciu wyrażeń regularnych . . . . . . . . . . . . . . . . . . . . . 185
9.2.1. Definiowanie wyrażeń regularnych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
9.2.2. Przeglad
˛ funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
9.2.3. Wydzielone podwyrażenia i odwołania do nich . . . . . . . . . . . . . . . . . . . . . 189
9.3. Zwektoryzowane operacje na obiektach Index i Series . . . . . . . . . . . . . . . . . . . . 190

10. Przetwarzanie plików i zasobów w internecie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196


10.1. Operacje na drzewie katalogów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
10.1.1. Ścieżki dost˛epu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
10.1.2. Wyszukiwanie plików na dysku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
10.2. Przetwarzanie plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
10.2.1. Otwieranie pliku w różnych trybach . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
10.2.2. Odczytywanie zawartości pliku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
10.2.3. Zapisywanie danych do pliku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
10.2.4. Serializacja obiektów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
10.2.5. Popularne formaty plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
10.3. Pozyskiwanie danych ze stron internetowych . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.3.1. Wydobywanie tabel w postaci ramek danych . . . . . . . . . . . . . . . . . . . . . . . 209
10.3.2. R˛eczne przetwarzanie kodu źródłowego strony . . . . . . . . . . . . . . . . . . . . . . 209
10.3.3. Parsowanie kodu HTML i wydobywanie pojedynczych elementów . . . . . . . . . 211

11. Dost˛ep do baz danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215


11.1. Przykładowa baza danych: nycflights13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
11.2. Obsługa baz danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
11.2.1. Połaczenie
˛ z baza˛ danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
11.2.2. Eksportowanie danych do bazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
11.2.3. Odczytywanie danych z bazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
11.2.4. Funkcje z pakietu pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
11.3. Ćwiczenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
11.3.1. Wybór unikatowych podzbiorów kolumn . . . . . . . . . . . . . . . . . . . . . . . . . 222
11.3.2. Agregacja danych w podgrupach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
11.3.3. Filtrowanie danych wejściowych i wyników . . . . . . . . . . . . . . . . . . . . . . . 226
11.3.4. Sortowanie wyników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
11.3.5. Operacje teoriomnogościowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
11.3.6. Złaczenia
˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

III Analiza danych

12. Wizualizacja danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239


12.1. Rysowanie podstawowych obiektów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
12.1.1. Łamane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
12.1.2. Punkty i różne symbole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
12.1.3. Wielokaty
˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
12.1.4. Adnotacje tekstowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
SPIS TREŚCI IX

12.2. Parametry graficzne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244


12.2.1. Sposoby kreślenia punktów i odcinków . . . . . . . . . . . . . . . . . . . . . . . . . . 244
12.2.2. Sposoby określania barw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
12.2.3. Napisy formatujace
˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
12.2.4. Ustawienia osi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
12.3. Rysunki jako kombinacje obiektów podstawowych . . . . . . . . . . . . . . . . . . . . . . . . 248
12.3.1. Wiele obiektów na jednym wykresie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
12.3.2. Legenda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
12.3.3. Wiele wykresów na jednej stronie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
12.4. Graficzna prezentacja danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
12.4.1. Wybrane wykresy dla danych jakościowych . . . . . . . . . . . . . . . . . . . . . . . 255
12.4.2. Wybrane wykresy dla danych ilościowych . . . . . . . . . . . . . . . . . . . . . . . . 258
12.4.3. Wybrane wykresy dla funkcji dwuwymiarowych . . . . . . . . . . . . . . . . . . . . 262

13. Wnioskowanie statystyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265


13.1. Wybrane rozkłady prawdopodobieństwa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
13.1.1. Podstawowe rodziny rozkładów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
13.1.2. Generowanie liczb pseudolosowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
13.2. Estymacja parametrów i charakterystyk rozkładów . . . . . . . . . . . . . . . . . . . . . . . . 275
13.2.1. Estymacja punktowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
13.2.2. Estymacja przedziałowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
13.3. Wykorzystanie testów statystycznych w analizie danych . . . . . . . . . . . . . . . . . . . . . 280
13.3.1. Testy zgodności . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
13.3.2. Testy parametryczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
13.3.3. Testy nieparametryczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

14. Wybrane algorytmy uczenia maszynowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298


14.1. Przykładowy zbiór danych: winequality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
14.2. Analiza regresji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
14.2.1. Regresja liniowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
14.2.2. Ocena jakości dopasowania modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
14.2.3. Model wielomianowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
14.2.4. Wybór zmiennych do modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
14.3. Klasyfikacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
14.3.1. Metoda k-najbliższych sasiadów
˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
14.3.2. Ocena jakości klasyfikatora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
14.3.3. Drzewa decyzyjne i lasy losowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
14.3.4. Porównanie krzyżowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
14.4. Analiza skupień . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
14.4.1. Algorytm k-średnich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
14.4.2. Hierarchiczna analiza skupień . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

IV Tworzenie własnego oprogramowania

15. Moduły, pakiety i skrypty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331


15.1. Projekty wielomodułowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
15.1.1. Środowisko programistyczne Spyder . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
15.1.2. Tworzenie i ładowanie modułów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
X SPIS TREŚCI

15.1.3. Tworzenie i ładowanie pakietów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335


15.1.4. Ścieżki wyszukiwania modułów i pakietów . . . . . . . . . . . . . . . . . . . . . . . . 336
15.2. Skrypty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
15.2.1. Uruchomienie skryptu z poziomu powłoki . . . . . . . . . . . . . . . . . . . . . . . . 337
15.2.2. Przekazywanie argumentów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
15.2.3. Skrypty a moduły. Testy jednostkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

16. Programowanie obiektowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343


16.1. Klasy i relacje mi˛edzy nimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
16.1.1. Definiowanie klasy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
16.1.2. Dziedziczenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
16.2. Metody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
16.2.1. Przecia˛żanie metod. Polimorfizm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
16.2.2. Metody i pola statyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
16.2.3. Metody specjalne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
16.3. Pola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
16.3.1. Definiowanie z góry ustalonych pól w klasie . . . . . . . . . . . . . . . . . . . . . . . 357
16.3.2. Pola prywatne, chronione i publiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

Skorowidz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

You might also like