当前位置: 首页 > 知识库问答 >
问题:

熊猫识别的所有数据类型是什么?

柯锋
2023-03-14

对于熊猫,有人知道,除了

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

(ii)bool

(iii)datetime64timedelta64

例如字符串列,总是有一个dtype对象

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

共有3个答案

太叔涵亮
2023-03-14

在其他答案的基础上,熊猫还包括了一些自己的数据类型。

Pandas和第三方库在一些地方扩展了NumPy的类型系统。本节介绍pandas在内部进行的扩展。请参阅扩展类型,了解如何编写自己的可用于pandas的扩展。有关已实现扩展的第三方库的列表,请参见扩展数据类型。

下表列出了所有的熊猫扩展类型。请参阅相关文件

https://pandas.pydata.org/pandas-docs/stable/user_guide/basics.html#basics-dtypes

--更新链接--

此外,从pandas 1.0开始,它有自己的字符串数据类型和可为空的数据类型。

柳威
2023-03-14

熊猫1.0.0发布后编辑2020年2月

Pandas主要为每个Series使用NumPy数组和dtype(数据帧是Series的集合,每个Series可以有自己的dtype)。NumPy的留档进一步解释了dtype、数据类型和数据类型对象。此外,由@lCameron on05提供的答案提供了对Numpy dtype的出色描述。此外,大熊猫在dtype上的文档有很多额外的信息。

熊猫对象中存储的主要类型有float、int、bool、datetime64[ns]、timedelta[ns]和object。此外,这些数据类型具有项目大小,例如int64和int32。

默认情况下,整数类型为int64,浮点类型为Float64,平台REGARDLESS(32位或64位)。以下内容都将产生int64 dtype。

但是,Numpy在创建阵列时将选择依赖于平台的类型。以下内容将在32位平台上生成int32。pandas 1.0.0版的主要变化之一是引入了pd.NA来表示标量缺失值(而不是先前的np.nanpd.NaTNone,具体取决于用法)。

Pandas扩展了NumPy的类型系统,还允许用户编写扩展类型。下面列出了所有的熊猫扩展类型。

1) 时区处理

数据类型:tz感知的datetime(注意NumPy不支持时区感知的datetime)。

数据类型:DatetimeTZDtype

标量:时间戳

数组:arrays.DatetimeArray

字符串别名:'datetime64[ns,]'

2)类别数据

数据种类:类别

数据类型:分类数据类型

标量:(无)

数组:分类

字符串别名:“类别”

3) 时间跨度表示法

数据类型:周期(时间跨度)

数据类型:PeriodDtype

标量:周期

数组:数组。周期数组

字符串别名:“句点[]”,“句点[]”

4) 稀疏数据结构

数据种类:稀疏

数据类型: SparseDtype

标量:(无)

数组:arrays.SparseArray

字符串别名:'Sparse','Sparse[int]','Sparse[浮动]'

5) IntervalIndex

数据种类:间隔

数据类型:IntervalDtype

标量:区间

数组:数组。IntervalArray

字符串别名:间隔,间隔,间隔[

6) 可为空的整数数据类型

数据类型:可为空的整数

数据类型: Int64Dtype,...

标量:(无)

数组:arrays.IntegerArray

字符串别名:Int8,Int16,Int32,Int64,UInt8,UInt16,UInt32,UInt64

7) 使用文本数据

数据类型:字符串

数据类型: StringDtype

标量:str

数组:arrays.StringArray

字符串别名:'string'

8) 缺少值的布尔数据

数据类型:布尔值(带NA)

数据类型:BooleanDtype

标量:布尔

数组:arrays.BooleanArray

字符串别名:'boolean'

子车睿
2023-03-14

pandasnumpy借用其数据类型。有关这方面的演示,请参见以下内容:

import pandas as pd

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

>>> dtype('O')

type(df['A'].dtype)

>>> numpy.dtype

您可以在文档中找到有效的numpy.d类型列表

“?”布尔值

'b'(有符号)字节

“B”无符号字节

“i”(有符号)整数

u无符号整数

f浮点数

“c”复数浮点

'时间三角洲

“M”日期时间

“O”(Python)对象

“S”、“a”以零结尾的字节(不推荐)

“U”Unicode字符串

“V”原始数据(无效)

熊猫应该支持这些类型。使用pandas.Series对象的astype方法,将上述任何选项作为输入参数,将导致pandas尝试将Series转换为该类型(或至少返回到对象类型)'u'是我看到的唯一一个根本不理解的熊猫:

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')numpy.dtype('float64')等相同。将参数传递给pandasastype方法也是如此。

要在NumPy中找到相应的数据类型类,Pandas文档建议如下:

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文档包含更多详细信息和图表:

 类似资料:
  • 问题内容: 对于大熊猫,有人会知道,除了 (i), (以及like等的其他变体,等等) (ii) (iii), 如字符串列,总有一个的? 另外,我想知道,如果有来自任何数据类型分开(I),(II)和(iii)在上面的列表中不会使这是一个? 问题答案: pandas1.0.0发布后,于2020年2月编辑 熊猫通常为每个Series使用NumPy数组和dtype(数据帧是Series的集合,每个都有自

  • 问题内容: 嗨,我正在尝试打印用户输入的数据类型并产生一个如下表: ABCDEFGH =字符串,1.09 =浮点型,0 =整数,true =布尔 等等。我使用的是python 3.2.3,我知道我可以使用type()来获取数据的类型,但是在python中,所有用户输入都被当作字符串使用,而且我不知道如何确定输入是否为字符串,布尔值,整数或浮点数。这是代码的一部分: 它总是为字符串返回str。感谢任

  • 问题内容: 我有一个名称为的csv文件。我打开并使用以下方法创建了一个熊猫: 其中,是字符串对象的python列表。示例(实际列表的长度为22): 在ipython提示符下,如果我键入并按Enter键,则不会获得带有列和值的数据框,如Pandas网站上的示例所示。相反,我获得有关数据框的信息。我得到: 如果我键入,那么我确实会获得该列的预期值。我有两个问题: (1)在pandas网站上的示例中(例

  • 问题内容: 如果我有一个包含以下列的数据框: 我想说:这是一个数据框,请给我列出对象类型或日期时间类型的列的列表吗? 我有一个将数字(Float64)转换为两位小数的函数,并且我想使用此数据框列的特定类型的列表,并通过此函数运行它以将它们全部转换为2dp。 也许: 问题答案: 如果您想要某种类型的列的列表,可以使用:

  • 我在Pandas中读取了一个SQL查询,虽然值是字符串、日期和整数,但它们是作为dtype“object”输入的。我能够将日期“对象”转换为datetime数据类型,但在尝试转换字符串和整数时出错。 以下是一个例子: 将转换为日期时间有效: 但我在尝试将转换为整数时出错: 注意:我得到一个类似的错误,当我尝试 当试图转换为字符串时,似乎什么也没有发生。

  • 我对Python是新手。我有以下代码: