जब आप dtype('O')
डेटाफ्रेम के अंदर देखते हैं तो इसका अर्थ है पंडस स्ट्रिंग।
क्या है dtype
?
कुछ है जो pandas
या numpy
, या दोनों, या कुछ और से संबंधित है? यदि हम पांडा कोड की जांच करते हैं:
df = pd.DataFrame({'float': [1.0],
'int': [1],
'datetime': [pd.Timestamp('20180310')],
'string': ['foo']})
print(df)
print(df['float'].dtype,df['int'].dtype,df['datetime'].dtype,df['string'].dtype)
df['string'].dtype
यह इस तरह उत्पादन होगा:
float int datetime string
0 1.0 1 2018-03-10 foo
---
float64 int64 datetime64[ns] object
---
dtype('O')
आप पंडों dtype('O')
या पंडों की वस्तु के रूप में अंतिम व्याख्या कर सकते हैं जो पायथन प्रकार की स्ट्रिंग है, और यह नेम्पी string_
, या unicode_
प्रकारों से मेल खाती है ।
Pandas dtype Python type NumPy type Usage
object str string_, unicode_ Text
जैसे डॉन क्विक्सोट गधे पर है, पंडास नेम्पी पर है और नम्पी आपके सिस्टम की अंतर्निहित वास्तुकला को समझते हैं और उसके लिए कक्षा का उपयोग करते हैं numpy.dtype
।
डेटा प्रकार ऑब्जेक्ट numpy.dtype
वर्ग का एक उदाहरण है, जो डेटा प्रकार को अधिक सटीक समझता है :
- डेटा का प्रकार (पूर्णांक, फ्लोट, पायथन ऑब्जेक्ट, आदि)
- डेटा का आकार (कितने बाइट्स उदाहरण के लिए पूर्णांक है)
- डेटा का बाइट क्रम (छोटा-एंडियन या बड़ा-एंडियन)
- यदि डेटा प्रकार संरचित है, तो अन्य डेटा प्रकारों का एक कुल (उदाहरण के लिए, एक पूर्णांक और एक फ्लोट से मिलकर एक सरणी आइटम का वर्णन)
- संरचना के "फ़ील्ड" के नाम क्या हैं
- प्रत्येक फ़ील्ड का डेटा-प्रकार क्या है
- मेमोरी का कौन सा भाग प्रत्येक फ़ील्ड को ब्लॉक करता है
- यदि डेटा प्रकार एक उप-सरणी है, तो इसका आकार और डेटा प्रकार क्या है
इस सवाल के संदर्भ में dtype
दोनों तालाब और सुन्न के हैं और विशेष रूप से dtype('O')
हम स्ट्रिंग की उम्मीद करते हैं।
स्पष्टीकरण के साथ परीक्षण के लिए यहां कुछ कोड दिया गया है: यदि हमारे पास शब्दकोश के रूप में डेटासेट है
import pandas as pd
import numpy as np
from pandas import Timestamp
data={'id': {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}, 'date': {0: Timestamp('2018-12-12 00:00:00'), 1: Timestamp('2018-12-12 00:00:00'), 2: Timestamp('2018-12-12 00:00:00'), 3: Timestamp('2018-12-12 00:00:00'), 4: Timestamp('2018-12-12 00:00:00')}, 'role': {0: 'Support', 1: 'Marketing', 2: 'Business Development', 3: 'Sales', 4: 'Engineering'}, 'num': {0: 123, 1: 234, 2: 345, 3: 456, 4: 567}, 'fnum': {0: 3.14, 1: 2.14, 2: -0.14, 3: 41.3, 4: 3.14}}
df = pd.DataFrame.from_dict(data) #now we have a dataframe
print(df)
print(df.dtypes)
अंतिम पंक्तियाँ डेटाफ़्रेम की जाँच करेंगी और आउटपुट को नोट करेंगी:
id date role num fnum
0 1 2018-12-12 Support 123 3.14
1 2 2018-12-12 Marketing 234 2.14
2 3 2018-12-12 Business Development 345 -0.14
3 4 2018-12-12 Sales 456 41.30
4 5 2018-12-12 Engineering 567 3.14
id int64
date datetime64[ns]
role object
num int64
fnum float64
dtype: object
हर तरह का अलग dtypes
df.iloc[1,:] = np.nan
df.iloc[2,:] = None
लेकिन अगर हम सेट करने की कोशिश करते हैं np.nan
या None
यह मूल कॉलम dtype को प्रभावित नहीं करेगा। आउटपुट इस तरह होगा:
print(df)
print(df.dtypes)
id date role num fnum
0 1.0 2018-12-12 Support 123.0 3.14
1 NaN NaT NaN NaN NaN
2 NaN NaT None NaN NaN
3 4.0 2018-12-12 Sales 456.0 41.30
4 5.0 2018-12-12 Engineering 567.0 3.14
id float64
date datetime64[ns]
role object
num float64
fnum float64
dtype: object
इसलिए np.nan
या None
कॉलम dtype
को तब तक नहीं बदला जाएगा , जब तक हम सभी कॉलम पंक्तियों को np.nan
या तो सेट नहीं कर देते None
। उस स्थिति में कॉलम क्रमशः float64
या बन जाएगा object
।
आप एकल पंक्तियों को सेट करने का भी प्रयास कर सकते हैं:
df.iloc[3,:] = 0 # will convert datetime to object only
df.iloc[4,:] = '' # will convert all columns to object
और यहां ध्यान देने के लिए, अगर हम स्ट्रिंग को एक गैर स्ट्रिंग कॉलम के अंदर सेट करते हैं तो यह स्ट्रिंग या ऑब्जेक्ट बन जाएगा dtype
।
pandas
स्वतंत्र रूप सेobject
dtype का उपयोग करता है जब स्तंभों में मिश्रित मान (स्ट्रिंग्स, संख्या, नैन) होते हैं।