Ravindra Bagale · Data Scienceसर्व coursesया course चे lessonsशोधाEnglish

Data Science · मराठी आवृत्ती

16.3 Data clean करूया

रवींद्र बागले यांच्या course वर आधारित · सहज मराठीत explanation

Raw CSV वाचून columns/text एकसारखे करा, amounts आणि dates parse करा, आणि या lab च्या नियमानुसार impossible minutes हाताळा:

df = pd.read_csv("data/blinkit_maha_raw.csv")
df.columns = df.columns.str.strip().str.lower().str.replace(" ", "_")
df["city"] = df["city"].astype(str).str.strip().str.title()
# Fix Sambhaji Nagar title-case edge cases if needed
df["city"] = df["city"].replace({"Sambhaji Nagar": "Sambhaji Nagar"})
df["status"] = df["status"].str.strip().str.title()
df["amount"] = (
    df["amount"].astype(str).str.replace(",", "", regex=False)
)
df["amount"] = pd.to_numeric(df["amount"], errors="coerce")
df["order_date"] = pd.to_datetime(df["order_date"], dayfirst=True)
df.loc[df["delivery_mins"] > 120, "delivery_mins"] = np.nan
df["delivery_mins"] = df["delivery_mins"].fillna(df["delivery_mins"].median())
before = len(df)
df = df.drop_duplicates(subset=["order_id"], keep="first")
print("rows", before, "->", len(df), "null amounts", df["amount"].isna().sum())
df.to_csv("data/orders_clean.csv", index=False)

Pipeline चा क्रम

  1. Raw CSV load करा.
  2. Column names, city आणि status text normalise करा.
  3. Amounts numeric आणि dates dayfirst=True वापरून parse करा.
  4. Impossible delivery minutes दुरुस्त करा.
  5. Duplicate order_ids काढून row counts नोंदवा.
  6. orders_clean.csv save करा.

या generator मध्ये order_id unique आहे. Real line-level data मध्ये योग्य line key ठरवूनच duplicates हाताळा.