5.1 KiB
5.1 KiB
FASE 0 - Setup (semana 1)
Objetivo
Tener el entorno listo y los datos crudos descargados y validados, sin procesar. Al cerrar esta fase, git status muestra una estructura limpia y data/raw/ contiene los datasets originales descargados, cada uno abrible sin errores.
Tareas
Estructura de carpetas
- Crear en
/Users/ichi/Desktop/DEV/VIvienda/:data/raw/- datos originales, inmutablesdata/processed/- datasets intermediosdata/output/- parquet, tiles, JSONs finalesweb/- codigo Astrodocs/- PDFs, capturas, metodologia extendidascripts/- pipeline Python
Repositorio
git initen/Users/ichi/Desktop/DEV/VIvienda/- Crear
.gitignoreque ignore:data/raw/*.xlsxydata/raw/*.csv.gz(datos pesados)data/processed/data/output/node_modules/.venv/,__pycache__/.env,.env.local
- Hacer commit inicial con estructura +
.gitignore+ este PLAN - (Opcional) crear repo en GitHub y vincular
Reorganizacion de archivos existentes
- Mover
Info.pdfy los 19.jpgde la conferencia adocs/conferencia-OHIB-2025/ - Mover
viviendas vacias-hipotecas.xlsxy39365(1).xlsxadata/raw/ - Documentar el origen de cada archivo en
data/raw/ORIGEN.md
Entorno Python
- Instalar
uv(gestor de entornos y paquetes rapido) uv venv .venven la raiz del proyecto- Crear
requirements.txtcon: pandas, openpyxl, geopandas, duckdb, shapely, pyproj, fiona, pyarrow uv pip install -r requirements.txt- Verificar:
python -c "import geopandas, duckdb; print('OK')"
Entorno Node
- Instalar Node 20+ (con
nvmobrew) - Instalar pnpm (
npm install -g pnpm)
Descarga de datos externos
- Descargar shapefile de secciones censales de Balears desde INE
- Fuente: https://www.ine.es/prodyser/cartografia/seccionado_2025/
- Descargar las 4 provincias: Mallorca (07), Menorca (07), Eivissa (07), Formentera (07)
- Verificar que incluye geometria poligonal
- Descargar Inside Airbnb listings para las 4 islas
- Fuente: http://insideairbnb.com/get-the-data/
- Snapshot mas reciente disponible para: Mallorca, Menorca, Eivissa, Formentera
- Formato:
listings.csv.gz(revisar tamano y fecha)
Validacion
- Shapefile abre con geopandas, tiene CRS correcto, conteo de features > 0
- Listings CSV abre con pandas, columnas esperadas presentes
- XLSXs del usuario abren con openpyxl/pandas
- Anotar numero de filas de cada dataset en
data/raw/VALIDACION.md
Cierre
- Commit final con tag
fase-0-completa - Actualizar PLAN.md: marcar Fase 0 como completada
- Anotar problemas y decisiones en este documento
Comandos clave
# Estructura
cd /Users/ichi/Desktop/DEV/VIvienda
mkdir -p data/raw data/processed data/output web docs/conferencia-OHIB-2025 scripts
# Git
git init
git add .
git commit -m "chore: estructura inicial del proyecto"
# Python
brew install uv # o pipx install uv
uv venv .venv
source .venv/bin/activate
uv pip install pandas openpyxl geopandas duckdb shapely pyproj fiona pyarrow
# Node
brew install node pnpm # o nvm install 20 && npm i -g pnpm
# Validacion shapefile (despues de descargar)
python -c "import geopandas as gpd; gdf = gpd.read_file('data/raw/secciones_censales_balears.shp'); print(gdf.head()); print('CRS:', gdf.crs); print('Features:', len(gdf))"
# Validacion listings
python -c "import pandas as pd; df = pd.read_csv('data/raw/eivissa_listings.csv.gz', low_memory=False); print(df.shape); print(df.columns.tolist()[:20])"
# Validacion XLSX
python -c "import pandas as pd; df = pd.read_excel('data/raw/viviendas vacias-hipotecas.xlsx', sheet_name=None); print({k: v.shape for k, v in df.items()})"
Criterio de "fase terminada" (Definition of Done)
- Repo git inicializado con branch
main - Estructura de carpetas creada
.gitignorefuncionando (verificar congit status)- Entorno Python reproducible:
requirements.txtcon versiones pinneadas + instrucciones - Entorno Node instalado (Node 20+ + pnpm)
data/raw/contiene: 2 XLSXs INE + shapefile secciones censales Balears + listings Airbnb (4 archivos)- Cada archivo abre sin error y tiene el numero esperado de filas/features
data/raw/VALIDACION.mddocumenta conteos y CRS- Commit final con tag
fase-0-completa - PLAN.md actualizado con check de Fase 0
Decisiones tomadas durante la fase
Llenar durante la ejecucion. Ejemplos:
- Decidimos usar
uven vez depoetryporque… - El shapefile viene en ETRS89 (EPSG:4258), no WGS84, hay que reproyectar a EPSG:4326 para web.
- Decidimos ignorar
data/raw/*.xlsxen git por tamano; el repo solo guarda scripts y docs.
Problemas encontrados
Llenar durante la ejecucion. Ejemplos:
- El shapefile de Formentera viene en un ZIP separado y CRS distinto al de Mallorca.
- Inside Airbnb no tiene snapshot para Formentera separado; el de Eivissa incluye ambos.
Proximos pasos
Fase 1: pipeline de datos Python. Entrada: archivos en data/raw/. Salida: dataset.parquet y tiles.pmtiles en data/output/. Ver FASE-1-datos.md.