Pandas数据类型

本文介绍了Pandas数据类型,包括默认值、向上转型、astype方法和对象转换。Pandas扩展了NumPy类型系统,提供了object、string等类型。在处理数据时,Pandas会根据数据类型进行向上转型,并提供了astype()方法进行显式转换。对于存储为object的对象,可以通过infer_objects()将其转换为正确类型。此外,还介绍了to_numeric()、to_datetime()和to_timedelta()等转换函数,以及如何处理转换错误。
摘要由CSDN通过智能技术生成

大多数情况下,Pandas使用NumPy数组、Series或DataFrame里某列的数据类型。NumPy支持float、int、bool、timedelta[ns]、datetime64[ns],NumPy是不支持带时区信息的datetime。
Pandas与第三方支持库扩充了NumPy类型系统,接下来我们主要来介绍Pandas的内部扩展。
Pandas的扩展类型,如下表所示
在这里插入图片描述
Pandas用object存储字符串。
虽然,object数据类型能够存储任何对象,但我们要尽量避免这样做。
DataFrame的dtypes属性用起来很方便,以Series形式返回每列的数据类型。
在这里插入图片描述
要查看Series的数据类型,用dtype属性。
在这里插入图片描述
Pandas对象单列中含多种类型的数据时,该列的数据类型为可适配于各类数据的数据类型,通常为object。
在这里插入图片描述
DataFrame.dtypes.value_用于统计DataFrame里不同数据类型的列数。
在这里插入图片描述
多种数值型数据类型可以在DataFrame里共存。如果只传递一种数据类型,不论是通过dtype关键字直接传递,还是通过ndarray或Series传递,都会保存至DataFrame操作。此外,不同数值型数据类型不会并和。
在这里插入图片描述

默认值

整数的默认类型为int64,浮点数的默认类型为float64,这里的默认值与系统平台无关,不管是32位系统,还是64位系统都是一样的。下列代码返回的结果都是int64:
在这里插入图片描述
但是我们要注意,NumPy创建数组时,会根据系统选择类型。下列代码在32位系统上将返回int32。
在这里插入图片描述

向上转型

与其它类型合并时,用的是向上转型,指的是从现有类型转换为另一种类型,如int转换为float。
在这里插入图片描述
DataFrame.to_numpy()返回多个数据类型里用得最多的数据类型,这里指的是,输出结果的数据类型,适用于所有同构NumPy数组的数据类型。此处强制执行向上转型。
在这里插入图片描述

astype

astype()方法显式地把一种数据类型转换为另一种,默认操作为 复制数据,就算数据类型没有改变也会复制数据,copy=False改变默认操作模式。此外,astype无效时,会触发异常。
向上转型一般都遵循NumPy规则,操作中含有两种不同类型地数据时,返回更为通用地那种数据类型。
在这里插入图片描述
用astype把一列或多列转换为指定类型。
在这里插入图片描述
astype通过字典指定哪些列转换为哪些类型。
在这里插入图片描述
在这里插入图片描述
注意用astype与loc()为部分列转换指定类型时,会发生向上转型。
loc()尝试分配当前地数据类型,而[]则会从右方获取数据类型并进行覆盖。因此,下列代码会发生意料之外地结果:
在这里插入图片描述

对象转换

Pandas提供了多种函数可以把object从一种数据类型转换为另一种类型。这是因为,数据有时存储的是正确类型,但在保存时却存成了object类型,此时,用DataFrame.infer_objects()
与Series.infer_objects()方法即可把数据转换为正确的类型。
在这里插入图片描述
因为数据被转置,所以把原始列的数据类型改成了object,但使用infer_objects后就变正确了。
在这里插入图片描述
下列函数可以应用于一维数组与标量,执行硬转换,把对象转换为指定类型。
to_numeric()转换为数值型
在这里插入图片描述
to_datetime()转换为datetime对象
在这里插入图片描述
to_timedelta()转换为timedelta对象。
在这里插入图片描述
如需强制转换,则要加入error参数,指定Pandas怎样处理不能转换为预期类型或对象的数据。errors参数的默认值为False,指定的是在转换过程中,遇到任何问题都触发错误。设置为errors=‘coerce’时,pandas会忽略错误,强制把问题数据转换为pd.NaT(datetime与timedelta),或np.nan(数值型)。读取数据时,如果大部分要转换的数据是数值型或detetime,这种操作非常有用,但偶尔也会有非制式数据混合在一起,可能会导致展示数据缺失:
在这里插入图片描述
error参数还有第三个选项,error=’ignore’。转换数据时会忽略错误,直接输出问题数据:
在这里插入图片描述
执行转换操作时,to_numeric还有一个参数,downcast,即向下转型,可以把数值型转换为减少内存占用的数据类型:
在这里插入图片描述
上述方法仅能应用于一维数组、列表或标量;不能直接用于DataFrame等多维对象。不过,用apply(),可以快速为每列应用函数:
在这里插入图片描述
以上就是Pandas数据类型的所有内容了,希望对你有所帮助。

如果你想学习Python,但是找不到学习路径和资源,欢迎上指尖编程

高效的在线交互式学Python!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值