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

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

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

Tydzień 3. (2017-03-08)

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 GitLabie
  2. Gągolewski M., Programowanie w języku R, Wydawnictwo Naukowe PWN, wyd. 2, Warszawa, 2016 – rozdz. 4,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-20, godz. 23:59.

Tydzień 8. (2017-04-19)

@TODO / zaczynamy Pythona

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-20, godz. 23:59.

Tydzień 9. (2017-04-26)

Tydzień 10. (2017-05-10)

Tydzień 11. (2017-05-17)

Tydzień 12. (2017-05-24)

Tydzień 13. (2017-05-31)

Tydzień 14. (2017-06-07)

Tydzień 15. (2017-06-14)