python中dtype什么意思_什么是dtype('O')?

当您在dataframe中看到dtype('O')时,这意味着Pandas字符串

什么是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')

您可以将最后一个解释为Pandasdtype('O')或Pandas对象,后者是Python类型字符串,这对应于Numpystring_,或unicode_类型。Pandas dtype Python type NumPy type Usage

object str string_, unicode_ Text

就像堂吉诃德在屁股上一样,熊猫在Numpy上,Numpy理解系统的底层架构,并使用类^{}来实现这一点。

数据类型对象是numpy.dtype类的一个实例,它可以更精确地理解数据类型,包括:数据类型(integer、float、Python对象等)

数据大小(例如整数中有多少字节)

数据的字节顺序(小尾数或大尾数)

如果数据类型是结构化的,则为其他数据类型的聚合(例如,描述由整数和浮点组成的数组项)

结构的“字段”的名称是什么

每个字段的数据类型是什么

每个字段占用内存块的哪个部分

如果数据类型是子数组,那么它的形状和数据类型是什么

在这个问题的上下文中dtype同时属于pands和numpy,特别是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

各种各样的dtypesdf.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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值