खोज…


टिप्पणियों

dtypes पांडा के मूल निवासी नहीं हैं। वे पांडा के करीब वास्तुशिल्प युग्मन से लेकर खस्ता तक का परिणाम हैं।

किसी कॉलम का dtype किसी भी तरह से कॉलम में निहित ऑब्जेक्ट के अजगर प्रकार से संबंधित नहीं है।

यहाँ हमारे पास एक pd.Series फ़्लोट्स है। Dtype float किया जाएगा।

फिर हम ऑब्जेक्ट के लिए इसे "कास्ट" करने के लिए astype का उपयोग करते हैं।

pd.Series([1.,2.,3.,4.,5.]).astype(object)
0    1
1    2
2    3
3    4
4    5
dtype: object

Dtype अब ऑब्जेक्ट है, लेकिन सूची में ऑब्जेक्ट अभी भी फ्लोट हैं। तार्किक यदि आप जानते हैं कि अजगर में, सब कुछ एक वस्तु है, और वस्तु को ऊपर उठाया जा सकता है।

type(pd.Series([1.,2.,3.,4.,5.]).astype(object)[0])
float

यहाँ हम स्ट्रिंग्स को "कास्टिंग" करने की कोशिश करते हैं।

pd.Series([1.,2.,3.,4.,5.]).astype(str)
0    1.0
1    2.0
2    3.0
3    4.0
4    5.0
dtype: object

Dtype अब ऑब्जेक्ट है, लेकिन सूची में प्रविष्टियों के प्रकार स्ट्रिंग हैं। ऐसा इसलिए है क्योंकि numpy तार के साथ सौदा नहीं करता है, और इस तरह से कार्य करता है जैसे कि वे सिर्फ वस्तुएं हैं और कोई चिंता नहीं है।

type(pd.Series([1.,2.,3.,4.,5.]).astype(str)[0])
str

Dtypes पर भरोसा मत करो, वे पांडा में एक वास्तु दोष की एक कलाकृति हैं। उन्हें निर्दिष्ट करें जैसा कि आपको करना चाहिए, लेकिन किसी कॉलम में dtype सेट होने पर निर्भर न करें।

स्तंभों के प्रकारों की जाँच करना

स्तंभों के प्रकार द्वारा जाँच की जा सकती है .dtypes DataFrames की atrribute।

In [1]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [1.0, 2.0, 3.0], 'C': [True, False, True]})

In [2]: df
Out[2]:
   A    B      C
0  1  1.0   True
1  2  2.0  False
2  3  3.0   True

In [3]: df.dtypes
Out[3]:
A      int64
B    float64
C       bool
dtype: object

एकल श्रृंखला के लिए, आप .dtype विशेषता का उपयोग कर सकते हैं।

In [4]: df['A'].dtype
Out[4]: dtype('int64')

Dtypes बदलना

astype() विधि किसी श्रृंखला की dtype को परिवर्तित करती है और एक नई श्रृंखला लौटाती है।

In [1]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [1.0, 2.0, 3.0], 
                           'C': ['1.1.2010', '2.1.2011', '3.1.2011'], 
                           'D': ['1 days', '2 days', '3 days'],
                           'E': ['1', '2', '3']})
In [2]: df
Out[2]:
   A    B          C       D  E
0  1  1.0   1.1.2010  1 days  1
1  2  2.0   2.1.2011  2 days  2
2  3  3.0   3.1.2011  3 days  3

In [3]: df.dtypes
Out[3]:
A      int64
B    float64
C     object
D     object
E     object
dtype: object

स्तंभ A के प्रकार को नाव में बदलें, और स्तंभ B के प्रकार को पूर्णांक:

In [4]: df['A'].astype('float')
Out[4]:
0    1.0
1    2.0
2    3.0
Name: A, dtype: float64

In [5]: df['B'].astype('int')
Out[5]:
0    1
1    2
2    3
Name: B, dtype: int32

astype() विधि विशिष्ट प्रकार के रूपांतरण के लिए है (यानी आप .astype(float64') , .astype(float32) , या .astype(float16) निर्दिष्ट कर सकते हैं। सामान्य रूपांतरण के लिए, आप pd.to_numeric , pd.to_datetime और pd.to_timedelta उपयोग कर सकते हैं।

संख्यात्मक को प्रकार बदलना

pd.to_numeric मानों को संख्यात्मक प्रकार में बदलता है।

In [6]: pd.to_numeric(df['E'])
Out[6]:
0    1
1    2
2    3
Name: E, dtype: int64

डिफ़ॉल्ट रूप से, pd.to_numeric कोई त्रुटि उठाता है यदि इनपुट को किसी संख्या में परिवर्तित नहीं किया जा सकता है। आप errors पैरामीटर का उपयोग करके उस व्यवहार को बदल सकते हैं।

# Ignore the error, return the original input if it cannot be converted
In [7]: pd.to_numeric(pd.Series(['1', '2', 'a']), errors='ignore')
Out[7]:
0    1
1    2
2    a
dtype: object

# Return NaN when the input cannot be converted to a number
In [8]: pd.to_numeric(pd.Series(['1', '2', 'a']), errors='coerce')
Out[8]:
0    1.0
1    2.0
2    NaN
dtype: float64

अगर जरूरत इनपुट के साथ सभी पंक्तियों जाँच सांख्यिक उपयोग करने के लिए परिवर्तित नहीं किया जा सकता boolean indexing साथ isnull :

In [9]: df = pd.DataFrame({'A': [1, 'x', 'z'],
                           'B': [1.0, 2.0, 3.0],
                           'C': [True, False, True]})

In [10]: pd.to_numeric(df.A, errors='coerce').isnull()
Out[10]: 
0    False
1     True
2     True
Name: A, dtype: bool

In [11]: df[pd.to_numeric(df.A, errors='coerce').isnull()]
Out[11]: 
   A    B      C
1  x  2.0  False
2  z  3.0   True

टाइप को डेटाइम में बदलना

In [12]: pd.to_datetime(df['C'])
Out[12]:
0   2010-01-01
1   2011-02-01
2   2011-03-01
Name: C, dtype: datetime64[ns]

ध्यान दें कि 2.1.2011 को 1 फरवरी, 2011 में परिवर्तित कर दिया गया है। यदि आप इसके बजाय 2 जनवरी, 2011 को चाहते हैं, तो आपको dayfirst पैरामीटर का उपयोग करने की आवश्यकता है।

In [13]: pd.to_datetime('2.1.2011', dayfirst=True)
Out[13]: Timestamp('2011-01-02 00:00:00')

प्रकार बदलकर टाइमडेल्टा

In [14]: pd.to_timedelta(df['D'])
Out[14]:
0   1 days
1   2 days
2   3 days
Name: D, dtype: timedelta64[ns]

Dtype के आधार पर कॉलम का चयन करना

select_dtypes आधार पर कॉलम चुनने के लिए select_dtypes पद्धति का उपयोग किया जा सकता है।

In [1]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [1.0, 2.0, 3.0], 'C': ['a', 'b', 'c'], 
                           'D': [True, False, True]})

In [2]: df
Out[2]: 
   A    B  C      D
0  1  1.0  a   True
1  2  2.0  b  False
2  3  3.0  c   True

exclude मापदंडों को include और exclude करना जिन्हें आप निर्दिष्ट कर सकते हैं कि आप कौन से प्रकार चाहते हैं:

# Select numbers
In [3]: df.select_dtypes(include=['number'])  # You need to use a list
Out[3]:
   A    B
0  1  1.0
1  2  2.0
2  3  3.0    

# Select numbers and booleans
In [4]: df.select_dtypes(include=['number', 'bool'])
Out[4]:
   A    B      D
0  1  1.0   True
1  2  2.0  False
2  3  3.0   True

# Select numbers and booleans but exclude int64
In [5]: df.select_dtypes(include=['number', 'bool'], exclude=['int64'])
Out[5]:
     B      D
0  1.0   True
1  2.0  False
2  3.0   True

संक्षेपण dtypes

get_dtype_counts विधि का उपयोग dtypes के टूटने को देखने के लिए किया जा सकता है।

In [1]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [1.0, 2.0, 3.0], 'C': ['a', 'b', 'c'], 
                           'D': [True, False, True]})

In [2]: df.get_dtype_counts()
Out[2]: 
bool       1
float64    1
int64      1
object     1
dtype: int64


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow