- 5.1日期格式数据处理
- 5.2高阶函数数据处理
- 5.3字符串数据处理
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()#统计字符串长度,比如号码长度



