tourism-app / scripts /data_prep.py
dhani10's picture
Upload folder using huggingface_hub
281128a verified
import os
from pathlib import Path
import pandas as pd
from sklearn.model_selection import train_test_split
from huggingface_hub import login, HfApi
HF_TOKEN = os.getenv("HF_TOKEN")
DATASET_REPO = os.getenv("DATASET_REPO", "dhani10/tourism-app-dataset")
CSV = os.getenv("CSV_PATH", "tourism.csv")
if not HF_TOKEN:
raise SystemExit("HF_TOKEN is required")
print(f"[data_prep] reading {CSV}")
df = pd.read_csv(CSV)
for c in ("CustomerID", "Unnamed: 0"):
if c in df.columns:
df.drop(columns=[c], inplace=True)
df["Gender"] = df["Gender"].replace("Fe Male", "Female")
for col in ["Age","DurationOfPitch","NumberOfTrips","NumberOfFollowups","MonthlyIncome","PreferredPropertyStar"]:
if col in df.columns:
df[col] = df[col].fillna(df[col].median())
for col in ["TypeofContact","Occupation","Gender","ProductPitched","MaritalStatus","Designation"]:
if col in df.columns:
df[col] = df[col].fillna(df[col].mode()[0])
X = df.drop("ProdTaken", axis=1)
y = df["ProdTaken"].astype(int)
train_df, test_df = train_test_split(pd.concat([X, y], axis=1), test_size=0.2, random_state=42, stratify=y)
out = Path("artifacts"); out.mkdir(exist_ok=True, parents=True)
train_df.to_csv(out/"train.csv", index=False)
test_df.to_csv(out/"test.csv", index=False)
print("[data_prep] login + upload to HF dataset hub")
login(HF_TOKEN)
api = HfApi(token=HF_TOKEN)
api.create_repo(repo_id=DATASET_REPO, repo_type="dataset", exist_ok=True)
api.upload_file(path_or_fileobj=str(out/"train.csv"), path_in_repo="data/train.csv",
repo_id=DATASET_REPO, repo_type="dataset")
api.upload_file(path_or_fileobj=str(out/"test.csv"), path_in_repo="data/test.csv",
repo_id=DATASET_REPO, repo_type="dataset")
print("[data_prep] done")