Przetwarzanie danych ustrukturyzowanych

aka Structured Data Processing

Studia inżynierskie, II sem., Inżynieria i Analiza Danych (Data Science), Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej

The aim of this subject is to learn a variety of methods for processing structured data (vectors, matrices, data frames) or data that can be converted into structured form (e.g., text). This includes programming in R and Python (numpy, scipy, pandas, matplotlib, seaborn, scikit-learn), learning how to extract data of different types and from different sources, store and retrieve them, clean them by identifying outliers/anomalies, apply sampling techniques, handle missing data, transform, select and extract features, perform exploratory analysis, visualise using various tools, summarise data appropriately, perform basic statistical analysis, and model using basic machine learning algorithms. You will also learn techniques for maintaining data privacy and ethics in data manipulation.

Plan zajęć i program przedmiotu

Semestr letni 2024/2025:

  • Wykład (+ „godzina wychowawcza” dla IAD): poniedziałki, 12:15–14:00, s. 328 MiNI

  • Laboratoria i projekt: poniedziałki, 15:15–17:30

    • dr hab. inż. Marek Gągolewski, prof. uczelni (grupa „zaawansowana”), s. 218 MiNI

    • inż. Szymon Maksymiuk, s. 219 MiNI

    • dr Barbara Żogała-Siudem, s. 203 MiNI

    • mgr inż. Łukasz Brzozowski (grupa „podstawowa”), s. 217 MiNI

Konsultacje z prowadzącymi odbywają się w godzinach projektowych. Polecamy też kontakt przez M$ Teams.

Data

Wykład

Laboratoria i projekt

  1. 2025-02-24

  1. 2025-03-03

  • Wektory w numpy cz. II

    • funkcje agregujące

    • zwektoryzowane funkcje matematyczne

    • operatory arytmetyczne, logiczne, relacyjne

    • indeksowanie wektorów

    • inne zwektoryzowane funkcje

  • Lektura obowiązkowa:

  • Wektory w numpy cz. I – zestaw zadań nr 1

  1. 2025-03-10

  • Macierze w numpy

    • reprezentacja macierzy („płaskie” wektory…)

    • tworzenie macierzy

    • operacje na macierzach (agregacja, operatory arytmetyczne, indeksowanie)

  • Lektura obowiązkowa:

  • Wektory w numpy cz. II – zestaw zadań nr 1 (cd.)

  1. 2025-03-17

  • Sprawdzian I (15 p.): wektory w numpy

  1. 2025-03-24

  • …to do… (pandas cz. II)

TODO (później): podrozdz. 4.3 i 5.1, rozdz. 6, 8.6, 9

  • Macierze w numpy – zestaw zadań nr 2

  1. 2025-03-31

  • …to do…

  • Sprawdzian II (15 p.): macierze w numpy

  1. 2025-04-07

  • …to do…

  • …to do… (pandas cz. I)

  1. 2025-04-14

  • …to do… (R cz. I)

  • …to do… (pandas cz. II)

  1. 2025-04-28

  • …to do… (R cz. II)

  • Sprawdzian III (15 p.): ramki danych w pandas

  1. 2025-05-05

  • …to do… (R cz. III)

  • …to do… (R cz. I)

  1. 2025-05-12

  • …to do… (R cz. IV)

  • …to do… (R cz. II)

  1. 2025-05-19

  • …to do… (metody przetwarzania i analizy danych cz. I)

  • Sprawdzian IV (15 p.)

  1. 2025-05-26

  • …to do… (metody przetwarzania i analizy danych cz. II)

  • …to do… (metody przetwarzania i analizy danych)

  1. 2025-06-02

  • …to do… (metody przetwarzania i analizy danych cz. III)

  • Sprawdzian V (15 p.)

  1. 2025-06-09

  • …to do… (niestandardowa ewaluacja w R)

  • Termin przesłania projektów (prezentacje w PDF, kod źródłowy, wyniki pośrednie): 2025-06-08

  • Prezentacje projektów (10 min. na grupę dwuosobową, 15 min. na grupę trzyosobową + 5 min. dyskusja) w godz. 15:15–18:00 (25 p.)

Regulamin i zasady zaliczenia

Na zaliczenie składają się:

  • pięć sprawdzianów na laboratoriach (po 15 p. każdy), w ramach których studenci rozwiązują po kilka problemów różnego typu: pytania teoretyczne (z wykładu i literatury obowiązkowej), zadania programistyczne, generowanie wykresów, analiza danych, opis wyników, dyskusja itp. Zadania rozwiązywane są na komputerach laboratoryjnych pod Linuxem.

  • zespołowy projekt analizodanowy (w grupach 2- lub 3-osobowych) z prezentacją wyników (25 p.). Można skorzystać z własnego laptopa.

Podczas sprawdzianów można jedynie korzystać z edytora plików, wbudowanej dokumentacji (help() do pakietów Python i R oraz man) oraz jednej odręcznie zapisanej kartki A4 („ściągawki”). Nie można otwierać żadnych plików poza tymi, które polecenie pozwala edytować.

Nie można korzystać z żadnych dodatkowych urządzeń elektronicznych ani programów. Dostęp do zewnętrznych stron internetowych lub użycie narzędzi typu GenAI (ChatGPG, Copilot, DeepSeek itp.) będzie uznane za ściąganie. Na Wydziale MiNI kształcimy przyszłych liderów branży, których nie zastąpi sztuczna „inteligencja”.

Przesyłane kody źródłowe (skrypty, notatniki itp.) muszą być wolne od błędów (nie wrzuca się na produkcję niedziałających programów!) oraz powinny dać się uruchomić od początku do końca. Fragmenty, których poprawności nie da się ocenić z powodu błędów w kodzie, będą ocenione na 0.

Zgodnie z Regulaminem Studiów w Politechnice Warszawskiej (par. 19 ust. 4), jeżeli podczas weryfikacji osiągnięcia efektów uczenia się zostanie stwierdzona niesamodzielność pracy studenta lub korzystanie przez niego z materiałów lub urządzeń innych niż dozwolone w regulaminie przedmiotu, student uzyskuje ocenę niedostateczną i traci prawo do zaliczenia przedmiotu w jego bieżącej realizacji.

Za każdą nieusprawiedliwioną nieobecność (np. formalnym zaświadczeniem lekarskim) obniża się wynik łączny o 5 p.

Wyniki sprawdzianów ogłaszane będą na kanale przedmiotu w M$ Teams.

Ocena końcowa jest funkcją sumy uzyskanych punktów: wynik ≤50 p. oznacza ocenę 2,0; (50, 60] – 3,0; (60, 70] – 3,5; (70, 80] – 4,0; (80, 90] – 4,5; >90 – 5,0.

Literatura

Materiały dydaktyczne są dostępne na kanale przedmiotu w M$ Teams.

Obowiązkowa:

  1. Gągolewski M., Minimalist Data Wrangling with Python, 2025

  2. Gągolewski M., Deep R Programming, 2025

Dodatkowa:

  1. R Development Core Team, An Introduction to R, 2025

  2. R Development Core Team, Writing R Extensions, 2025

  3. R Development Core Team, R Data Import/Export, 2025

  4. McKinney W., Python for Data Analysis, O’Reilly, 2022

  5. Aggarwal C.C., Data Mining: The Textbook, Springer, 2015

  6. Deisenroth M.P., Faisal A.A., Ong C.S., Mathematics for Machine Learning, Cambridge University Press, 2020

  7. Gagolewski M., stringi: Fast and portable character string processing in R, Journal of Statistical Software, 103(2):1–59, 2022, DOI:10.18637/jss.v103.i02

  8. Wickham H., The split-apply-combine strategy for data analysis, Journal of Statistical Software, 40(1):1–29, 2011, DOI:10.18637/jss.v040.i01

  9. Wickham H., Tidy data, Journal of Statistical Software, 59(10):1–23, 2014, DOI:10.18637/jss.v059.i10

Oprogramowanie

  1. GNU/Linux

  2. Python + pakiety numpy, scipy, pandas, matplotlib, seaborn, scikit-learn, …

  3. R + pakiety knitr, stringi, …

  4. Code-OSS (VSCodium) oraz Jupyter

Konfiguracja środowiska wirtualnego

Utworzenie środowiska wirtualnego (lokalnego repozytorium pakietów, ang. virtual environment) o nazwie python3-default oraz ustawienie jego automatycznej aktywacji:

python3 -m venv ~/.virtualenvs/python3-default
source ~/.virtualenvs/python3-default/bin/activate
echo 'export PYTHONNOUSERSITE=1' >> ~/.bashrc
echo 'VIRTUAL_ENV_DISABLE_PROMPT=1 source ~/.virtualenvs/python3-default/bin/activate' >> ~/.bashrc

Instalacja wymaganych pakietów:

python3 -m pip install ewmh mss  # dla Fairgo, zob. niżej
python3 -m pip install ipykernel
python3 -m ipykernel install --user

Fairgo

System Fairgo (czyli każdy ma równe szanse) przesyła prowadzącym podczas zadań punktowanych m.in. następujące dane:

  • to, co się dzieje na ekranie (zrzuty),

  • wszystkie uruchomione aplikacje, tytuły otwartych okien,

  • uprawnienia dostępu do plików (inni nie mogą czytać),

  • zainstalowane wtyczki Code-OSS,

  • zainstalowane pakiety Pythona i R,

  • pliki, nad którymi pracujemy.

Uruchomienie skryptu (ścieżka będzie się zmieniać):

mkdir -p ~/Desktop/pdu/lab01  # przykładowo
cd ~/Desktop/pdu/lab01  # to musi być pusty katalog
python3 /home2/samba/gagolewskim/pdu/fairgo.py X

Skrypt utworzy w katalogu bieżącym kilka plików, które możemy edytować. Będą one automatycznie przesyłane prowadzącemu.

Code-OSS (VSCodium, VSCode)

Na komputerach laboratoryjnych mamy zbyt starą wersję Code. Nowe VSCodium będzie najłatwiej zdobyć w ten sposób:

ln -s /home2/samba/gagolewskim/pdu/VSCodium.AppImage ~/Desktop/VSCodium

Teraz VSCodium startujemy albo z odpowiedniego katalogu:

cd ~/Desktop/pdu/lab01  # przykładowy katalog na laboratoria
~/Desktop/VSCodium .  # startujemy z katalogu bieżącego

albo klikamy VSCodium na pulpicie i wybieramy File → Open Folder (katalog, w którym będziemy pracować).

Instalujemy wymagane wtyczki (extensions) (takie i żadne inne!):

  • python (ms-python.python)

  • jupyter (ms-toolsai.jupyter)

Konfigurujemy Code:

  • CTRL+SHIFT+P → Python: Select Interpreter → python3-default

  • CTRL+SHIFT+P → Jupyter: Select Interpreter to Start Jupyter Server → python3-default