CSZ – Przetwarzanie i analiza danych w języku Python 2018/2019
(Python for Data Processing and Analysis)
Centrum Studiów Zaawansowanych Politechniki Warszawskiej, studia doktoranckie

Informacje ogólne

Wykład: dr hab. inż. Marek Gągolewski, prof. PW wt., 12-14, Gmach Główny PW, s. 226

Uczestnicy kursu mają możliwość dogłębnego poznania technik programowania w języku Python oraz najbardziej przydatnych pakietów z punktu widzenia przetwarzania, wizualizacji i analizy danych (np. podczas opracowywania wyników własnych badań empirycznych lub symulacyjnych do publikacji). Nabywają nie tylko umiejętność stosowania, ale także samodzielnej implementacji wybranych algorytmów uczenia maszynowego (np. sieci neuronowych) m.in. przy użyciu wysokopoziomowych operacji na tensorach. W trakcie wykładu zostaną omówione najpopularniejsze algorytmy analizy skupień, klasyfikacji i regresji.

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++
  • Metody numeryczne
  • Rachunek prawdopodobieństwa i statystyka

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-09)

Środowisko pracy (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. Notatniki z wykładu 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

Tydzień 2. (2018-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. Notatniki z wykładu znajdują się na GitHubie
  3. Built-in Types – Python3 Documentation
  4. Data Structures – Python3 Tutorial

Tydzień 3. (2018-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. Notatniki z wykładu 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-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. Notatniki z wykładu znajdują się na GitHubie
  3. Classes – Python3 Tutorial
  4. NumPy – strona domowa
  5. NumPy – dokumentacja

Tydzień 5. (2018-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. Notatniki z wykładu znajdują się na GitHubie
  3. NumPy – dokumentacja

Tydzień 6. (2018-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. Notatniki z wykładu znajdują się na GitHubie
  3. pandas – strona domowa
  4. pandas cheat sheet

Tydzień 7. (2018-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. Notatniki z wykładu znajdują się na GitHubie
  3. pandas – strona domowa

Tydzień 8. (2018-11-27)

@PLANNED:
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. Notatniki z wykładu 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. (2018-12-04)

@PLANNED:
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. Notatniki z wykładu 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. (2018-12-11)

@PLANNED:
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. Notatniki z wykładu 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. (2018-12-18)

@PLANNED:
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. Notatniki z wykładu znajdują się na GitHubie

Tydzień 12. (2019-01-08)

@PLANNED:
Cython,
Wybrane algorytmy uczenia maszynowego (bez nadzoru)

Materiały pomocnicze:
  1. Notatniki z wykładu znajdują się na GitHubie
  2. scikit-learn: Machine Learning in Python
  3. Cython
  4. zob. też: numba

Tydzień 13. (2019-01-15)

@PLANNED:
Wybrane algorytmy uczenia maszynowego (z nadzorem)

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

Tydzień 14. (2019-01-22)

@PLANNED:
Obliczenia na tensorach przy użyciu Theano i TensorFlow

Materiały pomocnicze:
  1. Notatniki z wykładu znajdują się na GitHubie
  2. Theano
  3. TensorFlow