- 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.常用方法
####转化 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()#统计字符串长度,比如号码长度
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)