Przetwarzanie i analiza danych w języku Python 2016/2017
(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): dr inż. Marek Gągolewski wt., 16-18, s. 216
wt., 18-20, s. 219

Uczestnicy kursu mają możliwość dogłębnego poznania technik programowania w języku Python oraz najbardziej popularnych i użytecznych bibliotek tegoż języka przydatnych podczas przeprowadzania m.in. obliczeń numerycznych naukowych, symulacji i analizy danych.

Szczególny nacisk kładziemy 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. Poruszamy także zagadnienia związane z tworzeniem ekonomicznego, przenośnego i łatwego w zarządzaniu kodu.

Harmonogram zajęć

Wymagane oprogramowanie

Korzystamy z Pythona 3.5 (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).

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.

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. (2016-10-04)

Praca z notatnikami Jupyter,
Markdown,
Typy skalarne w Pythonie

Materiały pomocnicze:
  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. 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 GitLaba
    
  4. Pobieramy repozytorium padpy1617:
    cd ~/katalog1/katalog2 # gdzie chcemy skopiowac pliki, uwaga: / a nie \
    git clone https://gitlab.com/gagolews/padpy1617.git # utworzony zostanie katalog padpy1617
    
  5. Za każdym razem, gdy chcemy mieć najnowszą wersję:
    cd ~/katalog1/katalog2/padpy1617
    git pull origin master
    

Tydzień 2. (2016-10-10)

Typy sekwencyjne i iterowalne,
Słowniki

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Built-in Types – Python3 Documentation
  3. Data Structures – Python3 Tutorial

Tydzień 3. (2016-10-18)

Zbiory,
Instrukcje sterujące,
Funkcje,
Podstawowe polecenia w powłoce (bash),
Skrypty, moduły, pakiety

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Modules – Python3 Tutorial
  3. More Control Flow – Python3 Tutorial
  4. Learning the Linux Shell
  5. Bash Beginners Guide
  6. Bash Programming HOW-TO

Praca domowa nr 1 (mała – Python intro) – termin oddania: 28.10.2016.

Tydzień 4. (2016-10-25)

Programowanie obiektowe,
NumPy: wektory, macierze i inne tablice

Wykład wyjątkowo zaczynamy o godz. 16:30.

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Classes – Python3 Tutorial
  3. NumPy – strona domowa
  4. NumPy – dokumentacja
  5. pygame (zob. pracę domową nr 3)

Tydzień 5. (2016-11-08)

NumPy – cd.,
SciPy – przegląd narzędzi

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. NumPy – dokumentacja
  3. SciPy – dokumentacja
  4. zob. też: Theano, TensorFlow

Tydzień 6. (2016-11-15)

Pandas – ramki danych

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. pandas – strona domowa
  3. pandas cheat sheet

Praca domowa nr 2 (mała – NumPy) – termin oddania: 18.11.2016.

Tydzień 7. (2016-11-22)

Pandas – cd.

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. pandas – strona domowa

Tydzień 8. (2016-11-29)

Przetwarzanie napisów,
Dostęp do baz danych SQL i web scraping przy użyciu Pandas

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. string – Common String Operations
  3. re
  4. pandas – Working With Text Data

Praca domowa nr 3 (duża – gra) – termin oddania: 02.12.2016.

Tydzień 9. (2016-12-06)

Przetwarzanie plików,
API, JSON, serializacja obiektów itp.,
Parsowanie XML i web scraping (ogólnie)

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Input and Output – Python3 Tutorial
  3. pickle
  4. json
  5. lxml
  6. requests
  7. cssselect

Tydzień 10. (2016-12-13)

Dostęp do baz danych SQL (ogólnie),
Wizualizacja danych (matplotlib, seaborn, pandas)

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. sqlite3
  3. matplotlib – strona domowa
  4. matplotlib – dokumentacja
  5. seaborn – strona domowa
  6. Pandas – Visualization

Praca domowa nr 4 (duża – Pandas i SQL) – termin oddania: 16.12.2016.

Tydzień 11. (2016-12-20)

Wnioskowanie statystyczne

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. statsmodels
  3. scipy.stats
  4. scikit-learn: Density estimation
  5. rpy2 – access R from Python

Tydzień 12. (2017-01-03)

Wnioskowanie statystyczne – cd.
Wybrane algorytmy uczenia maszynowego

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

Tydzień 13. (2017-01-10)

Wybrane algorytmy uczenia maszynowego – cd.

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie

Praca domowa nr 5 (duża – API, przestrzenne dane strumieniowe: tramwaje) – termin oddania: 13.01.2017.

Tydzień 14. (2017-01-17)

Wybrane algorytmy uczenia maszynowego – cd.

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie

Tydzień 15. (2017-01-24)

Cython

Materiały pomocnicze:
  1. kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Cython
  3. zob. też: numba

Praca domowa nr 6 (duża – StackExchange) – termin oddania: 27.01.2017.