Pandas & NumPy Academy · पाठ

एकचर विश्लेषण

प्रत्येक कॉलम का स्वतंत्र विश्लेषण करें: संख्यात्मक कॉलमों के वितरण और श्रेणीबद्ध कॉलमों की मान-गिनती दिखाएँ तथा अपवाद मान और विषमता नोट करें।

पाठ 2, कुल 4 में से13 चरण

एकचर विश्लेषण, CoddyKit पर Pandas & NumPy Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Pandas & NumPy Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

एकचर विश्लेषण क्या है

एकचर विश्लेषण एक समय में एक ही कॉलम की जाँच करता है और कॉलमों के बीच के संबंधों को अनदेखा करता है। इसका उद्देश्य प्रत्येक चर के वितरण को समझना, असामान्य मानों का पता लगाना, विषमता पहचानना और मॉडलिंग शुरू होने से पहले डेटा गुणवत्ता संबंधी समस्याएँ ढूँढ़ना है। संख्यात्मक और श्रेणीबद्ध कॉलमों के लिए एकचर विश्लेषण अलग होता है—संख्यात्मक कॉलमों के लिए वितरण प्लॉट और सारांश आँकड़े चाहिए, जबकि श्रेणीबद्ध कॉलमों के लिए आवृत्ति-गणना और अनुपात चाहिए।

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
numeric_cols = df.select_dtypes('number').columns.tolist()
categoric_cols = df.select_dtypes('object').columns.tolist()

print('Numeric columns:', numeric_cols)
print('Categorical columns:', categoric_cols)

संख्यात्मक कॉलमों के लिए हिस्टोग्राम

वितरण का आकार देखने के लिए प्रत्येक संख्यात्मक कॉलम का हिस्टोग्राम बनाएँ। सममिति बनाम विषमता (एक ओर की लंबी पूँछ), बहुलकता (एक शिखर बनाम कई शिखर) और स्पष्ट विसंगतियों (ऐसे चरम मान जो अविश्वसनीय लगें) पर ध्यान दें। Pandas में df.hist() बिना लूप लिखे कई कॉलमों का त्वरित हिस्टोग्राम ग्रिड बनाता है, लेकिन Seaborn का histplot अलग-अलग कॉलमों के लिए अधिक सूक्ष्म नियंत्रण देता है।

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('titanic')

# Quick multi-column histogram grid
numeric = df.select_dtypes('number')
numeric.hist(bins=20, figsize=(12, 8), layout=(2, 3), color='steelblue', edgecolor='white')
plt.suptitle('Univariate Distributions (Numeric Columns)', y=1.02)
plt.tight_layout()
plt.show()

संख्यात्मक कॉलमों के लिए सारांश आँकड़े

प्रत्येक संख्यात्मक कॉलम के लिए mean और median निकालकर उनकी तुलना करें। जब mean, median से काफ़ी बड़ा हो, तो वितरण दाईं ओर विषम होता है (दाईं ओर लंबी पूँछ; आय और कीमत के डेटा में यह सामान्य है)। जब mean, median से छोटा हो, तो वितरण बाईं ओर विषम होता है। mean की तुलना में मानक विचलन भी जाँचें: गैर-ऋणात्मक चर के लिए mean से बड़ा std अधिक परिवर्तनशीलता या असामान्य मानों का संकेत है। df.skew() से सीधे विषमता निकालें।

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')

summary = pd.DataFrame({
    'mean': numeric.mean(),
    'median': numeric.median(),
    'std': numeric.std(),
    'skewness': numeric.skew(),
    'missing_pct': (numeric.isna().sum() / len(df) * 100).round(1)
}).round(2)

print(summary)

असामान्य मानों की पहचान के लिए बॉक्स प्लॉट

संख्यात्मक कॉलमों में असामान्य मानों को पहचानने के लिए बॉक्स प्लॉट सबसे तेज़ दृश्य उपकरण हैं। मूँछों से बाहर का प्रत्येक बिंदु (Q1 या Q3 से 1.5×IQR की दूरी से आगे) अलग से दिखाया जाता है और संभावित असामान्य मान के रूप में चिह्नित होता है। बहुत अधिक असामान्य बिंदुओं वाले कॉलम की जाँच करें: क्या वे डेटा प्रविष्टि की त्रुटियाँ हैं, वैध चरम मान हैं, या गैर-सामान्य वितरण का प्रमाण हैं? बॉक्स प्लॉट बॉक्स के भीतर median की असममित स्थिति से दाईं या बाईं विषमता भी दिखाते हैं।

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('titanic')

fig, axes = plt.subplots(1, 3, figsize=(14, 5))

for ax, col in zip(axes, ['age', 'fare', 'sibsp']):
    df[[col]].boxplot(ax=ax)
    ax.set_title(f'Box Plot: {col}')

plt.tight_layout()
plt.show()

IQR-आधारित असामान्य मानों की गणना

IQR (चतुर्थक सीमा) विधि Q1 - 1.5×IQR से कम या Q3 + 1.5×IQR से अधिक मानों को असामान्य मान परिभाषित करती है। आप बिना प्लॉट बनाए प्रत्येक संख्यात्मक कॉलम में असामान्य मानों की संख्या और उनका निरीक्षण प्रोग्राम के माध्यम से कर सकते हैं। यह स्वचालित डेटा-प्रवाहों में उपयोगी है, जहाँ चार्ट बनाने के बजाय विसंगतियों की संख्या का लॉग रखना होता है। असामान्य मानों के साथ क्या करना है—हटाना, सीमित करना या चिह्नित करना—यह डोमेन ज्ञान के आधार पर सोच-समझकर लिया गया निर्णय होना चाहिए।

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')

Q1 = numeric.quantile(0.25)
Q3 = numeric.quantile(0.75)
IQR = Q3 - Q1

lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR

outlier_counts = ((numeric < lower) | (numeric > upper)).sum()
print('Outlier counts per column:')
print(outlier_counts[outlier_counts > 0])

श्रेणीबद्ध कॉलमों के लिए मान-गणना

प्रत्येक श्रेणीबद्ध कॉलम के लिए value_counts() चलाकर देखें कि प्रेक्षण विभिन्न श्रेणियों में कैसे वितरित हैं। हमेशा जाँचें: क्या कोई एक श्रेणी हावी है (>80%)? इससे वर्गीकरण कार्यों में वर्ग असंतुलन पैदा होता है। क्या केवल 1-2 प्रेक्षण वाली दुर्लभ श्रेणियाँ हैं (टाइपिंग या डेटा प्रविष्टि की त्रुटियाँ)? क्या वितरण व्यावसायिक अपेक्षाओं से मेल खाता है (जैसे, 'country' कॉलम में अधिकांश ऑर्डर किसी अप्रत्याशित देश से दिखना)?

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')

for col in ['sex', 'embarked', 'class', 'who']:
    counts = df[col].value_counts(dropna=False)
    pct = (counts / len(df) * 100).round(1)
    result = pd.DataFrame({'count': counts, 'pct%': pct})
    print(f'\n--- {col} ---')
    print(result)

श्रेणीबद्ध चरों के लिए बार चार्ट

sns.countplot या value_counts().plot(kind='bar') चलाकर श्रेणीबद्ध मान-गणनाओं को बार चार्ट के रूप में दिखाएँ। बारों को सबसे अधिक से सबसे कम आवृत्ति के क्रम में रखें, ताकि दर्शक तुरंत प्रमुख श्रेणियाँ देख सके। द्विआधारी चरों (हाँ/नहीं, पुरुष/महिला) के लिए पाई चार्ट स्वीकार्य है—लेकिन 3 से अधिक श्रेणियों के लिए बार चार्ट हमेशा अधिक स्पष्ट होते हैं। श्रेणी नाम लंबे हों तो टिक लेबल को 45 डिग्री घुमाएँ।

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('titanic')

fig, axes = plt.subplots(1, 2, figsize=(12, 5))

sns.countplot(data=df, x='embarked', order=df['embarked'].value_counts().index, ax=axes[0])
axes[0].set_title('Embarkation Port Counts')

sns.countplot(data=df, x='class', order=['First', 'Second', 'Third'], ax=axes[1])
axes[1].set_title('Passenger Class Counts')

plt.tight_layout()
plt.show()

विषमता पहचानना और रूपांतरण लागू करना

बहुत अधिक दाईं ओर विषम संख्यात्मक कॉलम (विषमता > 1.5) को अधिक सममित बनाने के लिए अक्सर लॉग रूपांतरण से लाभ होता है। यह कई सांख्यिकीय परीक्षणों और उन कुछ ML एल्गोरिदम के लिए महत्वपूर्ण है जो सामान्यता मानते हैं। np.log1p() (log(x+1), शून्य के निकट मानों के लिए सुरक्षित) लागू करें और विषमता फिर से जाँचें। वितरण के अधिक घंटी-आकार का होने की पुष्टि करने के लिए पहले और बाद के हिस्टोग्राम की तुलना करें।

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('titanic')

fig, axes = plt.subplots(1, 2, figsize=(10, 4))

sns.histplot(df['fare'], bins=30, kde=True, ax=axes[0])
axes[0].set_title(f'fare (skew={df["fare"].skew():.2f})')

log_fare = np.log1p(df['fare'])
sns.histplot(log_fare, bins=30, kde=True, ax=axes[1], color='coral')
axes[1].set_title(f'log1p(fare) (skew={log_fare.skew():.2f})')

plt.tight_layout()
plt.show()

शून्य-विचरण वाले कॉलमों की जाँच

शून्य विचरण वाला कॉलम (जिसके सभी मान समान हों) किसी भी मॉडल को कोई जानकारी नहीं देता, इसलिए उसे हटा देना चाहिए। लगभग शून्य विचरण वाला कॉलम (99% पंक्तियों में समान मान) भी इसी तरह अनुपयोगी होता है। df.var() से विचरण निकालकर फ़िल्टर करें। उन कॉलमों की भी जाँच करें जहाँ nunique() == len(df) हो—ये संभवतः ID कॉलम हैं, जिनका उपयोग विशेषताओं के रूप में नहीं किया जाना चाहिए, लेकिन वे पंक्ति पहचानकर्ताओं के रूप में उपयोगी हो सकते हैं।

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')

# Zero-variance columns
zero_var = numeric.columns[numeric.var() == 0].tolist()
print('Zero-variance columns:', zero_var)

# Near-zero variance (std < 0.01)
nzv = numeric.columns[numeric.std() < 0.01].tolist()
print('Near-zero variance:', nzv)

# Likely ID columns (all unique values)
id_candidates = [c for c in df.columns if df[c].nunique() == len(df)]
print('Likely ID columns:', id_candidates)

एकचर विश्लेषण का स्वचालन लूप

प्रत्येक कॉलम के लिए एक ही विश्लेषण को हाथ से दोहराने के बजाय ऐसा लूप लिखें जो सभी संख्यात्मक कॉलमों पर चले और प्रमुख आँकड़ों को व्यवस्थित प्रारूप में प्रिंट करे। इससे दर्जनों कॉलमों को जल्दी देखना और उन कॉलमों को चिह्नित करना आसान हो जाता है जिन पर ध्यान देने की आवश्यकता है। आउटपुट को किसी डेटा-प्रवाह के लेखा-परीक्षण लॉग के हिस्से के रूप में CSV file में सहेजा जा सकता है, जिसकी समीक्षा हितधारक मॉडलिंग में डेटा के उपयोग से पहले कर सकते हैं।

import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
numeric = df.select_dtypes('number')

rows = []
for col in numeric.columns:
    s = df[col]
    Q1, Q3 = s.quantile(0.25), s.quantile(0.75)
    IQR = Q3 - Q1
    n_outliers = ((s < Q1 - 1.5*IQR) | (s > Q3 + 1.5*IQR)).sum()
    rows.append({
        'column': col,
        'missing_pct': round(s.isna().mean() * 100, 1),
        'mean': round(s.mean(), 2),
        'std': round(s.std(), 2),
        'skew': round(s.skew(), 2),
        'outliers': int(n_outliers)
    })

report = pd.DataFrame(rows)
print(report.to_string(index=False))

एकचर निष्कर्षों का दस्तावेज़ीकरण

एकचर विश्लेषण पूरा करने के बाद अपने निष्कर्षों का व्यवस्थित रूप से दस्तावेज़ीकरण करें। प्रत्येक कॉलम के लिए लिखें: वितरण का आकार (विषम, द्विशिखरी, लगभग सामान्य), अनुपलब्ध मानों का प्रतिशत और नियोजित पूर्ति रणनीति, असामान्य मानों की संख्या और निर्णय (सीमित करना, हटाना, चिह्नित करना), तथा ऐसे संदिग्ध मान जिनके लिए डोमेन संबंधी स्पष्टीकरण चाहिए। यह दस्तावेज़ डेटा गुणवत्ता लॉग बन जाता है, जो सफ़ाई के चरणों का मार्गदर्शन करता है और निर्णयों को बाद में भुलाए जाने या उन पर विवाद होने से बचाता है।

त्वरित जाँच

इस पाठ के एकचर विश्लेषण संबंधी विषय की अपनी समझ को परखें।

पाठ का पुनरावलोकन

इस पाठ में आपने सीखा: संख्यात्मक कॉलमों के वितरण का आकार हिस्टोग्राम दिखाते हैं, बॉक्स प्लॉट और IQR फेंसिंग असामान्य मानों की पहचान करते हैं, और value_counts श्रेणीबद्ध कॉलमों में श्रेणी-आवृत्ति दिखाता है। इन जाँचों को लूप में स्वचालित करने से पुनः उपयोग योग्य गुणवत्ता रिपोर्ट बनती है। अब हम द्विचर और सहसंबंध विश्लेषण देखेंगे—कॉलमों के युग्मों के बीच संबंधों को समझेंगे।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “एकचर विश्लेषण” पाठ निःशुल्क है?

हाँ—“एकचर विश्लेषण” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Pandas & NumPy Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“एकचर विश्लेषण” में मैं क्या सीखूँगा?

प्रत्येक कॉलम का स्वतंत्र विश्लेषण करें: संख्यात्मक कॉलमों के वितरण और श्रेणीबद्ध कॉलमों की मान-गिनती दिखाएँ तथा अपवाद मान और विषमता नोट करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Pandas & NumPy Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Pandas & NumPy Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Pandas & NumPy Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“एकचर विश्लेषण” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Pandas & NumPy Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Pandas & NumPy Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. डेटासेट प्रोफ़ाइल जाँच-सूची
  2. एकचर विश्लेषण
  3. द्विचर और सहसंबंध विश्लेषण
  4. रिपोर्ट में निष्कर्षों का सारांश
← Pandas & NumPy Academy पर वापस जाएँ