pandas
जानकारी का प्रकार
खोज…
टिप्पणियों
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