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 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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”, a nie „wiecznych juniorów”.
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
za wyjątkiem rozdz. 6 (rozkłady prawdopodobieństwa), podrozdz. 12.2.6–7 (testowanie hipotez), 9.2 (regresja), 9.3 (analiza składowych głównych), 12.3 (klasyfikacja), 12.4 (analiza skupień)
Gągolewski M., Deep R Programming, 2025
za wyjątkiem rozdz. 14–17
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
RStudio
Konfiguracja środowiska wirtualnego¶
Sprzątamy po sobie:
rm -rf ~/.virtualenvs
rm -rf ~/.local/share/jupyter
rm -rf ~/.ipython
rm -rf ~/.vscode-oss
rm -rf ~/.config/VSCodium
rm -rf ~/.config/Code\ -\ OSS
Następnie edytujemy plik ~/.bashrc
i usuwamy z niego wiersze
export PYTHONNOUSERSITE=1
oraz VIRTUAL_ENV_DISABLE_PROMPT=1 source ~/.virtualenvs/python3-default/bin/activate
.
I teraz:
echo 'PATH=~/.local/bin:/opt/anaconda/bin:$PATH' >> ~/.bashrc
echo 'source /opt/anaconda/bin/activate' >> ~/.bashrc
Po tych czynnościach należy zamknąć i uruchomić ponownie terminal.
Instalacja wymaganych pakietów¶
python3 -m pip install numpy scipy pandas matplotlib seaborn
python3 -m pip install ewmh mss # dla Fairgo, zob. niżej
python3 -m pip install jupyter notebook ipykernel
python3 -m ipykernel install --user
Code-OSS (VSCode)¶
Uwaga: Nie korzystamy już z VSCodium. Laboratoryjne Code OSS zostało zaktualizowane.
Code OSS (VSCode) uruchamiamy z Menu Start 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 → base z
/opt/anaconda/bin/python
(Conda Env)CTRL+SHIFT+P → Jupyter: Select Interpreter to Start Jupyter Server → base z
/opt/anaconda/bin/python
(Conda Env)
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 # dostępne tylko w I tyg. zajęć
Skrypt utworzy w katalogu bieżącym kilka plików, które możemy edytować. Będą one automatycznie przesyłane prowadzącemu.