Przetwarzanie i analiza danych w języku Python 2018/2019
(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), Manjaro itp.). Uwaga: istnieje możliwość instalacji systemu na tzw. maszynie wirtualnej, zob. np. Oracle VM VirtualBox, ew. docker (+obrazy).

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. (2018-10-08)

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 laboratoriów 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)

  4. JupyterLab Documentation
  5. Markdown Syntax
  6. Mastering Markdown @ GitHub
  7. Pweave
  8. Spyder
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 padpy1819:
    cd ~/katalog1/katalog2 # gdzie chcemy skopiować pliki, uwaga: / a nie \
    git clone https://github.com/gagolews/padpy1819.git # utworzony zostanie katalog padpy1819
    
  5. Za każdym razem, gdy chcemy mieć najnowszą wersję:
    cd ~/katalog1/katalog2/padpy1819
    git pull origin master
    

Tydzień 2. (2018-10-15)

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 laboratoriów oraz zestawy zadań znajdują się na GitHubie
  3. Built-in Types – Python3 Documentation
  4. Data Structures – Python3 Tutorial

Tydzień 3. (2018-10-22)

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 laboratoriów 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

Tydzień 4. (2018-10-29)

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 laboratoriów oraz zestawy zadań znajdują się na GitHubie
  3. Classes – Python3 Tutorial
  4. NumPy – strona domowa
  5. NumPy – dokumentacja

Tydzień 5. (2018-11-05)

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 laboratoriów oraz zestawy zadań znajdują się na GitHubie
  3. NumPy – dokumentacja

Tydzień 6. (2018-11-12)

–––

Dzień wolny od zajęć dydaktycznych.

Tydzień 7. (2018-11-19)

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 laboratoriów oraz zestawy zadań znajdują się na GitHubie
  3. pandas – strona domowa
  4. pandas cheat sheet

Tydzień 8. (2018-11-26)

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 laboratoriów oraz zestawy zadań znajdują się na GitHubie
  3. pandas – strona domowa

Tydzień 9. (2018-12-03)

Dostęp do baz danych SQL,
Przetwarzanie danych tekstowych (string, re, pandas.str),
Web scraping i czyszczenie 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. 9, 11
  2. Kody z wykładu i laboratoriów 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
  10. lxml
  11. requests
  12. cssselect

Tydzień 10. (2018-12-10)

Przetwarzanie plików,
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. 10, 12
  2. Kody z wykładu i laboratoriów oraz zestawy zadań znajdują się na GitHubie
  3. matplotlib – strona domowa
  4. matplotlib – dokumentacja
  5. seaborn – strona domowa
  6. Pandas – Visualization

Tydzień 11. (2018-12-17)

–––

Godziny dziekańskie od godz. 16 :/

Tydzień 12. (2019-01-02)

Wnioskowanie statystyczne,
Cython

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, 14
  2. Kody z wykładu i laboratoriów oraz zestawy zadań znajdują się na GitHubie
  3. scikit-learn: Machine Learning in Python
  4. Cython
  5. zob. też: numba
  6. statsmodels
  7. scipy.stats
  8. scikit-learn: Density estimation
  9. rpy2 – access R from Python
  10. scikit-learn: Machine Learning in Python

Tydzień 13. (2019-01-07)

Wybrane algorytmy uczenia maszynowego

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 laboratoriów oraz zestawy zadań znajdują się na GitHubie
  3. scikit-learn: Machine Learning in Python
  4. Na przyszłość: zobacz listę pozostałych SciKits

Tydzień 14. (2019-01-14)

Obliczenia na tensorach przy użyciu Theano i TensorFlow

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

Tydzień 15. (2019-01-21)

Oddawanie pracy domowej nr 4 (prezentacje studentów)