栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

12、pandas 数据类型转换

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

12、pandas 数据类型转换


本章内容

    Pandas所支持的数据类型转换数据类型的思路astype()函数pd.to_numeric函数pd.to_datetime函数pd.to_timedelta函数convert_dtypes函数、infer_objects函数其他转换类型函数
1、 Pandas所支持的数据类型:
    floatintbooldatetime64[ns]datetime64[ns, tz]timedelta[ns]categoryobject
    默认的数据类型是int64,float64.
2、转换数据类型的思路
    使用astype()方法强制转化dtype自定义一个数据转换函数函数使用pandas内置的tonumeric()和todatetime()导入数据时转换数据类型
3、astype()函数

df.astype(dtype, copy:bool=True, errors:str=‘raise’)

参数:
-dtype:类型或者类型列表
-copy:默认True
-errors :转换失败时是否报错,取值:'raise', 'ignore',默认raise,报错

示例:

df.dtypes 			#获取所有列的类型
df.astype(dtype={'工资':'float','时间':'string'},errors='ignore' # 多列转换,dict 映射
df['dept 1'].astype('int',errors='ignore') # 转换为失败,默认报错,也可以忽略 转换失败的错误并保持原样
df.工资.astype(str)				   # 转换为 object素的原样
df.工资.astype(pd.StringDtype())   # 转换为 string
df.工资.astype('string') 		   # 转换为 string
df.时间.astype('datetime64[ns]')   # 转换为 datetime,注意unit
df.奖金.astype('float32') 			# 转换为 float32 
df.奖金.astype('float') 			# 转换为 float
df.dept.astype('category') 			# 转换成分类数据
4、pd.to_numeric函数

pd.to_numeric(arg, errors=‘raise’, downcast=None)

参数:
-errors:转换失败时是否报错,默认raise,报错
-dowmcast:指定downcast 目标类型
pd.to_numeric(df.工资)
pd.to_numeric(df.工资,downcast='float') # 指定downcast 目标类型,具体参数值选取参考官方文档
pd.to_numeric(df.company,errors='coerce') # 如果失败,强制将转换失败的转换为nan
pd.to_numeric(df.company,errors='ignore') # 如果失败,忽略并保持原数据不变
pd.to_numeric(df.dept,errors='raise') # 尝试转换成数字,如果失败 默认报错
5、pd.to_datetime函数

pd.to_datetime(arg, errors:str=‘raise’, dayfirst:bool=False, yearfirst:bool=False, utc:None, format:None, exact:True, unit:None, infer_datetime_format:bool=False, origin=‘unix’, cache:bool=True) ]

参数:
-errors: 转换失败时是否报错,默认raise,报错
-dayfirst:布尔类型,默认false
-yearfirst:布尔类型,默认false
-utc: bool, default None
-format: 格式,format='%y/%m/%d'
-exact: 布尔类型,默认true
-unit:时间单位
-infer_datetime_format: 转换加速,布尔类型
-origin:origin 指定时间的起点类型
-cache: 布尔类型,默认true

示例:

pd.to_datetime(df.时间.astype(str)) # 简单的,将转换成str的时间列再转换回时间类型
pd.to_datetime(df.salary,errors='ignore') # 转换失败,保留原数据
pd.to_datetime(df.salary,errors='coerce') # 转换失败,强制转换成nat
pd.to_datetime(df.salary,errors='raise') # 转换失败默认报错
pd.to_datetime(460386857.5,unit='ms',origin='unix')  # 将时间偏移数量转换成时间。unit 指定时间单位  origin 指定 时间的起点类型
pd.to_datetime(460386857,unit='ns',origin='unix')  # 将时间偏移数量转换成时间。unit 指定时间单位  origin 指定时间的起点类型
pd.to_datetime('10/11/12',format='%y/%m/%d') # 设置时间格式字符串
pd.to_datetime('10/11/12',format='%d/%m/%y') # 设置时间格式字符串
pd.to_datetime(df.时间,infer_datetime_format=True) # 推断第一个时间字符串的格式,尝试转换加速
pd.to_datetime('10/11/12',yearfirst=True) # 指定第一个数字(10)为年
pd.to_datetime('10/11/12',dayfirst=True) # 指定第一个数字(10)为日

pd.to_datetime('10/11/12 00:00+5',utc=False) # utc。注意对比这几个的区别,带时区 与 不带时区
pd.to_datetime('10/11/12 00:00+5',utc=True) # utc 化
pd.to_datetime('10/11/12 05:00+5',utc=True) # utc 化
pd.to_datetime('10/11/12',utc=True) # utc 化

pd.to_datetime('10/11/12 05:00+5',format='%m/%d',exact=False) # format非精确匹配模式
pd.to_datetime('10/11/12 05:00+5',format='%y/%m/%d',exact=False) # format非精确匹配模式
pd.to_datetime('10/11/12 00:00+5',format='%y/%m/%d',exact=True) # format精确匹配模式
6、pd.to_timedelta函数

pd.to_timedelta(arg, unit=None, errors=‘raise’)

示例:

pd.to_timedelta('1 days 05:30:30') # 转换成timedelta
pd.to_timedelta('1 days ') # 转换成timedelta
pd.to_timedelta('1 days 05:30:30',unit='H') # 转换成timedelta。str不能使用unit(来自错误提示)
pd.to_timedelta(np.arange(10),unit='H') # 转换成timedelta。10个,间隔一个小时
pd.to_timedelta(arg=['1 days 05:30:30',np.nan,'1 days']) # 转换成timedelta。可以使用list作为arg(数据源)

7、convert_dtypes 函数、infer_objects 函数

df.convert_dtypes(infer_objects:bool=True, convert_string:bool=True, convert_integer:bool=True, convert_boolean:bool=True)

参数:
-infer_objects=True, 
-convert_string=True,
-convert_integer=True,
-convert_boolean=True, 
-convert_floating=True
df.convert_dtypes()      # 转换成可能的类型
df.convert_dtypes().dtypes
df.convert_dtypes(convert_string=False) 

infer_objects 尝试推断列的最可能的类型

df.infer_objects().dtypes     # 推断可能的类型
8、其他转换类型函数

to_string 转换成字符串,
to_period 转换成周期,
to_xarray 转换成 xarray,
to_dict 转换成 字典,
to_json 保存成json

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号