pyhton-numpy-pandas类型

data.info()查看加载数据的相关信息

pandas的类型转化有三种,

使用astype()函数进行强制类型转换
自定义函数进行数据类型转换
使用Pandas提供的函数如to_numeric()、to_datetime()

1. astype

data['客户编号'].astype('object')

data['客户编号'] = data['客户编号'].astype('object') #对原始数据进行转换并覆盖原始数据列

astype会失效的


astype()函数有效的情形:

据列中的每一个单位都能简单的解释为数字(2, 2.12等)
数据列中的每一个单位都是数值类型且向字符串object类型转换

2. apply (函数内存对象) 自定义函数转化类型

#使用匿名函数
data['2016'].apply(lambda x: x.replace('¥', '').replace(',', '')).astype('float')

状态值的准话,可以使用numpy中的where函数,Y--True N--False

data['状态'] = np.where(data['状态'] == 'Y', True, False)

3. pandas的一些辅助函数

辅助函数对于某些特定数据类型的转换非常有用(如to_numeric()、to_datetime())。所属组数据列中包含一个非数值,用astype()转换出现了错误,然而用to_numeric()函数处理就优雅很多。

pd.to_numeric(data['所属组'], errors='coerce').fillna(0)
对于astype的类型不同替换错误的问题,to_numeric做了默认值处理, 非数值的替换成了0,而且是可以指定的,
Pandas中的to_datetime()函数可以把单独的year、month、day三列合并成一个单独的时间戳。

读取文件的时候直接进行类型转换

data2 = pd.read_csv("data.csv",
   converters={
    '客户编号': str,
    '2016': convert_currency,
    '2017': convert_currency,
    '增长率': convert_percent,
    '所属组': lambda x: pd.to_numeric(x, errors='coerce'),
    '状态': lambda x: np.where(x == "Y", True, False)
    },
   encoding='gbk')

猜你喜欢

转载自www.cnblogs.com/0916m/p/12642516.html