pandas मध्ये missing values कसे handle करायचे
Read this guide in: English · मराठी · हिंदी
Missing values NaN म्हणून दिसतात. आधी detect करा, मग dropna किंवा fillna निवडा, मग totals पुन्हा check. Netflix-style: watches 100, NaN, 90 → fillna(0) नंतर sum 190.
चला मित्रांनो! रिकाम्या cells naive sums तोडतात आणि charts गोंधळतात. आज missing watches प्रामाणिक rules ने clean करूया — जादू नाही. समजलं का? शेवटी पुन्हा check.
थोडक्यात उत्तर
उभा cleaning path:
df.isna().sum()— प्रत्येक column किती missing.- Rows पहा:
df[df["watches"].isna()] - Decide: row drop, किंवा 0 / median / labels ने fill.
dropnaकिंवाfillnaलागू करा.info()आणि known sum पुन्हा चालवा.- Notebook मध्ये choice एका वाक्यात लिहा.
detect → decide → dropna/fillna → verify → document
Language: English · मराठी · हिंदी
या guide आधी काय हवं?
- किमान एक messy column असलेला DataFrame.
- Course: Types, missing, duplicates.
Before आणि after
Before — Netflix-style watches with a NaN.
After — fillna(0); watches total 190.
Before: Show B = NaN. After: 0 ने fill; total watches 190.
Missing values का येतात?
- Export मध्ये blank cell.
- API field skip.
- Spaces टाइप — number नाही.
- Join/merge gaps.
का महत्त्वाचं: chart NaNs gaps म्हणून दाखवू शकतो किंवा points गिळू शकतो. Managers मग भूतांशी भांडतात.
Netflix-style sample
| title | watches |
|---|---|
| Show A | 100 |
| Show B | NaN |
| Show C | 90 |
import pandas as pd
import numpy as np
df = pd.DataFrame({
"title": ["Show A", "Show B", "Show C"],
"watches": [100, np.nan, 90],
})
df.isna().sum()
काय दिसेल: watches missing count 1.
Detect (दर वेळी)
df.isna().sum()df.isna().mean()— optional share.df.info()— non-null vs rows.isna()filter ने spot-check.
Decide: drop की fill?
dropna — प्रामाणिक कधी
- त्या field शिवाय row निरुपयोगी.
- Missing दुर्मिळ.
- किती rows काढल्या ते document.
clean = df.dropna(subset=["watches"])
fillna — 0 (किंवा दुसरी value) प्रामाणिक कधी
- Counts साठी
0= “watches नोंद नाही” असू शकतो. - Categories साठी
"unknown"label. - काही numeric EDA मध्ये median — notes मध्ये सांगा.
df["watches"] = df["watches"].fillna(0)
print(df["watches"].sum()) # 190
Shop sales blank
Pune sales रिकामी असेल:
- खरी sale पण amount unknown — business न विचारता 0 fill करू नका.
- Blank = “sale line नाही” — कदाचित row drop.
- Cleaning = Python कपड्यांमधली business conversation.
आधी rename / strip (वारंवार)
df["city"] = df["city"].astype(str).str.strip()
df["watches"] = pd.to_numeric(df["watches"], errors="coerce")
errors="coerce" junk → NaN, मग NaN मुद्दाम handle.
Duplicates (शेजारी topic)
Missing आणि duplicates वेगळे रोग. fillna नंतर df.duplicated().sum() पहा.
Outliers ≠ NaN
Outlier = आश्चर्यकारक पण अस्तित्वात असलेला number. NaN = छिद्र.
Ravindra Bagale's Tip
Autopilot वर “सगळं mean ने fill” करू नका. Watch counts साठी zero प्रामाणिक असू शकतो; salary survey साठी mean fill खोटं बोलू शकतो. Rule code शेजारी लिहा. समजलं का?
Practice task
- तीन-row watches + एक NaN.
isna().sum()print.fillna(0)→ sum 190.- दुसरी copy
dropna; दोन्ही totals इथे 190 का जुळतात — आणि Show B = 50 असताना का नाही — लिहा.
Learn it properly
Related: EDA checklist · read_csv / read_excel
समजलं का? NaN detect, drop किंवा fill निवडा, total verify, rule लिहा. मग EDA. आता पुढे जाऊया.
Frequently asked questions
What is NaN?
Not a Number — pandas marker for missing numeric/object values in many cases.
Is empty string the same as NaN?
Not always. Strip and replace "" with pd.NA / np.nan during cleaning when needed.
When is dropna wrong?
If most rows miss one optional column, dropping can delete good data — fill or keep and filter later.
fillna mean?
Possible for some numeric EDA; for counts, 0 or “unknown” may be clearer. Be honest in the write-up.
Duplicates too?
Same cleaning chapter covers duplicates — handle missing and dupes as separate decisions.
Course links?
Data cleaning chapter: types, missing, duplicates.