购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.4 数据类型转换

4.4.1 基本数据类型转换

在数据分析中,指定数据类型非常重要。与其他分析软件一样,Pandas数据集中一列只能有一个数据类型。数据类型可以在数据初始化时通过设置dtype参数指定,也可以使用convert_dtypes()智能推定,如代码清单4-5所示。

代码清单4-5 使用convert_dtypes()指定数据类型示例

代码运行结果如下:

编号 object

患者 object

出生日期 object

收缩压 int64

舒张压 int64

dtype: object

结果显示了各列的数据类型,说明自动判定也很准确。但是有时候根据分析要求,需要对数据类型进行转换。Pandas提供了两种比较常用的方法:①astype()强制转化数据类型,括号内为需要转换的数据类型,如int、float、str等;②to_numeric()和to_datetime()转换为数据型(浮点或整数型)和日期型,如代码清单4-6所示。

代码清单4-6 数据类型转换示例

代码运行结果如下:

4.4.2 时间日期数据类型转换

前面介绍的to_datetime可以将字符串、列表、series等转成日期格式。在Pandas中,日期对象有两种重要的形式,分别为Timestamp和DatetimeIndex。Timestamp是日期的对象形式,DatetimeIndex是日期的对象列表形式,即Timestamp的列表形式。to_datetime对单个日期字符串进行处理会得到Timestamp,而对日期字符串列表进行处理会得到DatetimeIndex。to_datetime()是常用的日期转换方法,其常用格式为:pd.to_datetime(arg, errors='raise',format=None)。其中,arg为需要转换的数据。errors为处理错误的方式,包括3种:①“raise”表示遇到无法解析的数据时将引发异常(报错);②“coerce”表示遇到无法解析的数据时表示为缺失值“NaT”;③“ignore”表示遇到无法解析的数据时将不进行转换,保留原值;④“foramt”为解析数据的日期格式。

To_datetime()的使用方法如代码清单4-7所示。

代码清单4-7 时间日期类型数据转换示例

代码运行结果如下:

在代码清单4-7中,日期1中一个字符串为“20015-02”,to_datetime()转换使用的是“errors=‘coerce’”,无法强制转换为日期,所以最后返回值为缺失值。日期3中一个字符串为“2021”,to_datetime()转换使用的“errors=‘ignore’”对无法转换的字符串不进行处理,所以返回值为字符串“2021”。

将数字、字符串等转换为日期后,一般还会提取年、月、日进行运算,以代码清单4-7中的df为例,提取日期、年、月、日,并计算日期的差值,如代码清单4-8所示。

代码清单4-8 对日期类型数据进行运算示例

代码运行结果如下:

计算出来的差值为timedelta64格式,不能直接进行计算,可以使用代码“df[ 'd' ]. map ( lambda x: x.days)”转换为数字。代码运行结果如下:

此外,日期还可以直接增加年、月、日运算,如在日期2中增加1个月,代码为:

from pandas.tseries.offsets import DateOffset

df[ '日期2+1月' ] = pd . to_datetime (df[ '日期2' ]) + DateOffset(months= 1 )

通过print(df)查看结果,显示如下: SZ5GYVcYYVShi1lTFAhZXJq59wsdYcHXiXlqIJW544tprgELh6TSxl4tSWctKOYP

点击中间区域
呼出菜单
上一章
目录
下一章
×