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

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

28.4 validate, shape, indicator, anti-join

By Ravindra Bagale

या course चे सर्व chapters (py + ch)

हे का शिकायचं?

validate="many_to_one" चुकीच्या duplicates वर error देते. indicator=True ने left_only rows सापडतात.

हे काय आहे?

Anti-join = left_only — orders ज्यांना store match नाही.

कसं करायचं?

Step 1. validate सेट.

Step 2. indicator=True.

Step 3. _merge value_counts.

Step 4. left_only तपासा.

उदाहरणं: copy करा आणि चालवा

उदाहरण A — indicator.

import pandas as pd

orders = pd.DataFrame({
    "order_id": ["BLK-001", "BLK-002", "BLK-004"],
    "store_id": ["PUN-01", "NSK-01", "PUN-99"],
    "amount_inr": [64, 90, 110],
})
stores = pd.DataFrame({
    "store_id": ["PUN-01", "NSK-01", "KOP-01"],
    "city": ["Pune", "Nashik", "Kolhapur"],
})
m = orders.merge(stores, on="store_id", how="left", indicator=True)
print(m["_merge"].value_counts())
anti = m.loc[m["_merge"] == "left_only", ["order_id", "store_id"]]
print(anti)

उदाहरण B — Duplicate dimension key danger.

bad_stores = pd.DataFrame({
    "store_id": ["PUN-01", "PUN-01"],
    "city": ["Pune", "Pune"],
    "manager": ["Ravindra", "Shraddha"],
})
print("dupes", bad_stores["store_id"].duplicated().sum())
exploded = orders.merge(bad_stores, on="store_id", how="left")
print(len(orders), len(exploded))  # explosion if orders hit PUN-01

उदाहरण C — WhatsApp one-liner.

“Left join orders→stores: 412 orders in, 412 out, 3 left_only store_ids — list attached.”