关于数据挖掘中遇到时间数据怎么划分集合-提取不同时间数据(多种情况汇总)

数据挖掘中 往往都会遇到时间序列问题,很多比赛或者项目都要对时间进行分组。但是面对众多保存类型,怎么才能

避免数据类型错误,提取到想要的时间块呢,现在针对多种情况说一下。




我们来看这个数据中time项。是一个时间序列 如果我们想把他分开,接下来应该

import pandas as pd
path_df=r'C:\Users\yang\Desktop\shijian1.csv'

df=pd.read_csv(path_df)
df.colunms=['user_id','item_id','user_geohash','item_category','time']

print(type(df.time[3]))

第一种情况

看一下数据类型 为 str字符串类型 。

首先 他是字符串 我们就用字符串的比较方式提取数据 比方说 我们要提取2014-12-08 18之后的数据

他是什么格式 我们就写成什么格式。如下所示 

import pandas as pd
path_df=r'C:\Users\yang\Desktop\shijian1.csv'

df=pd.read_csv(path_df)
df.colunms=['user_id','item_id','user_geohash','item_category','time']


a=df[df.time>'2014-12-08 18']

第二种情况

还是看上述例子

既然他想表达成时间的格式,但是是字符串 我们就用字符串转时间格式 先把他转为date类型 在对date进行操作

import pandas as pd
path_df=r'C:\Users\yang\Desktop\shijian1.csv'
dateparse = lambda dates: pd.datetime.strptime(dates, '%Y-%m-%d %H')
df=pd.read_csv(path_df,parse_dates=['time'], 
                      index_col = ['time'], 
                      date_parser = dateparse)
df.colunms=['user_id','item_id','user_geohash','item_category','time']

print(df)

这里需要注意的是 字符串转时间函数为

pd.datetime.strptime(dates, '%Y-%m-%d %H')
而要定位到time这一列并进行转换 需要pd.read_csv参数设置
                      parse_dates=['time'], 
                      index_col = ['time'], 
                      date_parser = dateparse

具体详情见上篇博客

通过时间转换我们就可以对时间数据进行操作了,如下所示

import pandas as pd
path_df=r'C:\Users\yang\Desktop\shijian1.csv'
dateparse = lambda dates: pd.datetime.strptime(dates, '%Y-%m-%d %H')
df=pd.read_csv(path_df,parse_dates=['time'], 
                      index_col = ['time'], 
                      date_parser = dateparse)
df.colunms=['user_id','item_id','user_geohash','item_category','time']

df1 = df['2014-12-08':'2014-12-10']
df2 = df['2014-12-08 00':'2014-12-08 23']
print(df2)

第三种情况

第三种情况如下,数据为

<class 'pandas._libs.tslib.Timestamp'>类型 就是也是pandas去读时,针对该列进行时间转换了
 
import pandas as pd
import numpy as np
df=pd.read_csv(r'C:\Users\yang\Desktop\df_part_1.csv',parse_dates = [0])
df.columns=['time','id','idd','measure','xuhao']
print(type(df.time[3]))
即出现了 parse_dates=[0]这个参数 相当于前两个数据中间类型  


我们应该这么读取 

import pandas as pd
import numpy as np
df=pd.read_csv(r'C:\Users\yang\Desktop\df_part_1.csv',parse_dates = [0])
df.columns=['time','id','idd','measure','xuhao']
print(df[df.time>np.datetime64('2014-11-25')])

本质上 也是字符串 也可以用str方法读取

import pandas as pd
import numpy as np
df=pd.read_csv(r'C:\Users\yang\Desktop\df_part_1.csv',parse_dates = [0])
df.columns=['time','id','idd','measure','xuhao']
print(df[df.time>'2014-11-25'])

总结:

不管怎么类型,总体分为字符串和时间序列 

掌握python中字符串与时间的转换 是上述的基础与重点

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值