Tôi có một khung dữ liệu ở gấu trúc và tôi đang cố gắng tìm ra các loại giá trị của nó. Tôi không chắc loại cột là gì 'Test'
. Tuy nhiên, khi tôi chạy myFrame['Test'].dtype
, tôi nhận được;
dtype('O')
Điều đó có nghĩa là gì?
Tôi có một khung dữ liệu ở gấu trúc và tôi đang cố gắng tìm ra các loại giá trị của nó. Tôi không chắc loại cột là gì 'Test'
. Tuy nhiên, khi tôi chạy myFrame['Test'].dtype
, tôi nhận được;
dtype('O')
Điều đó có nghĩa là gì?
Câu trả lời:
Nó có nghĩa là:
'O' (Python) objects
Nguồn .
Ký tự đầu tiên chỉ định loại dữ liệu và các ký tự còn lại chỉ định số byte cho mỗi mục, ngoại trừ Unicode, nơi nó được hiểu là số ký tự. Kích thước mặt hàng phải tương ứng với loại hiện có, nếu không sẽ xuất hiện lỗi. Các loại được hỗ trợ thuộc loại hiện có, nếu không sẽ xảy ra lỗi. Các loại được hỗ trợ là:
'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)
Một câu trả lời khác giúp nếu cần kiểm tra type
s.
dtype('O')
bên trong khung dữ liệu, điều này có nghĩa là chuỗi Pandas.Là dtype
gì?
Thứ gì đó thuộc về pandas
hoặc numpy
, hoặc cả hai, hoặc thứ gì khác? Nếu chúng ta kiểm tra mã gấu trúc:
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
Nó sẽ xuất ra như thế này:
float int datetime string
0 1.0 1 2018-03-10 foo
---
float64 int64 datetime64[ns] object
---
dtype('O')
Bạn có thể diễn giải cuối cùng là dtype('O')
đối tượng Pandas hoặc Pandas là chuỗi loại Python và điều này tương ứng với Numpy string_
hoặc unicode_
các loại.
Pandas dtype Python type NumPy type Usage
object str string_, unicode_ Text
Giống như Don Quixote đang ở trên mông, Pandas ở trên Numpy và Numpy hiểu kiến trúc cơ bản của hệ thống của bạn và sử dụng lớp numpy.dtype
cho điều đó.
Đối tượng kiểu dữ liệu là một thể hiện của numpy.dtype
lớp hiểu kiểu dữ liệu chính xác hơn bao gồm:
Trong ngữ cảnh của câu hỏi này dtype
thuộc về cả pands và numpy và đặc biệt dtype('O')
có nghĩa là chúng tôi mong đợi chuỗi.
Đây là một số mã để kiểm tra với giải thích: Nếu chúng tôi có tập dữ liệu dưới dạng từ điển
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)
Các dòng cuối cùng sẽ kiểm tra khung dữ liệu và lưu ý kết quả đầu ra:
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
Tất cả các loại khác nhau dtypes
df.iloc[1,:] = np.nan
df.iloc[2,:] = None
Nhưng nếu chúng ta cố gắng đặt np.nan
hoặc None
điều này sẽ không ảnh hưởng đến loại cột ban đầu. Đầu ra sẽ như thế này:
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
Vì vậy, np.nan
hoặc None
sẽ không thay đổi các cột dtype
, trừ khi chúng tôi đặt tất cả các hàng cột thành np.nan
hoặc None
. Trong trường hợp đó, cột sẽ trở thành float64
hoặcobject
tương ứng.
Bạn cũng có thể thử đặt các hàng đơn:
df.iloc[3,:] = 0 # will convert datetime to object only
df.iloc[4,:] = '' # will convert all columns to object
Và lưu ý ở đây, nếu chúng ta đặt chuỗi bên trong một cột không phải chuỗi thì nó sẽ trở thành chuỗi hoặc đối tượng dtype
.
'O' là viết tắt của đối tượng .
#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
Dòng đầu tiên trả về: dtype('O')
Dòng có câu lệnh in trả về như sau: object
pandas
tự do sử dụngobject
dtype khi các cột chứa các giá trị hỗn hợp (chuỗi, số, nan).