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 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
TODO (później): podrozdz. 4.3 i 5.1, rozdz. 6, 8.6, 9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
Gągolewski M., Minimalist Data Wrangling with Python, 2025
Gągolewski M., Deep R Programming, 2025
Dodatkowa:
R Development Core Team, An Introduction to R, 2025
R Development Core Team, Writing R Extensions, 2025
R Development Core Team, R Data Import/Export, 2025
McKinney W., Python for Data Analysis, O’Reilly, 2022
Aggarwal C.C., Data Mining: The Textbook, Springer, 2015
Deisenroth M.P., Faisal A.A., Ong C.S., Mathematics for Machine Learning, Cambridge University Press, 2020
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
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
Wickham H., Tidy data, Journal of Statistical Software, 59(10):1–23, 2014, DOI:10.18637/jss.v059.i10
Oprogramowanie¶
GNU/Linux
Python + pakiety numpy, scipy, pandas, matplotlib, seaborn, scikit-learn, …
R + pakiety knitr, stringi, …
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