Przetwarzanie danych w językach R i Python 2016/2017
(Data Processing in R and Python)
Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej, przedmiot kierunkowy, studia mgr., kier. Informatyka, specjalność Przetwarzanie i analiza danych (Data Science)

Informacje ogólne

Wykład*: dr inż. Marek Gągolewski śr., 16-18, s. 102
Laboratoria: mgr inż. Maciej Bartoszuk wt., 8-10, s. 219
śr., 12-14, s. 218
mgr Norbert Ryciak czw., 18-20, s. 219

* Konsultacje: poniedziałki i środy (pok. 420).

W trakcie kursu omawiamy najbardziej przydatne w pracy analityka danych techniki programowania w językach R i Python 3. W ramach zajęć uzyskujemy praktyczną umiejętność zbierania i przygotowywania danych do analizy oraz stosowania i implementacji wybranych algorytmów uczenia maszynowego. W trakcie zajęć poświęcamy także należytą uwagę sposobom przetwarzania dużych zbiorów danych (filtrowanie danych, agregacja danych w podgrupach, złączenia) przy użyciu m.in. Apache Spark.

Harmonogram zajęć

Wymagane oprogramowanie

Sugerowana literatura

R:
  1. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016
  2. Wickham H., Advanced R, Chapman & Hall/CRC, 2014
  3. Wickham H., Grolemund G., R for Data Science, O'Reilly, 2017
  4. Eddelbuettel, D., Seamless R and C++ integration with RCpp, Springer, 2013
  5. Chambers J.M., Programming with Data, Springer, 1998 (The Green Book)
  6. Venables W.N., Ripley B.D., S Programming, Springer, 2000
  7. Abelson H., Sussman J., Sussman G.J., Struktura i interpretacja programów komputerowych, WNT, Warszawa, 2002
Python:
  1. Gągolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016
  2. Lutz M., Learning Python, O'Reilly Media, 2013
  3. VanderPlas J., Python Data Science Handbook: Essential Tools for Working with Data, O'Reilly, 2016
  4. McKinney W., Python for Data Analysis. Data Wrangling with Pandas, NumPy, and IPython, O'Reilly Media, 2012
  5. Richert W., Coelho L.P., Building Machine Learning Systems with Python, Packt Publishing, 2013
  6. Bressert E., SciPy and NumPy, O'Reilly Media, 2012

Tydzień 1. (2017-02-22)

Wykład

  • Klasyfikacja typów danych w R
  • Podstawowe typy atomowe: Wektory i NULL
  • Operacje na wektorach atomowych: operatory arytmetyczne, logiczne i relacyjne

Laboratoria

  • Organizacja pracy w RStudio
  • Język Markdown
  • Tworzenie raportów przy użyciu pakietu knitr
  • Skrypty w plikach .R

Zwracamy uwagę na funkcję source(). Możemy wywoływać ją w plikach .R i dokumentach knitra.

Zachęcamy do pracy w stylu: każde „duże zadanie” (np. praca domowa) – osobne projekt w RStudio.

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)

  3. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 1,2,13
  4. Dokumentacja RStudio (szczególnie warty przeczytania jest punkt skróty klawiszowe)
  5. Markdown intro
  6. Markdown basics @ GitHub
  7. RMarkdown basics @ RStudio
  8. RMarkdown output formats @ RStudio
  9. Pandoc
  10. knitr chunk options

Tydzień 2. (2017-03-01)

Wykład

  • Operacje na wektorach atomowych: zwektoryzowane funkcje matematyczne, filtrowanie danych, agregacja danych itp.
  • Listy

Laboratoria

  • Rozwiązywanie zadań z zestawu nr 1 (operacje na wektorach atomowych) – cz. 1

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 3, 4

Tydzień 3. (2017-03-08)

Wykład

  • Funkcje
  • Atrybuty obiektów

Laboratoria

  • Rozwiązywanie zadań z zestawu nr 1 (operacje na wektorach atomowych) – cz. 2

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 5, 6

Zadajemy pracę domową nr 1 (za 10 p.) – operacje na wektorach atomowych – termin oddania: 2017-03-16, godz. 23:59.

Tydzień 4. (2017-03-15)

Wykład

  • Macierze
  • Czynniki (ang. factors)
  • Ramki danych
i inne typy złożone.

Laboratoria

  • Rozwiązywanie zadań z zestawu nr 2 (operacje na macierzach i ramkach danych) – cz. 1

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 7

Oddajemy pracę domową nr 1 (za 10 p.) – operacje na wektorach atomowych – termin oddania: 2017-03-16, godz. 23:59.

Tydzień 5. (2017-03-22)

Wykład

  • Wyrażenia warunkowe, pętle, obsługa wyjątków
  • Przetwarzanie napisów

Laboratoria

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 8,9
  3. dplyr, tidyr i inne pakiety z rodziny tidyverse; por. też Wickham H., Grolemund G., R for Data Science, O'Reilly, 2017
  4. sqldf, RSQLite
  5. data.table (dla zainteresowanych)
  6. Jak widzimy, w R można robić te same rzeczy niestety na kilka różnych sposobów. Opanowanie „bazowych” operacji jest bardzo ważne, bo dzięki nim jesteśmy przygotowani na obróbkę ramek danych w każdy możliwy sposób. Przy użyciu np. bardzo popularnego pakietu dplyr (który poznajemy w ramach pracy domowej) możemy wygodniej realizować wiele „codziennych” operacji, jednak (jak sam autor przyznaje) nie wszystkie. W każdym razie pakiet ten „wypada” znać, bo będą się nimi zapewne posługiwali pracujący w naszych zespołach analitycy-nie-informatycy.

Zadajemy pracę domową nr 2 (za 15 p.) – dplyr – termin oddania: 2017-04-06, godz. 23:59.

Tydzień 6. (2017-03-29)

Wykład

  • Wyrażenia regularne – krótki acz wyczerpujący kurs
  • Obiekty reprezentujące datę i czas oraz operacje na nich

Laboratoria

  • Rozwiązywanie zadań z zestawu nr 3 (przetwarzanie napisów i plików, web scraping) – cz. 1

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 10,11
  3. regular-expressions.info
  4. Regular Expressions – ICU User Guide

Tydzień 7. (2017-04-05)

Wykład

  • Środowiska
  • Środowiskowy model obliczeń
  • Niestandardowa ewaluacja
  • Rcpp – szybkie wprowadzenie dla zaawansowanych programistów C++

Laboratoria

  • Rozwiązywanie zadań z zestawu nr 3 (przetwarzanie napisów i plików, web scraping) – cz. 2

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 17,18,20
  3. Wickham H., Advanced R, Chapman & Hall/CRC, 2014
  4. Abelson H., Sussman J., Sussman G.J., Struktura i interpretacja programów komputerowych, WNT, Warszawa, 2002
  5. rcpp.org
  6. Niestety (a może stety?) nie mamy czasu na omówienie technik programowania „obiektopodobnego” innego niż S3. Zainteresowani mogą sobie jednak poczytać więcej nt. klas S4, refClasses i R6 (zob. też rozdz. 19 mojej książki). Dwa ostatnie oparte są na poznanych podczas dzisiejszego wykładu środowiskach.

Oddajemy pracę domową nr 2 (za 15 p.) – dplyr – termin oddania: 2017-04-06, godz. 23:59.

Zadajemy pracę domową nr 3 (za 30 p.) – implementacja algorytmu k-nn w Rcpp i jego dogłębne przetestowanie na zbiorach benchmarkowych z regresji porządkowej – termin oddania: 2017-04-27, godz. 23:59.

Tydzień 8. (2017-04-19)

Wykład

  • Python – wprowadzenie
  • Typy skalarne
  • Typy sekwencyjne i iterowalne

Laboratoria

  • Jupyter – podstawy obsługi
  • Wprowadzenie do składni języka Python
  • Uruchamianie własnych skryptów i importowanie modułów

Materiały pomocnicze

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

Tydzień 9. (2017-04-26)

Wykład

  • Typy sekwencyjne i iterowalne – cd.
  • Słowniki i zbiory
  • Instrukcje sterujące
  • Obsługa wyjątków
  • Funkcje

Laboratoria

  • Rozwiązywanie zadań z zestawu nr 4 (czysty bazowy Python: skalary, listy, słowniki)

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 – rozdz. 5,6
  3. Modules – Python3 Tutorial
  4. More Control Flow – Python3 Tutorial

Oddajemy pracę domową nr 3 (za 30 p.) – implementacja algorytmu k-nn w Rcpp i jego dogłębne przetestowanie na zbiorach benchmarkowych z regresji porządkowej – termin oddania: 2017-04-27, godz. 23:59.

Zadajemy pracę domową nr 4 (za 30 p.) – tramwaje warszawskie: analiza danych przestrzenno-strumieniowych – termin oddania: 2017-06-01, godz. 23:59.

Tydzień 10. (2017-05-10)

Wykład

  • Numpy cz. 1

Laboratoria

  • Rozwiązywanie zadań z zestawu nr 5 (numpy)

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 – rozdz. 7
  3. NumPy – strona domowa
  4. NumPy – dokumentacja

Tydzień 11. (2017-05-17)

Wykład

  • Numpy cz. 2
  • Pandas cz. 1

Laboratoria

  • Rozwiązywanie zadań z zestawu nr 5 (numpy)

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 – rozdz. 7,8
  3. NumPy – dokumentacja
  4. SciPy – dokumentacja
  5. scikit-learn: Machine Learning in Python, zobacz także listę pozostałych SciKits
  6. pandas – strona domowa
  7. pandas cheat sheet

Tydzień 12. (2017-05-24)

Wykład

  • Pandas cz. 2

Laboratoria

  • Rozwiązywanie zadań z zestawu nr 6 (pandas)

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 – rozdz. 8
  3. pandas – strona domowa

Tydzień 13. (2017-05-31)

Wykład

  • Programowanie obiektowe
  • Cython
  • Łączenie Pythona z C/C++

Laboratoria

  • PySpark – wprowadzenie

Uwaga: Laboratoria 01.06 odbędą się 14.06 (zamiast 15. wykładu).

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Gągolewski M., Bartoszuk M., Cena A., Przetwarzanie i analiza danych w języku Python, Wydawnictwo Naukowe PWN, Warszawa, 2016 – rozdz. 16
  3. Classes – Python3 Tutorial
  4. Cython
  5. zob. też: numba
  6. Python/C API Reference Manual
  7. PySpark na Dockerze – jak skonfigurować środowisko
  8. Apache Spark
  9. Getting Started with Apache Spark – ebook by James A. Scott [pdf]
  10. PySpark API Documentation

Oddajemy pracę domową nr 4 (za 30 p.) – tramwaje warszawskie: analiza danych przestrzenno-strumieniowych – termin oddania: 2017-06-01, godz. 23:59.

Zadajemy pracę domową nr 5 (za 15 p.) – Pandas & PySpark – termin oddania: 2017-06-15, godz. 23:59.

Tydzień 14. (2017-06-07)

Wykład

  • Theano i TensorFlow

Laboratoria

  • Praca domowa nr 4 – prezentacje cz. 1 (grupy dwuosobowe)

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie
  2. Theano
  3. TensorFlow
  4. zob. też. PyTorch

Tydzień 15. (2017-06-14)

Wykład

  • Wykład odwołany (jako że większość poprzednich przedłużaliśmy 15 minut)

Laboratoria

  • Praca domowa nr 4 – prezentacje cz. 2 (grupy dwuosobowe)

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitLabie

Oddajemy pracę domową nr 5 (za 15 p.) – Pandas & PySpark – termin oddania: 2017-06-15, godz. 23:59.