数据分析小课-python数据清洗实战入门-第五章-数据清洗之数据转换-日期格式数据处理-字符串数据处理-高阶函数数据处理

  1. 日期格式数据处理
    • Pandas中使用to_datetime()方法将文本格式转换为日期格式
    • dataframe数据类型如果为datetime64,可以使用dt方法取出年月日等
    • 对于时间差数据,可以使用timedelta函数将其转换为指定时间单位的数值
    • 时间差数据,可以使用dt方法访问其常用属性

示例

import numpy as np
import pandas as pd 
import os
os.chdir(r'C:\Users\56281\Desktop\数据分析\Python数据清洗实战入门\数据清洗课程材料\代码和数据')#重定位
df=pd.read_csv('baby_trade_history.csv',encoding='utf-8',dtype={'user_id':str})
df.info()#day           29971 non-null int64
df['buy_date']=pd.to_datetime(df['day'],format='%Y%m%d',errors='coerce')#'%Y%m%d'是指day的格式20141009,errors防止报错
df.info()#buy_date      29971 non-null datetime64[ns]时间戳格式
df['buy_date'].dt.day#显示天
df['diff_day']=pd.datetime.now()-df['buy_date']#时间差
df.dtypes  #diff_day      timedelta64[ns]
df['diff_day'].dt.days#一共多少天
df['diff_day'].dt.seconds
df['时间差']=df['diff_day']/pd.Timedelta('1 D')
df['时间差'].round(decimals=3)#显示3位小数
df['diff_day'].astype('timedelta64[Y]')#Y是年h是小时M月份
  1. 字符串数据处理
    • Pandas中提供了字符串的函数,但只能对字符型变量进行使用
    • 通过str方法访问相关属性
    • 可以使用字符串的相关方法进行数据处理
df1=pd.read_csv('MotorcycleData.csv',encoding='gbk')
df1['价格']=df1['Price'].str.strip('$')#先把价格去除美元符号
df1['价格']=df1['价格'].str.replace(',','')#将逗号转化为空字符串
df1['价格']=df1['价格'].astype(int)#转化为int数据类型
df1['Location'].str.split(',').str[0]#split(',')把数据切分成几份(原数据有几个逗号),str[0]取第0段
df1['Location'].str.len()#计算长度
  1. 高阶函数数据处理
    • 在dataframe中使用apply方法,调用自定义函数对数据进行处理
    • 函数apply, axis=0表示对行进行操作,axis=1表示对列进行操作
    • 可以使用astype函数对数据进行转换 • 可以使用map函数进行数据转换
df2=pd.read_csv('sam_tianchi_mum_baby.csv',dtype=str,encoding='utf-8')#所有的转换为str
def f(x):
    if "0" in str(x):
        return "女"
    elif '1' in str(x):
        return '男'
    else:
        return '未知'
df2['性别']=df2['gender'].apply(f)#将gender的数据带入f,返回的数据赋值给df2['性别']
del df2['性别']
df2['性别']=df2['gender'].map({'0':'女','1':'男','2':'未知'})#0改为女
df2['性别']=df2['gender'].map(f)#或者也可以套用函数
df2['user_id'].apply(lambda x:str(x).replace(x[1:3],"**"))#输出的值第1位第2位变成了"**"
df2['birthday'].apply(lambda x:x[1:5])#进行字符串切片

你可能感兴趣的:(数据分析,python,数据挖掘,数据类型)