Pandas & NumPy Academy · पाठ

कॉलम के डेटा प्रकारों की जाँच

dtypes एट्रिब्यूट पढ़ें, int64 को float64 और object से अलग पहचानें, और रूपांतरण की आवश्यकता वाले कॉलम खोजें।

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

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

कॉलम के डेटा प्रकार क्यों महत्वपूर्ण हैं

Pandas DataFrame के प्रत्येक कॉलम का एक dtype (डेटा प्रकार) होता है, जो यह निर्धारित करता है कि मान मेमोरी में कैसे संग्रहीत होंगे और उन पर कौन-सी कार्रवाइयाँ मान्य होंगी। object (स्ट्रिंग) dtype वाले पूर्णांक कॉलम का योग नहीं किया जा सकता। स्ट्रिंग के रूप में संग्रहीत तारीख को समय-श्रृंखला नहीं, बल्कि टेक्स्ट माना जाता है। गलत dtype डेटा विश्लेषण पाइपलाइन में बिना दिखाई देने वाली गड़बड़ियों और अप्रत्याशित परिणामों के सबसे सामान्य कारणों में से एक हैं।

नया डेटासेट लोड करने के बाद हमेशा सबसे पहले dtypes की जाँच करें।

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'age': ['25', '30', '35'],      # looks like int, stored as object
    'salary': [50000, 60000, 70000], # int64
    'hired': ['2022-01-01', '2023-06-15', '2024-03-10']  # looks like date
})

print(df.dtypes)
# age       object
# salary     int64
# hired     object
# dtype: object

dtypes एट्रिब्यूट

DataFrame.dtypes एक Series लौटाता है, जिसका इंडेक्स कॉलम के नाम होते हैं और मान प्रत्येक कॉलम का Pandas dtype होता है। आपके सामने आने वाले सामान्य dtypes हैं: int64, float64, object (स्ट्रिंग और मिश्रित प्रकार), bool, datetime64[ns] और category। dtype का नाम आपको डेटा के प्रकार के साथ-साथ यह भी बताता है कि प्रत्येक मान कितने बाइट का स्थान लेता है।

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'int_col': [1, 2, 3],
    'float_col': [1.5, 2.5, 3.5],
    'str_col': ['a', 'b', 'c'],
    'bool_col': [True, False, True]
})

print(df.dtypes)
# int_col      int64
# float_col  float64
# str_col     object
# bool_col      bool
# dtype: object

object Dtype की पहचान

object dtype उन कॉलम के लिए Pandas का सामान्य dtype है जिन्हें संख्यात्मक या बूलियन प्रकार के रूप में संग्रहीत नहीं किया जा सकता। आम तौर पर इसका अर्थ स्ट्रिंग डेटा होता है, लेकिन यह मिश्रित-प्रकार वाले कॉलम (जैसे, स्ट्रिंग के साथ मिले हुए पूर्णांक) का संकेत भी दे सकता है। Object कॉलम विशेष dtype की तुलना में अधिक मेमोरी लेते हैं और उन पर कार्रवाइयाँ धीमी होती हैं। जब आपको object दिखाई दे, तो पूछें: क्या यह स्ट्रिंग, संख्या, श्रेणी या तारीख होनी चाहिए?

import pandas as pd

df = pd.DataFrame({'mixed': [1, 'two', 3.0, None]})
print(df.dtypes)
# mixed    object

# Check actual Python types inside the column
print(df['mixed'].apply(type).value_counts())
# <class 'int'>      1
# <class 'str'>      1
# <class 'float'>    2  (includes NaN which is float)

पूरे प्रकार के अवलोकन के लिए info()

df.info() एक संक्षिप्त तालिका प्रिंट करता है, जिसमें प्रत्येक कॉलम का नाम, गैर-रिक्त मानों की संख्या और dtype, साथ ही कुल मेमोरी उपयोग दिखता है। यह एक कमांड डेटासेट की गुणवत्ता का पूरा चित्र देता है: आप एक ही समय में देख सकते हैं कि किन कॉलम में डेटा गायब है और किनके dtype गलत हैं। इसलिए डेटासेट लोड करने के बाद यह मानक पहला कमांड है।

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'id': [1, 2, 3],
    'score': [88.5, 92.0, np.nan],
    'grade': ['A', 'A', 'B']
})

df.info()
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 3 entries, 0 to 2
# Data columns (total 3 columns):
#  #   Column  Non-Null Count  Dtype
# ---  ------  --------------  -----
#  0   id      3 non-null      int64
#  1   score   2 non-null      float64
#  2   grade   3 non-null      object
# dtypes: float64(1), int64(1), object(1)
# memory usage: 200.0+ bytes

read_csv के बाद dtype की सामान्य समस्याएँ

जब Pandas CSV फ़ाइल पढ़ता है, तो वह मानों को स्कैन करके dtypes का अनुमान लगाता है। इससे कई सामान्य समस्याएँ उत्पन्न होती हैं: यदि संख्यात्मक कॉलम में अल्पविराम वाले हजार-विभाजक या मुद्रा चिह्न हों, तो वे object के रूप में पढ़े जाते हैं; यदि बूलियन कॉलम 'Yes'/'No' स्ट्रिंग के रूप में संग्रहीत हों, तो वे object के रूप में पढ़े जाते हैं; और तारीखों को Pandas तब तक पार्स नहीं करता जब तक उसे ऐसा करने के लिए न कहा जाए, इसलिए तारीख वाले कॉलम object के रूप में पढ़े जाते हैं। इन पैटर्न को पहचानने से आप प्रकार रूपांतरण द्वारा उन्हें जल्दी ठीक कर सकते हैं।

import pandas as pd
import io

csv = '''price,date,is_active
'1,200',2024-01-15,Yes
'800',2024-02-20,No
'''

df = pd.read_csv(io.StringIO(csv))
print(df.dtypes)
# price       object    <- should be int
# date        object    <- should be datetime64
# is_active   object    <- should be bool

विभिन्न dtypes का मेमोरी उपयोग

अलग-अलग dtypes मेमोरी की बहुत अलग मात्रा लेते हैं। int64 कॉलम प्रत्येक मान के लिए 8 बाइट लेता है, जबकि छोटी स्ट्रिंग संग्रहीत करने वाला object कॉलम प्रत्येक मान के लिए 50-200 बाइट ले सकता है। लाखों पंक्तियों वाले DataFrames में सही dtype चुनने से मेमोरी उपयोग गीगाबाइट से घटकर मेगाबाइट हो सकता है। प्रत्येक कॉलम की बाइट लागत देखने के लिए df.memory_usage(deep=True) चलाएँ।

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'int64_col': np.arange(1_000_000, dtype='int64'),
    'float32_col': np.arange(1_000_000, dtype='float32'),
    'obj_col': ['a'] * 1_000_000
})

mem = df.memory_usage(deep=True) / 1024**2  # MB
print(mem.round(2))
# Index         0.00
# int64_col     7.63
# float32_col   3.81
# obj_col      55.26  <- much more for object!

गलत प्रकार वाले संख्यात्मक कॉलम पहचानना

एक सामान्य समस्या यह है कि अतिरिक्त फ़ॉर्मैटिंग वर्णों के कारण संख्यात्मक कॉलम object के रूप में संग्रहीत हो जाता है। आप जाँच सकते हैं कि pd.to_numeric(df['col'], errors='coerce') मूल कॉलम से अलग परिणाम देता है या नहीं। जिन मानों को पार्स नहीं किया जा सकता, वे NaN बन जाते हैं और ठीक उन पंक्तियों का पता चल जाता है जिनके कारण प्रकार का अनुमान लगाना विफल हुआ।

import pandas as pd

df = pd.DataFrame({'revenue': ['1000', '2000', '$3000', '4,000']})

# Check which values can't be parsed as numbers
parsed = pd.to_numeric(df['revenue'], errors='coerce')
print(parsed)
# 0    1000.0
# 1    2000.0
# 2       NaN   <- '$3000' failed
# 3       NaN   <- '4,000' failed

पूर्णांक और फ्लोट के बीच अस्पष्टता की जाँच

जब किसी कॉलम में एक भी NaN मान होता है, तो Pandas पूर्णांक कॉलम को float64 के रूप में संग्रहीत करता है, क्योंकि मानक NumPy पूर्णांक प्रकार NaN को प्रदर्शित नहीं कर सकते। परिणामस्वरूप 25.0 जैसे फ्लोट पूर्णांक जैसे दिखते हैं, लेकिन फ्लोट के रूप में संग्रहीत होते हैं। Pandas ने nullable integer types (Int64, जिसमें I बड़ा है) प्रस्तुत किए हैं, जो पूर्णांक का अर्थ बनाए रखते हुए NaN का समर्थन करते हैं।

import pandas as pd
import numpy as np

df = pd.DataFrame({'count': [1, 2, np.nan, 4]})
print(df['count'].dtype)  # float64 — because NaN is float

# Nullable integer type supports NaN
df['count'] = df['count'].astype('Int64')  # capital I!
print(df)
#    count
# 0      1
# 1      2
# 2   <NA>
# 3      4
print(df['count'].dtype)  # Int64

प्रकार-आधारित फ़िल्टरिंग के लिए select_dtypes()

df.select_dtypes(include=) आपको किसी विशेष प्रकार-परिवार के सभी कॉलम चुनने देता है। सामान्य आर्ग्युमेंट हैं: 'number' (सभी संख्यात्मक), 'object' (स्ट्रिंग), 'bool', 'datetime', 'category'। पाइपलाइन की शुरुआत में यह बहुत उपयोगी है, क्योंकि इससे आप संख्यात्मक सफ़ाई केवल संख्यात्मक कॉलम पर और स्ट्रिंग सफ़ाई केवल टेक्स्ट कॉलम पर लागू कर सकते हैं।

import pandas as pd

df = pd.DataFrame({
    'name': ['Alice', 'Bob'],
    'age': [25, 30],
    'salary': [50000.0, 70000.0],
    'dept': ['Eng', 'HR']
})

numeric = df.select_dtypes(include='number')
print('Numeric columns:', numeric.columns.tolist())
# ['age', 'salary']

text = df.select_dtypes(include='object')
print('Text columns:', text.columns.tolist())
# ['name', 'dept']

dtype रिपोर्ट बनाना

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

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'age': [25, 30, 35],
    'salary': [50000, 60000, 70000],
    'dept': ['Eng', 'HR', 'Eng'],
    'hired': ['2022-01-01', '2023-06-15', '2024-03-10']
})

report = pd.DataFrame({
    'dtype': df.dtypes,
    'unique_count': df.nunique(),
    'sample': df.iloc[0]
})
print(report)

प्रोडक्शन पाइपलाइन में dtype की सुसंगतता

नई डेटा को हर दिन संसाधित करने वाली प्रोडक्शन पाइपलाइन में dtypes बदल सकते हैं — जो कॉलम हमेशा int64 था, उसमें एक NaN आने पर वह float64 के रूप में आ सकता है। स्कीमा में बदलावों को जल्दी पकड़ने के लिए पाइपलाइन की शुरुआत में dtype assertions जोड़ें। स्पष्ट error के साथ तुरंत विफल होना, बाद में चुपचाप गलत परिणाम तैयार करने से कहीं बेहतर है।

import pandas as pd

df = pd.DataFrame({'user_id': [1, 2, 3], 'score': [88.0, 92.0, 76.0]})

expected_dtypes = {'user_id': 'int64', 'score': 'float64'}

for col, expected in expected_dtypes.items():
    actual = str(df[col].dtype)
    assert actual == expected, (
        f'Column {col}: expected {expected}, got {actual}'
    )
print('All dtypes are correct')

त्वरित जाँच

कॉलम के डेटा प्रकारों की जाँच से संबंधित अपनी समझ को परखें।

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

इस पाठ में आपने सीखा: df.dtypes प्रत्येक कॉलम का प्रकार दिखाता है, object dtype स्ट्रिंग और मिश्रित प्रकारों के लिए सामान्य dtype है, और df.info() प्रकार तथा रिक्तता का पूरा अवलोकन देता है। प्रकार-परिवार के अनुसार कॉलम फ़िल्टर करने के लिए select_dtypes() का उपयोग करें और प्रोडक्शन में स्कीमा के बदलने का पता लगाने के लिए dtype assertions जोड़ें। आगे हम astype() का उपयोग करके कॉलम को सही dtypes में बदलेंगे।

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

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

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

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

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

क्या “कॉलम के डेटा प्रकारों की जाँच” पाठ निःशुल्क है?

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

“कॉलम के डेटा प्रकारों की जाँच” में मैं क्या सीखूँगा?

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

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

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

“कॉलम के डेटा प्रकारों की जाँच” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. कॉलम के डेटा प्रकारों की जाँच
  2. astype() से प्रकार बदलना
  3. श्रेणीबद्ध डेटा प्रकार
  4. तिथियों को सही ढंग से पार्स करना
← Pandas & NumPy Academy पर वापस जाएँ