"""(Optionnel) Ajoute de vraies bouteilles notées à GRAPP avec le dataset Kaggle « Wine Reviews » (Wine Enthusiast, 130 000 avis) : https://www.kaggle.com/datasets/zynicide/wine-reviews 1. Télécharger winemag-data-130k-v2.csv (compte Kaggle gratuit), le mettre dans data/ ou : kaggle datasets download -d zynicide/wine-reviews -p data --unzip 2. python scripts/enrichir_kaggle.py => crée data/bouteilles_kaggle.csv ; l'app affiche alors, pour chaque vin recommandé, les bouteilles réelles les mieux notées de cette appellation. """ import sys from pathlib import Path import pandas as pd ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT)) from grapp.engine import normaliser # noqa: E402 src = ROOT / "data" / "winemag-data-130k-v2.csv" if not src.exists(): sys.exit(f"Fichier introuvable : {src}\nTélécharge-le depuis Kaggle (voir l'en-tête du script).") kag = pd.read_csv(src).dropna(subset=["title", "price"]) kag["t"] = kag["title"].map(normaliser) + " " + kag["designation"].fillna("").map(normaliser) vins = pd.read_csv(ROOT / "data" / "vins.csv") lignes = [] for nom in vins["nom"]: cle = normaliser(nom.replace(" rouge", "").replace(" blanc", "").replace(" rosé", "")) sel = kag[kag["t"].str.contains(rf"\b{cle}\b", regex=True)] for _, r in sel.sort_values(["points", "price"], ascending=[False, True]).head(5).iterrows(): lignes.append({"nom": nom, "bouteille": r.title, "points": r.points, "prix_usd": r.price, "avis": r.description}) out = pd.DataFrame(lignes) out.to_csv(ROOT / "data" / "bouteilles_kaggle.csv", index=False) print(f"{len(out)} bouteilles pour {out['nom'].nunique()} appellations -> data/bouteilles_kaggle.csv")