गुम मानों की पहचान
Series या DataFrame में NaN के स्थान खोजने और प्रत्येक कॉलम में गुम मानों की गिनती करने के लिए isna(), notna() और isnull() का उपयोग करें।
गुम मानों की पहचान, CoddyKit पर Pandas & NumPy Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Pandas & NumPy Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Pandas में अनुपस्थित मान क्या होते हैं?
Pandas में संख्यात्मक कॉलमों के लिए अनुपस्थित मान को NaN (Not a Number) के रूप में और datetime कॉलमों के लिए None या pd.NaT के रूप में दर्शाया जाता है। वास्तविक दुनिया के डेटासेट में अनुपस्थित डेटा आम है, क्योंकि रिकॉर्ड अधूरे हो सकते हैं, सेंसर विफल हो सकते हैं या जोड़ने की प्रक्रियाओं से बिना मेल वाली पंक्तियाँ बन सकती हैं। अनुपस्थित मानों का पता लगाना किसी भी डेटा सफ़ाई प्रक्रिया का हमेशा पहला चरण होता है।
Pandas संख्यात्मक कॉलमों के लिए None, float('nan') और numpy.nan को आंतरिक रूप से एक ही NaN निरूपण में सामान्यीकृत करता है।
import pandas as pd
import numpy as np
df = pd.DataFrame({
'name': ['Alice', None, 'Carol'],
'age': [25, np.nan, 30],
'salary': [50000.0, 60000.0, np.nan]
})
print(df)
# name age salary
# 0 Alice 25.0 50000.0
# 1 None NaN 60000.0
# 2 Carol 30.0 NaNisna() और isnull()
isna() और isnull() पूरी तरह समान हैं — दोनों एक ही आकार का DataFrame या Series लौटाते हैं, जिसमें मान अनुपस्थित होने पर True और अन्य स्थानों पर False भरा होता है। Pandas उपयोगकर्ता की पसंद के लिए केवल दोनों नाम उपलब्ध कराता है। परिणामी मान का उपयोग सीधे बूलियन मास्क के रूप में फ़िल्टरिंग या आगे की गणना के लिए किया जा सकता है।
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, np.nan, 3],
'B': [np.nan, 2, np.nan]
})
print(df.isna())
# A B
# 0 False True
# 1 True False
# 2 False True
# Both are identical
print((df.isna() == df.isnull()).all().all()) # Trueअनुपस्थित नहीं मान खोजने के लिए notna()
notna() (जिसका वैकल्पिक नाम notnull() भी है) isna() का उलटा है — यह मान मौजूद होने पर True और अनुपस्थित होने पर False लौटाता है। यह तब उपयोगी है जब आप उन पंक्तियों को फ़िल्टर करना चाहते हैं जिनमें किसी महत्वपूर्ण कॉलम में मान हो, जैसे यह आवश्यक करना कि प्राथमिक कुंजी या लक्ष्य चर NaN न हो।
import pandas as pd
import numpy as np
df = pd.DataFrame({
'id': [1, 2, 3],
'email': ['a@x.com', None, 'c@x.com']
})
# Keep only rows where email is present
with_email = df[df['email'].notna()]
print(with_email)
# id email
# 0 1 a@x.com
# 2 3 c@x.comप्रत्येक कॉलम के अनुपस्थित मानों की गिनती
DataFrame पर .isna().sum() कॉल करने से True मानों (जिनका मान 1 होता है) का कॉलम-दर-कॉलम योग मिलता है और प्रत्येक कॉलम में अनुपस्थित मानों की संख्या प्राप्त होती है। नए डेटासेट की गुणवत्ता समझने के लिए यह सबसे उपयोगी पहला चरण है — इससे पता चलता है कि किन कॉलमों पर ध्यान देने की आवश्यकता है।
import pandas as pd
import numpy as np
df = pd.DataFrame({
'name': ['Alice', None, 'Carol', None],
'age': [25, np.nan, 30, 22],
'salary': [50000, 60000, np.nan, np.nan]
})
missing_counts = df.isna().sum()
print(missing_counts)
# name 2
# age 1
# salary 2
# dtype: int64प्रत्येक कॉलम में अनुपस्थित मानों का प्रतिशत
NaN मानों की पूर्ण संख्या की तुलना में अनुपस्थित मानों का प्रतिशत अधिक उपयोगी होता है, क्योंकि पूर्ण संख्या डेटासेट के आकार के साथ बदलती है। isna().sum() को कुल पंक्तियों की संख्या से भाग देने पर (या isna().mean() कॉल करने पर) अनुपस्थित अंश मिलता है, जिसे प्रतिशत के लिए 100 से गुणा किया जा सकता है। जिन कॉलमों में 30–50% से अधिक मान अनुपस्थित हों, उनके बारे में अक्सर यह निर्णय लेना पड़ता है कि उन्हें रखना भी है या नहीं।
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, np.nan, 3, np.nan, 5],
'B': [np.nan, 2, np.nan, 4, 5],
'C': [1, 2, 3, 4, 5]
})
missing_pct = (df.isna().mean() * 100).round(1)
print(missing_pct)
# A 40.0
# B 40.0
# C 0.0
# dtype: float64अनुपस्थित मानों की सारांश तालिका
EDA में एक सामान्य तरीका अनुपस्थित मानों की सारांश तालिका बनाना है, जो एक ही दृश्य में प्रत्येक कॉलम की संख्या, प्रतिशत और dtype दिखाती है। सफ़ाई से जुड़े किसी भी निर्णय से पहले यह डेटा गुणवत्ता की पूरी तस्वीर देती है। सबसे अधिक समस्याग्रस्त कॉलमों को पहले दिखाने के लिए आप इसे क्रमबद्ध कर सकते हैं।
import pandas as pd
import numpy as np
df = pd.DataFrame({
'col_a': [1, np.nan, 3],
'col_b': [np.nan, np.nan, 3],
'col_c': [1, 2, 3]
})
summary = pd.DataFrame({
'missing_count': df.isna().sum(),
'missing_pct': (df.isna().mean() * 100).round(1),
'dtype': df.dtypes
}).sort_values('missing_pct', ascending=False)
print(summary)
# missing_count missing_pct dtype
# col_b 2 66.7 float64
# col_a 1 33.3 float64
# col_c 0 0.0 float64पंक्ति-स्तर पर अनुपस्थित मानों की गिनती
आप isna().sum(axis=1) कॉल करके प्रत्येक पंक्ति में भी अनुपस्थित मानों की गिनती कर सकते हैं। इससे ऐसी प्रविष्टियों की पहचान करने में सहायता मिलती है जो लगभग पूरी तरह खाली हैं (जैसे अधूरे सर्वेक्षण उत्तर), जिन्हें आप एक इकाई के रूप में चिह्नित या हटा सकते हैं। बहुत से अनुपस्थित मानों वाली पंक्ति, कॉलम-स्तर पर बिखरे हुए अनुपस्थित मानों से मूल रूप से अलग होती है।
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, np.nan, np.nan],
'b': [np.nan, 2, np.nan],
'c': [3, 4, np.nan]
})
# Count NaN per row
df['missing_count'] = df.isna().sum(axis=1)
print(df)
# a b c missing_count
# 0 1.0 NaN 3.0 1
# 1 NaN 2.0 4.0 1
# 2 NaN NaN NaN 3किसी या सभी अनुपस्थित मानों वाली पंक्तियों को फ़िल्टर करना
कम-से-कम एक NaN मान वाली पंक्तियाँ खोजने के लिए df[df.isna().any(axis=1)] का उपयोग करें, या ऐसी पंक्तियाँ खोजने के लिए df[df.isna().all(axis=1)] का उपयोग करें जिनमें हर मान NaN है। ये फ़िल्टर यह तय करने से पहले समस्याग्रस्त रिकॉर्डों को जाँच के लिए अलग करने में सहायता करते हैं कि उन्हें कैसे संभालना है।
import pandas as pd
import numpy as np
df = pd.DataFrame({
'x': [1, np.nan, np.nan],
'y': [2, 3, np.nan],
'z': [4, 5, np.nan]
})
# Rows with at least one NaN
has_any_nan = df[df.isna().any(axis=1)]
print('Any NaN:\n', has_any_nan)
# Rows where all values are NaN
all_nan = df[df.isna().all(axis=1)]
print('All NaN:\n', all_nan)
# x y z
# 2 NaN NaN NaNकिसी विशेष कॉलम में NaN की जाँच
किसी एक कॉलम की त्वरित सामान्यता-जाँच के लिए df['col'].isna().sum() कॉल करें या एकल बूलियन प्राप्त करने के लिए df['col'].isna().any() का उपयोग करें (यदि कोई भी NaN मौजूद हो तो True)। ये एक-पंक्ति निर्देश डेटा सत्यापन जाँचों या किसी प्रक्रिया के लॉगिंग कथनों में उपयोगी होते हैं।
import pandas as pd
import numpy as np
df = pd.DataFrame({'price': [10.0, np.nan, 30.0, np.nan, 50.0]})
print('NaN count in price:', df['price'].isna().sum()) # 2
print('Any NaN in price?', df['price'].isna().any()) # True
print('All present?', df['price'].notna().all()) # Falseहीटमैप से अनुपस्थित मानों को देखना
बहुत से कॉलम वाले डेटासेट में संख्याओं की तालिका की तुलना में अनुपस्थित मानों का हीटमैप अधिक जानकारीपूर्ण होता है। आप सीबॉर्न से इसे आसानी से बना सकते हैं: कोई सेल जितना गहरा होगा, उस कॉलम-पंक्ति संयोजन में उतना ही अधिक डेटा अनुपस्थित होगा। missingno नामक लोकप्रिय तृतीय-पक्ष लाइब्रेरी अनुपस्थित मानों के दृश्यांकन के लिए विशेष सुविधाएँ प्रदान करती है।
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
np.random.seed(0)
df = pd.DataFrame(
np.where(np.random.rand(20, 5) > 0.7, np.nan, np.random.randn(20, 5)),
columns=['A', 'B', 'C', 'D', 'E']
)
# Heatmap of missing values
sns.heatmap(df.isna(), cbar=False, yticklabels=False)
plt.title('Missing Value Pattern')
plt.tight_layout()
plt.savefig('missing_heatmap.png')
print('Saved missing_heatmap.png')त्वरित अनुपस्थित मान जाँच के लिए info()
df.info() एक संक्षिप्त सारांश प्रिंट करता है, जिसमें प्रत्येक कॉलम की गैर-शून्य संख्या शामिल होती है। नए डेटासेट में अनुपस्थित मानों वाले कॉलमों को पहचानने का यह सबसे तेज़ तरीका है: जिस कॉलम की गैर-शून्य संख्या कुल पंक्तियों की संख्या से कम हो, उसमें NaN मान होते हैं। यह dtype और मेमोरी उपयोग भी दिखाता है।
import pandas as pd
import numpy as np
df = pd.DataFrame({
'id': [1, 2, 3, 4, 5],
'age': [25, np.nan, 30, np.nan, 22],
'salary': [50000, 60000, np.nan, 70000, 80000]
})
df.info()
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 5 entries, 0 to 4
# Data columns (total 3 columns):
# # Column Non-Null Count Dtype
# --- ------ -------------- -----
# 0 id 5 non-null int64
# 1 age 3 non-null float64
# 2 salary 4 non-null float64त्वरित जाँच
Pandas में अनुपस्थित मानों का पता लगाने की अपनी समझ जाँचें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: isna() और isnull() समान हैं और अनुपस्थित स्थानों के बूलियन मास्क लौटाते हैं, isna().sum() प्रत्येक कॉलम में NaN की गिनती करता है, और isna().mean()*100 अनुपस्थित मानों का प्रतिशत देता है। त्वरित अवलोकन के लिए df.info() और कम-से-कम एक NaN वाली पंक्तियाँ खोजने के लिए isna().any(axis=1) का उपयोग करें। आगे हम dropna() से अनुपस्थित मानों को हटाना सीखेंगे।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “गुम मानों की पहचान” पाठ निःशुल्क है?
हाँ—“गुम मानों की पहचान” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Pandas & NumPy Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“गुम मानों की पहचान” में मैं क्या सीखूँगा?
Series या DataFrame में NaN के स्थान खोजने और प्रत्येक कॉलम में गुम मानों की गिनती करने के लिए isna(), notna() और isnull() का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Pandas & NumPy Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Pandas & NumPy Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Pandas & NumPy Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“गुम मानों की पहचान” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Pandas & NumPy Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Pandas & NumPy Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- गुम मानों की पहचान
- गुम मान हटाना
- गुम मान भरना
- इंटरपोलेशन और उन्नत इम्प्यूटेशन