পান্ডায় dtype ('O') কী?


105

পান্ডায় আমার একটি ডেটাফ্রেম রয়েছে এবং আমি এর মানগুলির প্রকারগুলি কী তা নির্ধারণ করার চেষ্টা করছি। কলামটি কী ধরণের তা আমি নিশ্চিত নই 'Test'। যাইহোক, আমি যখন দৌড়ে myFrame['Test'].dtype, আমি পেতে;

dtype('O')

এটার মানে কি?


9
pandasobjectকলামগুলিতে মিশ্র মানগুলি (স্ট্রিংস, সংখ্যা, ন্যান) থাকলে অবাধে dtype ব্যবহার করে ।
এইচপলজ

@quant এটা পান্ডাস স্ট্রিং মত আমি আমার পয়েন্ট করার চেষ্টা মানে উত্তর
prosti থেকে

উত্তর:


106

এর অর্থ:

'O'     (Python) objects

উত্স

প্রথম অক্ষরটি ডেটা ধরণের নির্দিষ্ট করে এবং বাকী অক্ষরগুলি ইউনিকোড ব্যতীত আইটেম প্রতি বাইটের সংখ্যা নির্দিষ্ট করে, যেখানে এটি অক্ষরের সংখ্যা হিসাবে ব্যাখ্যা করা হয়। আইটেমের আকার অবশ্যই বিদ্যমান ধরণের সাথে সামঞ্জস্য করা উচিত, বা একটি ত্রুটি উত্থাপিত হবে। সমর্থিত প্রকারগুলি একটি বিদ্যমান ধরণের হয়, বা একটি ত্রুটি উত্থাপিত হবে। সমর্থিত প্রকারগুলি হ'ল:

'b'       boolean
'i'       (signed) integer
'u'       unsigned integer
'f'       floating-point
'c'       complex-floating point
'O'       (Python) objects
'S', 'a'  (byte-)string
'U'       Unicode
'V'       raw data (void)

আর একটি উত্তর সাহায্য করে যদি চেক প্রয়োজন হয় type


19

আপনি যখন 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')আমরা স্ট্রিংটি আশা করি belongs


ব্যাখ্যার সাথে পরীক্ষার জন্য এখানে কিছু কোড দেওয়া আছে: আমাদের কাছে অভিধান হিসাবে ডেটাসেট থাকলে

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এটি মূল কলামটি টাইপকে প্রভাবিত করবে না। আউটপুটটি এরকম হবে:

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


14

এর অর্থ "পাইথন অবজেক্ট", অর্থাৎ বিল্টিন স্কেলার প্রকারগুলির মধ্যে একটিও নিম্পি দ্বারা সমর্থিত নয়।

np.array([object()]).dtype
=> dtype('O')

6

'ও' অর্থ অবজেক্টের জন্য ।

#Loading a csv file as a dataframe
import pandas as pd 
train_df = pd.read_csv('train.csv')
col_name = 'Name of Employee'

#Checking the datatype of column name
train_df[col_name].dtype

#Instead try printing the same thing
print train_df[col_name].dtype

প্রথম লাইনটি ফিরে আসে: dtype('O')

মুদ্রণ বিবৃতি সহ লাইনটি নিম্নলিখিতটি দেয়: object

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.