python数据清洗学习笔记–数据转换
1、日期格式数据处理
• Pandas中使用to_datetime()方法将文本格式转换为日期格式
• dataframe数据类型如果为datetime64,可以使用dt方法取出年月日等
• 对于时间差数据,可以使用timedelta函数将其转换为指定时间单位的数值
• 时间差数据,可以使用dt方法访问其常用属性
sec_cars['Boarding_time'] = pd.to_datetime(sec_cars['Boarding_time'] )
sec_cars['diff_day'] = pd.datetime.today() - sec_cars['Boarding_time’]
sec_cars['Boarding_time’].dt.year
sec_cars['diff_day’]/pd.Timedelta(‘1 hour’)
Timedelta.dt.days
# 对购买日期进行转换
df['buy_date'] = pd.to_datetime(df['day'],format='%Y%m%d',errors = 'coerce')
#加errors防止报错
# 可以提取对应年月日,必须为timestamp才可以,具体的时间点
df['buy_date'].dt.year.head(5)
2、字符串数据处理
• Pandas中提供了字符串的函数,但只能对字符型变量进行使用
• 通过str方法访问相关属性
• 可以使用字符串的相关方法进行数据处理
函数名称 | 说明 |
---|---|
contains() | 返回表示各str是否含有指定模式的字符串 |
replace() | 替换字符串 |
lower() | 返回字符串的副本,其中所有字母都转换为小写 |
upper() | 返回字符串的副本,其中所有字母都转换为大写 |
split() | 返回字符串中的单词列表 |
strip() | 删除前导和后置空格 |
join() | 返回一个字符串,该字符串是给定序列中所有字符串的连接 |
3、高阶函数数据处理
• 在dataframe中使用apply方法,调用自定义函数对数据进行处理
• 函数apply, axis=0表示对行进行操作,axis=1表示对列进行操作
• 可以使用astype函数对数据进行转换
• 可以使用map函数进行数据转换
f1 = lambda x: str(x).strip() and str(x).replace(',',‘’)
farmer_loan['贷款余额'] = farmer_loan['贷款余额'].apply(f1)
farmer_loan['贷款发放金额'] = farmer_loan['贷款发放金额'].astype(float)
farmer_loan['ID'] = farmer_loan['户主身份证号'].apply(lambda x: x[0:3])
#使用map函数
df2['性别'] = df2['gender'].map({'0':'女','1':'男','2':'未知'})
#结合lambda替换
df2['user_id'].apply(lambda x: x.replace(x[1:3],'**')).head(5)
#提取年份
df2['birthday'].apply(lambda x: str(x)[0:4]).head(5)
#定义函数
def f(x):
if '0' in x:
return '女'
elif '1' in x :
return '男'
else:
return '未知'
# 0代表女,1代表男,2代表未知
df2['性别'] = df2['gender'].apply(f)
记录自:python数据清洗实战:Peter老师