Przetwarzanie danych w językach R i Python 2017/2018
(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: prof. nzw. dr hab. inż. Marek Gągolewski wt., 16-18, s. 102
Laboratoria: prof. nzw. dr hab. inż. Marek Gągolewski wt., 18-20, s. 218

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. (2018-02-20)

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 GitHubie
  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. (2018-02-27)

Wykład

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

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 GitHubie
  2. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 3, 4

Tydzień 3. (2018-03-06)

Wykład

  • Listy
  • 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 GitHubie
  2. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 5, 6

Tydzień 4. (2018-03-13)

Wykład

  • Atrybuty specjalne, podstawy programowania obiektowego w stylu S3
  • 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 GitHubie
  2. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 7

Tydzień 5. (2018-03-20)

Wykład

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

Laboratoria

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

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  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
  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.

Termin oddawania pracy domowej nr 1: 2018-03-23.

Tydzień 6. (2018-03-27)

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 2 (operacje na macierzach i ramkach danych) – cz. 3

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  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. (2018-04-10)

Wykład

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

Laboratoria

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  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.

Termin oddawania pracy domowej nr 2: 2018-04-13.

Tydzień 8. (2018-04-17)

Wykład

  • R – Niestandardowa ewaluacja
  • Python – wprowadzenie
  • Typy skalarne
  • Typy sekwencyjne i iterowalne

Laboratoria

Materiały pomocnicze

  1. Kody z wykładu i lab oraz zestawy zadań znajdują się na GitHubie
  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. (2018-04-24)

Wykład

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

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 GitHubie
  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

Termin oddawania pracy domowej nr 3: 2018-05-04.

Tydzień 10. (2018-05-08)

Wykład

  • Numpy cz. 1

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 GitHubie
  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. (2018-05-15)

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 GitHubie
  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. (2018-05-22)

Wykład

  • Pandas cz. 2

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 GitHubie
  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

Termin oddawania pracy domowej nr 4: 2018-05-25.

Tydzień 13. (2018-05-29)

Wykład

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

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 GitHubie
  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

Tydzień 14. (2018-06-05)

Wykład

  • Theano i TensorFlow cz. 1

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 GitHubie
  2. Theano
  3. TensorFlow
  4. zob. też. PyTorch

Tydzień 15. (2018-06-12)

Wykład

  • Theano i TensorFlow cz. 2

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 GitHubie

Termin oddawania pracy domowej nr 5: 2018-06-15.