gpt4 book ai didi

python - Pandas 识别的所有 dtypes 是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:35:44 30 4
gpt4 key购买 nike

对于 pandas,如果有任何数据类型,谁会知道

(i) float64int64(以及 np.number 的其他变体,例如 float32int8 等)

(ii) bool

(iii) datetime64, timedelta64

比如字符串列,总是有一个 dtypeobject

或者,我想知道,除了上面的列表中的 (i)、(ii) 和 (iii) 之外,是否有任何数据类型 pandas 不会使其成为 dtype 一个对象

最佳答案

pandasnumpy 借用它的 dtypes。有关这一点的演示,请参见以下内容:

import pandas as pd

df = pd.DataFrame({'A': [1,'C',2.]})
df['A'].dtype

>>> dtype('O')

type(df['A'].dtype)

>>> numpy.dtype

你可以找到有效的numpy.dtypes列表in the documentation :

'?' boolean

'b' (signed) byte

'B' unsigned byte

'i' (signed) integer

'u' unsigned integer

'f' floating-point

'c' complex-floating point

'm' timedelta

'M' datetime

'O' (Python) objects

'S', 'a' zero-terminated bytes (not recommended)

'U' Unicode string

'V' raw data (void)

pandas 应该支持这些类型。使用带有上述任何选项的 pandas.Series 对象的 astype 方法作为输入参数将导致 pandas 尝试将 Series 到那个类型(或者至少回退到 object 类型); 'u' 是我唯一看到 pandas 完全不理解的一个:

df['A'].astype('u')

>>> TypeError: data type "u" not understood

这是一个 numpy 错误,因为 'u' 后面需要一个数字来指定每个项目的字节数(这需要有效):

import numpy as np

np.dtype('u')

>>> TypeError: data type "u" not understood

np.dtype('u1')

>>> dtype('uint8')

np.dtype('u2')

>>> dtype('uint16')

np.dtype('u4')

>>> dtype('uint32')

np.dtype('u8')

>>> dtype('uint64')

# testing another invalid argument
np.dtype('u3')

>>> TypeError: data type "u3" not understood

总而言之,pandas 对象的 astype 方法将尝试对任何对 numpy.dtype 有效的参数做一些有意义的事情。注意 numpy.dtype('f')numpy.dtype('float32')numpy.dtype('f8') 相同code> 与 numpy.dtype('float64') 等相同。将参数传递给 pandas astype 方法也是如此。

要在 NumPy 中定位相应的数据类型类,Pandas docs推荐这个:

def subdtypes(dtype):
subs = dtype.__subclasses__()
if not subs:
return dtype
return [dtype, [subdtypes(dt) for dt in subs]]

subdtypes(np.generic)

输出:

[numpy.generic,
[[numpy.number,
[[numpy.integer,
[[numpy.signedinteger,
[numpy.int8,
numpy.int16,
numpy.int32,
numpy.int64,
numpy.int64,
numpy.timedelta64]],
[numpy.unsignedinteger,
[numpy.uint8,
numpy.uint16,
numpy.uint32,
numpy.uint64,
numpy.uint64]]]],
[numpy.inexact,
[[numpy.floating,
[numpy.float16, numpy.float32, numpy.float64, numpy.float128]],
[numpy.complexfloating,
[numpy.complex64, numpy.complex128, numpy.complex256]]]]]],
[numpy.flexible,
[[numpy.character, [numpy.bytes_, numpy.str_]],
[numpy.void, [numpy.record]]]],
numpy.bool_,
numpy.datetime64,
numpy.object_]]

Pandas 接受这些类作为有效类型。例如,dtype={'A': np.float}.

NumPy 文档 contain更多细节和图表:

dtypes

关于python - Pandas 识别的所有 dtypes 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245848/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com