比较系统的学习 pandas (6)

 pandas  数据类型转换

在开始数据分析前,有时需要为数据分配好合适的类型,这样才能 够高效地处理数据

# 对所有字段指定统一类型
data= pd.DataFrame(data, dtype='float32')
# 对每个字段分别指定
data = pd.read_excel(data.xlsx, dtype={'name': 'string', 'score': 'int32'})

1、指定数据DataFrame或Series类型

# 按大体类型推定
m = ['1', 2, 3]

s = pd.to_numeric(s) # 转成数字

pd.to_datetime(m) # 转成时间

pd.to_timedelta(m) # 转成时间差

pd.to_datetime(m, errors='coerce') # 错误处理

pd.to_numeric(m, errors='ignore')

pd.to_numeric(m errors='coerce').fillna(0) # 兜底填充

pd.to_datetime(data[['year', 'month', 'day']]) # 组合成日期

注意 : pd.to_datetime() 很重要

细讲pd.to_datetime() 函数

pd.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=None, box=True, format=None, exact=True, unit=None, infer_datetime_format=False, origin='unix', cache=True)

常用参数解析:

arg:int,float,str,datetime,list,tuple,1-d数组,Series,DataFrame / dict-like,要转换为日期时间的对象

errors:{'ignore','raise','coerce'},默认为'raise'

        如果为“ raise”,则无效的解析将引发异常

        如果为“coerce”,则将无效解析设置为NaT

        如果为“ ignore”,则无效的解析将返回输入

format:str,格式,default None,解析时间的strftime,eg :   “%d /%m /%Y”。

详情https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

2、类型转换函数 astype()

一般都使用 astype()操作数据转换。

data.index.astype('int64') # 索引类型转换

data.astype('int32') # 所有数据转换为int32

data.astype({'列名1': 'int32'}) # 指定字段转指定类型

data.astype('int64', copy=False) # 不与原数据关联

data['name'].astype('object')  #name列转换为 object 类型

data["状态"].astype("bool")

s.astype('datetime64[ns]') #转化为时间类型

当数据的格式不具备转换为目标类型的条件时,需要先对数据进行 处理。例如 百分数 转换为小数需要先去除 % 

# 将"89.3%"这样的文本转为浮点数
data.rate.apply(lambda x: x.replace('%', '')).astype('float')/10

你可能感兴趣的:(数据分析,Python,pandas)