python数据清洗实战入门笔记(四)数据转换

数据清洗之数据转换

    • 日期数据格式处理
      • 练习
    • 字符串数据处理
      • 练习
    • 高阶函数数据处理
      • 练习

数据集地址: https://pan.baidu.com/s/1kMH1AhE8RUyaT73rvJsVPQ
提取码:aai6

日期数据格式处理

python数据清洗实战入门笔记(四)数据转换_第1张图片

练习

import numpy as np
import pandas as pd
import os
os.chdir(r'G:\pythonProject\pc\Python数据清洗\data')
df = pd.read_csv('baby_trade_history.csv', encoding='utf-8',dtype={
     'user_id':str})
df.head(10)

python数据清洗实战入门笔记(四)数据转换_第2张图片

# 对购买日期进行转换
df['buy_date'] = pd.to_datetime(df['day'],format='%Y%m%d',errors = 'coerce')#加errors防止报错
df.dtypes

python数据清洗实战入门笔记(四)数据转换_第3张图片

# 可以提取对应年月日,必须为timestamp才可以,具体的时间点
df['buy_date'].dt.year#year也可以改成月日等等更精确的

python数据清洗实战入门笔记(四)数据转换_第4张图片

  • 时间差
# 对时间进行计算
df['diff_day'] =  pd.datetime.now() - df['buy_date']
df['diff_day'].head(5)

python数据清洗实战入门笔记(四)数据转换_第5张图片

# 时间差由天数,小时和毫秒构成
# timedelta可以理解为时间差类型
df['diff_day'].dt.days# 提取天数

python数据清洗实战入门笔记(四)数据转换_第6张图片

df['diff_day'].dt.seconds# 提取秒数

python数据清洗实战入门笔记(四)数据转换_第7张图片

df['diff_day'].dt.microseconds# 提取毫秒数

python数据清洗实战入门笔记(四)数据转换_第8张图片

# 可以使用pd.Timedelta进行转换
df['时间差'] = df['diff_day']/pd.Timedelta('1 D') #转换为天数
df['时间差']

python数据清洗实战入门笔记(四)数据转换_第9张图片

df['时间差'] = df['diff_day']/pd.Timedelta('1 M') #转换为分钟
df.head(5)

python数据清洗实战入门笔记(四)数据转换_第10张图片

df['时间差'].round(decimals=3)# 显示为3小数
df["时间差"]

python数据清洗实战入门笔记(四)数据转换_第11张图片

df['diff_day'].astype('timedelta64[D]')# 这种方式也可以,M  代表月份数,D代表天数,Y代表年份
df['diff_day']

python数据清洗实战入门笔记(四)数据转换_第12张图片

字符串数据处理

python数据清洗实战入门笔记(四)数据转换_第13张图片

  • 摩托车的销售情况
  • Condition:摩托车新旧情况(new:新的 和used:使用过的)
  • Condition_Desc:对当前状况的描述
  • Price:价格
  • Location:发获地址
  • Model_Year:购买年份
  • Mileage:里程
  • Exterior_Color:车的颜色
  • Make:制造商(牌子)
  • Warranty:保修
  • Model:类型
  • Sub_Model:车辆类型
  • Type:种类
  • Vehicle_Title:车辆主题
  • OBO:车辆仪表盘
  • Watch_Count:表数

练习

df1 = pd.read_csv('MotorcycleData.csv',encoding='gbk')#摩托车信息
df1.head(5)

python数据清洗实战入门笔记(四)数据转换_第14张图片

df1['Price'].str[0:4]# 字符串切片

python数据清洗实战入门笔记(四)数据转换_第15张图片

  • 将价格转换为float
# df1['Price'].astype(float)
# 之间转换直接报错,需要进行字符串处理
df1['价格']  = df1['Price'].str.strip('$')#字符串相关方法
df1['价格'].head(5)

python数据清洗实战入门笔记(四)数据转换_第16张图片

df1['价格'] = df1['价格'].str.replace(',','')
df1['价格'].head(5)
df1['价格'] = df1['价格'].astype(float)#  转换为float数据
df1['Location'].str.split(',') # 使用字符串分割,用于对文本的处理

python数据清洗实战入门笔记(四)数据转换_第17张图片

df1['Mileage'].str.len() #计算字符串长度

python数据清洗实战入门笔记(四)数据转换_第18张图片

高阶函数数据处理

python数据清洗实战入门笔记(四)数据转换_第19张图片

python数据清洗实战入门笔记(四)数据转换_第20张图片

练习

df2 = pd.read_csv('sam_tianchi_mum_baby.csv',encoding = 'utf-8',dtype =str)#婴儿信息
def f(x):
    if '0' in x:
        return '女'
    elif '1' in x :
        return '男'
    else:
        return '未知'
# 0代表女,1代表男,2代表未知
df2['性别'] = df2['gender'].apply(f)
df2.head(5)

python数据清洗实战入门笔记(四)数据转换_第21张图片

#使用map函数
df2['性别'] = df2['gender'].map({
     '0':'女','1':'男','2':'未知'})
df2.head(5)

python数据清洗实战入门笔记(四)数据转换_第22张图片

df2['user_id'].apply(lambda x: x.replace(x[1:3],'**')) #结合lambda替换

python数据清洗实战入门笔记(四)数据转换_第23张图片

df2['birthday'].apply(lambda x: str(x)[0:4]) #提取年份

python数据清洗实战入门笔记(四)数据转换_第24张图片

你可能感兴趣的:(python数据清洗,python,字符串,csv,数据分析,numpy)