grapp / scripts /enrichir_kaggle.py
adrescop's picture
Upload 16 files
e7194cd verified
Raw History Blame Contribute Delete
1.74 kB
"""(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")