python数据清洗学习笔记--数据转换

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老师

发布了29 篇原创文章 · 获赞 7 · 访问量 1202

猜你喜欢

转载自blog.csdn.net/weixin_44390462/article/details/105307048
今日推荐