Saya memiliki kerangka data di panda dan saya mencoba mencari tahu apa jenis nilainya. Saya tidak yakin apa jenis kolomnya 'Test'
. Namun, saat saya lari myFrame['Test'].dtype
, saya mendapatkan;
dtype('O')
Apa artinya ini?
Saya memiliki kerangka data di panda dan saya mencoba mencari tahu apa jenis nilainya. Saya tidak yakin apa jenis kolomnya 'Test'
. Namun, saat saya lari myFrame['Test'].dtype
, saya mendapatkan;
dtype('O')
Apa artinya ini?
Jawaban:
Itu berarti:
'O' (Python) objects
Sumber .
Karakter pertama menentukan jenis data dan karakter yang tersisa menentukan jumlah byte per item, kecuali Unicode, di mana itu diartikan sebagai jumlah karakter. Ukuran item harus sesuai dengan tipe yang ada, atau kesalahan akan muncul. Jenis yang didukung adalah untuk jenis yang sudah ada, atau kesalahan akan muncul. Jenis yang didukung adalah:
'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)
Jawaban lain membantu jika perlu diperiksa type
.
dtype('O')
di dalam dataframe, ini berarti string Pandas.apa yang dtype
?
Sesuatu yang dimiliki pandas
atau numpy
, atau keduanya, atau sesuatu yang lain? Jika kita memeriksa kode panda:
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
Ini akan menghasilkan seperti ini:
float int datetime string
0 1.0 1 2018-03-10 foo
---
float64 int64 datetime64[ns] object
---
dtype('O')
Anda dapat menafsirkan yang terakhir sebagai objek Pandas dtype('O')
atau Pandas yang merupakan jenis string Python, dan ini terkait dengan Numpy string_
, atau unicode_
types.
Pandas dtype Python type NumPy type Usage
object str string_, unicode_ Text
Seperti Don Quixote di pantat, Pandas ada di Numpy dan Numpy memahami arsitektur yang mendasari sistem Anda dan menggunakan kelas numpy.dtype
untuk itu.
Objek tipe data adalah turunan dari numpy.dtype
kelas yang memahami tipe data dengan lebih tepat termasuk:
Dalam konteks pertanyaan ini dtype
milik pands dan numpy dan secara khusus dtype('O')
berarti kita mengharapkan string.
Berikut beberapa kode untuk pengujian dengan penjelasannya: Jika kita memiliki dataset sebagai kamus
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)
Baris terakhir akan memeriksa kerangka data dan mencatat hasilnya:
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
Semua jenis berbeda dtypes
df.iloc[1,:] = np.nan
df.iloc[2,:] = None
Tetapi jika kita mencoba untuk mengatur np.nan
atau None
ini tidak akan mempengaruhi dtype kolom asli. Outputnya akan seperti ini:
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
Jadi np.nan
atau None
tidak akan mengubah kolom dtype
, kecuali kita mengatur semua baris kolom menjadi np.nan
atau None
. Dalam hal ini, kolom akan menjadi float64
atauobject
masing masing.
Anda juga dapat mencoba menyetel baris tunggal:
df.iloc[3,:] = 0 # will convert datetime to object only
df.iloc[4,:] = '' # will convert all columns to object
Dan yang perlu diperhatikan disini, jika kita mengatur string di dalam kolom non string itu akan menjadi string atau objek dtype
.
'O' berarti objek .
#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
Baris pertama kembali: dtype('O')
Baris dengan pernyataan cetak mengembalikan yang berikut: object
pandas
bebas menggunakanobject
dtype ketika kolom berisi nilai campuran (string, angka, nan).