数据清洗Chap5——数据转换

数据清洗Chap5——数据转换,第1张

数据清洗Chap5——数据转换

数据清洗-Chap 5-dataframe *** 作
  • 5.1日期格式数据处理
  • 5.2高阶函数数据处理
  • 5.3字符串数据处理

5.1日期格式数据处理

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

####1.Pandas中使用to_datetime()方法将文本格式转换为日期格式
import pandas as pd
import os
import numpy as np
os.chdir(r'C:UsersqwDesktopdata ana')#路径改为数据存放路径
df = pd.read_csv('name.csv',encoding = 'utf-8',dtype = {'user_id':str})
#假如发现'day'列数据为整数型——%Y%m%d,20091012的形式
df['buy_date'] = pd.to_datetime(df['day'].format='%Y%m%d',error='coerce')#error='coerce'用于防止报错
df.info()#'buy_date'列的数据类型被转换为datetime64格式,也叫时间戳格式
####2.dataframe数据类型如果为datetime64,可以使用dt方法取出年月日
df['buy_date'].dt.year#提取年
df['buy_date'].dt.month#提取月
df['buy_date'].dt.day#提取天
####3.对于时间差数据,可以使用timedelta函数将其转换为指定时间单位的数值
####4.时间差数据,可以使用dt方法访问其常用属性
##时间差数据
df['diff_day'] = pd.datetime.now() - df['buy_date']###'diff_day'是timedelta64数据
df['diff_day'].head(4)
df['diff_day'].dt.days#使用dt方法提取多少day
df['diff_day'].dt.seconds#seconds是把小时分钟秒加到一起转换为秒数
df['时间差'] = df['diff_day']/pd.Timedelta('1 D')#转化成xxxx.xx天
df['时间差'] = df['diff_day']/pd.Timedelta('1 M')#转化成xxxx.xx分钟
df['时间差'] = df['diff_day']/pd.Timedelta('1 S')#转化成xxxx.xx秒
df['时间差'].round(decimals = 3)#把科学计数法转换为3位小数的表示方法
df['时间差'].head(5)
##其他方法
df['diff_day'].astype('timedelta64[Y]')
5.2高阶函数数据处理

1.在dataframe中使用apply方法,调用自定义函数对数据进行处理
2.函数apply,axis =0表示对行进行 *** 作,axis = 1表示对列进行 *** 作
3.可以使用astype函数对数据进行转换
4.可以使用map函数进行数据转换

####
df2 = pd_read_csv('num.csv',dtype = str, encoding = 'utf-8')
df2.head(10)
 def f(x):
 	if '0' in str(x):
 		return '女'
 	elif '1' in str(x):
 		return '男'
 	else:
 		return '未知'
 df2['性别'] = df2['gender'].apply(f)
 df2[[ df2['gender']=='2']]
 ####
 del df2['性别']
 df2['性别'] = df2['gender'].map({'0':'女','1':'男','2':'未知'})
####
 del df2['性别']
 df2['性别'] = df2['gender'].map(f)
 df2['user_id'].apply(lambda x: str(x).replace(x[1:3],'**'))
 df2['birthday'].apply(lambda x: x[0:4])#取第一位到第四位
####apply应用更加广泛一点
####而map函数主要是映射
5.3字符串数据处理

1.Pandas中提供了字符串的函数,但只能对字符型变量进行使用
2.通过str方法访问相关属性
3.可以使用字符串相关方法进行数据处理
4.常用方法

函数名称说明contains()返回表示各str是否含有指定模式的字符串replace()替换字符串lower()返回字符串的副本,其中字母都转化为小写upper()返回字符串的副本,其中所有字母都转化为大写split()返回字符串中的单词列表strip()删除前导和后置空格join()返回一个字符串,该字符串是给定序列中所有字符串的连接
####转化
df1['价格'] = df1['Price'].str.strip('$')
df1['价格'] = df1['价格'].str.replace(',','')
df1['价格'].astype(int) 
####分割
df1['Location'].str.split(',').str[0]#分割后提取第1个元素
df1['Location'].str.split(',').str[1]#分割后提取第2个元素
df1['Location'].str.split(',').str[2]#分割后提取第3个元素

df1['Location'].str.len()#统计字符串长度,比如号码长度

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5480751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存