Przetwarzanie i analiza danych w języku Python 2017/2018
(Python for Data Processing and Analysis)
Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej, przedmiot obieralny, studia mgr., kier. Matematyka

Informacje ogólne

Wykład & Laboratoria (zajęcia łączone): prof. nzw. dr hab. inż. Marek Gągolewski pon., 16-18, s. 219
pon., 18-20, s. 219

Kurs poświęcony jest wprowadzeniu do programowania w języku Python 3. Uczestnicy kursu mają możliwość dogłębnego poznania technik programowania w języku Python oraz najbardziej popularnych i użytecznych pakietów z punktu widzenia przetwarzania i analizy danych. Nabywają też umiejętność samodzielnej implementacji algorytmów uczenia maszynowego (np. sieci neuronowych) m.in. przy użyciu wysokopoziomowych operacji na tensorach. Szczególny nacisk położony jest na omówienie i ćwiczenie technik programowania i użycia narzędzi przydatnych w pracy matematyka-praktyka (w szczególności na stanowisku data scientist) i w zastosowaniach naukowo-badawczych.

Harmonogram zajęć

Wymagane oprogramowanie

Korzystamy z Pythona 3.6 (nie: 2.7). Sugerowana dystrybucja: Anaconda (zawiera większość pakietów i narzędzi, z których będziemy korzystać, w tym Jupytera).

Sugerowany system operacyjny: Linux lub OS X (albo inny oparty na UNIXie) (np. Ubuntu, Kubuntu, Mint lub dla bardziej zaawansowanych Fedora (zob. KDEspin), OpenSUSE itp.). Uwaga: istnieje możliwość instalacji systemu na tzw. maszynie wirtualnej, zob. np. Oracle VM VirtualBox, ew. docker (+obrazy).

Zobacz instrukcję, jak zainstalować system Linux i Anacondę na maszynie wirtualnej.

Będziemy potrzebowali także kompilatorów języków C i C++ (np. sudo apt-get install build-essential | sudo dnf install gcc-c++) oraz Cythona.

Wymagania wstępne (przedmioty poprzedzające)

  • Podstawy programowania strukturalnego w języku C i/lub C++
  • Programowanie obiektowe
  • Algorytmy i struktury danych
  • Metody numeryczne

Literatura

Podstawowa:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016
  2. VanderPlas J., Python Data Science Handbook: Essential Tools for Working with Data, O'Reilly, 2016
  3. McKinney W., Python for Data Analysis. Data Wrangling with Pandas, NumPy, and IPython, O'Reilly Media, 2012
  4. Richert W., Coelho L.P., Building Machine Learning Systems with Python, Packt Publishing, 2013
  5. Lutz M., Learning Python, O'Reilly Media, 2013
  6. Bressert E., SciPy and NumPy, O'Reilly Media, 2012

Tydzień 1. (2017-10-09)

Praca z notatnikami Jupyter,
Markdown,
Typy skalarne w Pythonie

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 1, 2
  2. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. Uwaga: należy „obserwować” (Watch) ww. repozytorium, gdyż inaczej nie będą Państwo otrzymywać wiadomości e-mail nt. aktualizacji, ogłoszeń itp. (sekcja Issues)

Dodatkowo:
  1. Instalujemy Git for OS X | sudo apt-get install git | sudo dnf install git itp.
  2. Uruchamiamy terminal.
  3. Konfigurujemy gita:
    git config --global user.name "My Name" # imię i nazwisko
    git config --global user.email "user@email.com" # email z GitHuba
    
  4. Pobieramy repozytorium padpy1718:
    cd ~/katalog1/katalog2 # gdzie chcemy skopiowac pliki, uwaga: / a nie \
    git clone https://github.com/gagolews/padpy1718.git # utworzony zostanie katalog padpy1718
    
  5. Za każdym razem, gdy chcemy mieć najnowszą wersję:
    cd ~/katalog1/katalog2/padpy1718
    git pull origin master
    

Tydzień 2. (2017-10-16)

Typy sekwencyjne i iterowalne

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 3
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. Built-in Types – Python3 Documentation
  4. Data Structures – Python3 Tutorial

Tydzień 3. (2017-10-23)

Słowniki i zbiory,
Instrukcje sterujące,
Funkcje,
Podstawowe polecenia w powłoce (bash),
Skrypty, moduły, pakiety

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 4, 5, 6, 15
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. Built-in Types – Python3 Documentation
  4. Data Structures – Python3 Tutorial
  5. Modules – Python3 Tutorial
  6. More Control Flow – Python3 Tutorial
  7. Learning the Linux Shell
  8. Bash Beginners Guide
  9. Bash Programming HOW-TO

Praca domowa nr 1 (base Python; max 15 p.) – termin oddania: 31.10.2017.

Tydzień 4. (2017-10-30)

Programowanie obiektowe,
NumPy: wektory, macierze i inne tablice

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 16, 7
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. Classes – Python3 Tutorial
  4. NumPy – strona domowa
  5. NumPy – dokumentacja

Tydzień 5. (2017-11-06)

NumPy – cd.

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 7
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. NumPy – dokumentacja

Praca domowa nr 2 (gra; max 25 p.) – termin oddania: 01.12.2017.

Tydzień 6. (2017-11-13)

Pandas – ramki danych

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 8
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. pandas – strona domowa
  4. pandas cheat sheet

Tydzień 7. (2017-11-20)

Pandas – cd.

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 8
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. pandas – strona domowa

Praca domowa nr 3 (Pandas; max 15 p.) – termin oddania: 8.12.2017.

Tydzień 8. (2017-11-27)

Dostęp do baz danych SQL,
Przetwarzanie danych tekstowych (string, re, pandas.str)

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 9, 10, 11
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. string – Common String Operations
  4. re
  5. pandas – Working With Text Data
  6. Input and Output – Python3 Tutorial
  7. pickle
  8. json
  9. sqlite3

Tydzień 9. (2017-12-04)

Web scraping i czyszczenie danych,
Wizualizacja danych (matplotlib, seaborn, pandas)

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 12
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. lxml
  4. requests
  5. cssselect
  6. matplotlib – strona domowa
  7. matplotlib – dokumentacja
  8. seaborn – strona domowa
  9. Pandas – Visualization

Tydzień 10. (2017-12-11)

Wizualizacja danych (cd.),
Wnioskowanie statystyczne

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 13
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  3. statsmodels
  4. scipy.stats
  5. scikit-learn: Density estimation
  6. rpy2 – access R from Python
  7. scikit-learn: Machine Learning in Python

Tydzień 11. (2017-12-18)

Wnioskowanie statystyczne (cd.)

Materiały pomocnicze:
  1. Gagolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 — rozdz. 14
  2. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie

Praca domowa nr 4 (Data Science: Airline on-time performance; max 25 p.) – termin oddania: 12.01.2018.

Tydzień 12. (2018-01-04)

Cython,
Wybrane algorytmy uczenia maszynowego (bez nadzoru)

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  2. scikit-learn: Machine Learning in Python
  3. Cython
  4. zob. też: numba

Praca domowa nr 5 (analiza skupień (badawcza); max 25 p.) – termin oddania: 26.01.2018.

Tydzień 13. (2018-01-08)

Wybrane algorytmy uczenia maszynowego (z nadzorem)

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  2. scikit-learn: Machine Learning in Python
  3. Na przyszłość: zobacz listę pozostałych SciKits

Tydzień 14. (2018-01-15)

Oddawanie pracy domowej nr 4 (prezentacje studentów)

Tydzień 15. (2018-01-22)

Obliczenia na tensorach przy użyciu Theano i TensorFlow

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  2. Theano
  3. TensorFlow