数据挖掘中 往往都会遇到时间序列问题,很多比赛或者项目都要对时间进行分组。但是面对众多保存类型,怎么才能
避免数据类型错误,提取到想要的时间块呢,现在针对多种情况说一下。
我们来看这个数据中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中字符串与时间的转换 是上述的基础与重点