Skip to content
This repository was archived by the owner on Jan 2, 2026. It is now read-only.

rbuj-UOC/M2.951-PRACTICA

Repository files navigation

Obtenció de dades metrològiques

Integrants del grup

  • Nora Bolivar López
  • Robert Buj Gelonch

Estructura del repositori

  • .vscode/: carpeta amb la configuració de Visual Studio Code.
    • extensions.json: llista d’extensions recomanades.
    • settings.json: preferències personalitzades de l’entorn de desenvolupament.
  • backup/
    • dataset.tar.xz: arxiu del dataset sense cap preprocessament, que s'ha obtingut amb l'execució de l'script boost.sh. Veure fitxer logs.tar.zst.
    • logs.tar.zst: arxiu amb registres de l'execució de l'scrapper amb l'script boost.sh.
  • report/
    • columns.css: full d'estil per al fitxer informe.Rmd.
    • header.tex: fitxer amb codi TeX per al fitxer informe.Rmd.
    • informe.Rmd: fitxer R Markdown per fer la neteja i l'anàlisi del conjunt de dades.
  • scripts/
    • boost.sh: script per executar el procés de scraping en paral·lel.
    • compress.sh: script per comprimir el directori de treball, el dataset o els registres.
    • informe.sh: script per generar l'informe en format pdf o html, o bé ambdós.
    • init.sh: script per preparar l'entorn virtual amb venv i instal·lar les dependències.
  • source/: carpeta amb el codi font del projecte.
    • main.py: punt d’entrada del programa. Inicia el procés de web scraping.
    • scraper.py: implementa la classe MeteoScraper, que genera el conjunt de dades a partir de les dades observades i les estacions disponibles.
    • simple_analysis.py: primer anàlisi del conjunt de dades recollit.
  • .gitignore: especifica els fitxers i directoris que Git ha d’ignorar en els commits.
  • .editorconfig: fitxer de configuració per a editors de text compatibles amb EditorConfig com ara Visual Studio Code.
  • LICENSE: fitxer amb la llicència amb la que es publica el codi.
  • README.md: fitxer amb la documentació general del projecte.
  • environment.yml: fitxer per crear un entorn virtual amb conda i instal·lar les dependències.
  • requirements.txt: fitxer amb les dependències del projecte.

Conjunts de dades

Tots els fitxers dels conjunts de dades estan a la carpeta dataset.

Els fitxers station_list.csv i [CODI]_[DIA].csv s'obtenen en l'etapa de web scraping. També es poden obtenir de la carpeta backup.

El fitxer dataset.csv es pot obtenir amb el web scraping o bé, amb l'execució de python3 source/main.py -wuna vegada descomprimit l'arxiu backup/dataset.tar.xz.

El fitxer dataset_data_analysis.csv s'obté en renderitzar el fitxer informe.Rmd.

Requisits

  • Python 3.9 o superior
  • bash shell >= 4.3 (wait -n en l'script boost.sh)
  • Biblioteques de Python:
    • pandas: per al processament de dades
    • selenium: per al web scraping
  • Altres biblioteques de Python, incloses a la biblioteca estàndard:
    • argparse: per al processament d'arguments de línia d'ordres
    • datetime: per al maneig de dates i hores
    • os: per a la interacció amb el sistema operatiu
    • re: per a l'ús d'expressions regulars
    • time: per a funcions relacionades amb el temps
  • Visual Studio Code: baixar (opcional)
    • shfmt és necessari per donar format als scripts, en entorns macos es pot instal·lar amb l'ordre: baixar (opcional)
brew install shfmt

Utilització del codi

L'avantatge d'utilitzar un entorn virtual és que permet aïllar les dependències del projecte de les del sistema operatiu, evitant conflictes entre diferents projectes i versions de biblioteques.

Per utilitzar el codi, primer cal preparar l'entorn virtual i instal·lar les dependències. Es pot utilitzar venv o conda per crear l'entorn virtual.

Un cop creat i activat l'entorn virtual, ja es pot executar el codi.

Tip

Podeu utilitzar l'script init.sh per automatitzar la creació de l'entorn virtual amb venv i la instal·lació de les dependències.

Note

Podeu utilitzar l'extensió de Visual Studio Code Python per gestionar entorns virtuals i executar codi Python dins de l'editor. Per crear un entorn virtual amb venv o conda, accediu a la paleta d'ordres (Ctrl+Shift+P o Cmd+Shift+P a macOS) i escriviu "Python: Create Environment".

Important

Si voleu canviar l'intèrpret de Python utilitzat per Visual Studio Code, podeu fer-ho des de la paleta d'ordres (Ctrl+Shift+P o Cmd+Shift+P a macOS) escrivint "Python: Select Interpreter" i seleccionant l'intèrpret de l'entorn virtual que heu creat. Cal tenir en compte que l'intèrpret se seleccionarà automàticament amb l'entorn virtual quant aquest s'hagi creat amb l'extensió comentada en la nota anterior.

Entorn virtual amb venv

Creació de l'entorn virtual amb venv

Per crear un entorn virtual amb venv, executeu la següent ordre al directori arrel del projecte:

python3 -m venv .venv

Per tal d'assegurar que l'entorn virtual s'ha creat correctament, podeu comprovar que el directori .venv/ s'ha creat al directori arrel del projecte.

Tip

En macos, python ja inclou venv per defecte. En altres sistemes operatius, pot ser necessari instal·lar el paquet python3-venv. Per exemple, en sistemes basats en Debian/Ubuntu, podeu instal·lar-lo amb l'ordre següent:

sudo apt-get install python3-venv

Activació i desactivació de l'entorn virtual amb venv

Per activar l'entorn virtual, executeu la següent ordre:

source .venv/bin/activate

Per a desactivar l'entorn virtual, executeu la següent ordre:

deactivate

Instal·lació i actualització de dependències amb venv

Per a instal·lar les biblioteques de Python es pot utilitzar el fitxer requirements.txt amb l'ordre:

python3 -m pip install -r requirements.txt

Si no voleu utilitzar el fitxer requirements.txt, podeu instal·lar les biblioteques necessàries amb la següent ordre després d'activar l'entorn virtual:

python3 -m pip install pandas selenium --upgrade pip

Un cop instal·lades les dependències, es poden actualitzar amb l'ordre:

python3 -m pip install --upgrade pandas selenium

Important

Assegureu-vos d'estar dins de l'entorn virtual abans d'instal·lar o actualitzar les dependències.

Entorn virtual amb conda

Creació de l'entorn virtual amb conda

Per crear un entorn virtual amb conda, executeu la següent ordre al directori arrel del projecte:

conda env create --prefix=./.conda --file=environment.yml
conda activate ./.conda
Rscript -e 'install.packages("VIM", repos="https://cloud.r-project.org")'

Per tal d'assegurar que l'entorn virtual s'ha creat correctament, podeu comprovar que el directori .conda/ s'ha creat al directori arrel del projecte.

Note

Si no voleu utilitzar el fitxer environment.yml, podeu crear l'entorn virtual amb les següents ordres:

conda create --prefix=./.conda
conda activate ./.conda
conda install pip pandas selenium r-base=4.5.2 r-car r-caret r-corrplot \
    r-factoextra r-ggplot2 r-dplyr r-kableextra r-knitr r-languageserver \
    r-magick r-moments r-rann r-rmarkdown r-tidyverse \
    r-deoptimr r-laeken r-ranger r-robustbase r-sp r-vcd r-xgboost
Rscript -e 'install.packages("VIM", repos="https://cloud.r-project.org")'

Dependències de VIM: r-deoptimr, r-laeken, r-ranger, r-robustbase, r-sp, r-vcd i r-xgboost

Tip

Miniconda requereix menys espai i és més lleuger que Anaconda. Per a instal·lar Miniconda en sistemes macOS, podeu utilitzar Homebrew:

brew install --cask miniconda
conda init
conda config --set auto_activate_base False
source ~/.bash_profile
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

Activació i desactivació de l'entorn virtual amb conda

Per activar l'entorn virtual, executeu la següent ordre:

conda activate ./.conda

Per a desactivar l'entorn virtual, executeu la següent ordre:

conda deactivate

Tip

Per canviar el prompt de l'entorn virtual i que mostri el nom de l'entorn, un cop activat, podeu executar la següent ordre per escurçar-lo:

conda config --set env_prompt '({name}) '

Actualització de dependències amb conda

Un cop instal·lades les dependències, es poden actualitzar amb l'ordre:

conda update pandas selenium

Important

Assegureu-vos d'estar dins de l'entorn virtual abans d'actualitzar les dependències.

Execució del codi

Per baixar les dades de les estacions de l'ultim any fins al 3 de desembre de 2025:

python3 source/main.py -d 365 -b 03.12.2025 -m
python3 source/main.py -w

En cas que no es vulguin baixar les dades i es desitgi utilitzar el dataset comprimit:

tar xvfa ./backup/dataset.tar.xz
python3 source/main.py -w

Per consultar els arguments opcionals de l'aplicació:

$ python3 source/main.py -h
usage: main.py [-h] [-b BEGIN_DATE] [-d DAYS] [-w] [-m] [-o OUTPUT]

Meteo.cat scraper

optional arguments:
  -h, --help            show this help message and exit
  -b BEGIN_DATE, --begin-date BEGIN_DATE
                        The start date for data scraping (format: DD.MM.YYYY)
  -d DAYS, --days DAYS  Number of days to scrape
  -w, --skip-download   Skip the downloading of data files
  -m, --skip-merge      Do not merge the data files into a single CSV
  -o OUTPUT, --output OUTPUT
                        Output CSV file

Neteja i anàlisi del conjunt de dades

Per obtenir el conjunt de dades que s'ha utilitzat en la realització d'aquest informe, un cop activat l'entorn virtual conda, executeu les ordres següents:

tar xzvf ./backup/dataset.tar.xz
python3 source/main.py -w

Per obtenir l'informe en format pdf, executeu la següent ordre:

Rscript -e "rmarkdown::render('informe.Rmd', output_format = 'pdf_document')"

o bé, aquesta altra ordre per obtenir l'enforme en format html:

Rscript -e "rmarkdown::render('informe.Rmd', output_format = 'html_document')"

Tip

En MacOS, per renderitzar el fitxer R Markdown a PDF, cal instal·lar MacTeX i pandoc. pandoc es pot instal·lar amb Homebrew:

brew install pandoc

DOI de Zenodo

Bolivar, N. i Buj, R. (2025) «Dades recollides per la xarxa d'estacions meteorològiques automàtiques del servei meteorològic de Catalunya de l'últim any». Zenodo. doi:10.5281/zenodo.17505763

About

PRÀCTICA de l'assignatura Tipologia i cicle de vida de les dades del Màster universitari de Ciència de Dades

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •