Pandalarda bir veri çerçevem var ve değerlerinin ne tür olduğunu anlamaya çalışıyorum. Sütunun türünün ne olduğundan emin değilim 'Test'
. Ancak myFrame['Test'].dtype
koştuğumda;
dtype('O')
Ne anlama geliyor?
Yanıtlar:
Anlamı:
'O' (Python) objects
Kaynak .
İlk karakter, veri türünü belirtir ve kalan karakterler, karakter sayısı olarak yorumlandığı Unicode hariç, öğe başına bayt sayısını belirtir. Öğe boyutu mevcut bir türe karşılık gelmelidir, aksi takdirde bir hata ortaya çıkar. Desteklenen türler, mevcut bir türdür veya bir hata ortaya çıkar. Desteklenen türler şunlardır:
'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)
Kontrol gerekirse başka bir cevap yardımcı olur type
.
dtype('O')
dataframe bu anlamına Pandalar dize içinde.Nedir dtype
?
pandas
Ya numpy
da her ikisine ya da her ikisine ait olan bir şey ya da başka bir şey? Pandaların kodunu incelersek:
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
Şöyle çıktı:
float int datetime string
0 1.0 1 2018-03-10 foo
---
float64 int64 datetime64[ns] object
---
dtype('O')
dtype('O')
Sonuncuyu string_
, Python tipi dizesi olan Pandas veya Pandas nesnesi olarak yorumlayabilirsiniz ve bu, Numpy veya unicode_
türlere karşılık gelir .
Pandas dtype Python type NumPy type Usage
object str string_, unicode_ Text
Don Kişot'un kıçta olduğu gibi, Pandalar da Numpy'de ve Numpy sisteminizin temel mimarisini anlıyor ve bunun için sınıfı kullanıyor numpy.dtype
.
Veri türü nesnesi, numpy.dtype
veri türünü daha kesin olarak anlayan bir sınıf örneğidir :
Bu soru bağlamında dtype
hem pand hem de numpy'ye aittir ve özellikle dtype('O')
dizeyi beklediğimiz anlamına gelir.
İşte açıklama ile test etmek için bazı kodlar: Sözlük olarak veri kümesine sahipsek
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)
Son satırlar veri çerçevesini inceleyecek ve çıktıyı not edecektir:
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
Her çeşit farklı dtypes
df.iloc[1,:] = np.nan
df.iloc[2,:] = None
Ama ayarlamaya çalışırsak, np.nan
yoksa None
bu orijinal sütun dtype'ini etkilemeyecektir. Çıktı şöyle olacak:
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
Tüm sütun satırlarını veya olarak ayarlamadığımız sürece sütunları öyle np.nan
veya None
böyle değiştirmeyeceğiz . Bu durumda sütun veya sırasıyla olacaktır .dtype
np.nan
None
float64
object
Ayrıca tek satırlar ayarlamayı deneyebilirsiniz:
df.iloc[3,:] = 0 # will convert datetime to object only
df.iloc[4,:] = '' # will convert all columns to object
Ve burada not etmek gerekirse, dizgeyi dizge olmayan bir sütunun içine ayarlarsak, dizge veya nesne olur dtype
.
'O' nesne anlamına gelir .
#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
İlk satır şunu döndürür: dtype('O')
Print deyiminin bulunduğu satır şunu döndürür: object
pandas
object
sütunlar karışık değerler (dizeler, sayılar, nan) içerdiğinde serbestçe dtype kullanır .