牛骨文教育服务平台(让学习变的简单)
博文笔记

利用numpy和pandas处理csv文件中的时间

创建时间:2017-07-27 投稿人: 浏览次数:2606

在机器学习和深度学习的过程中,对于处理预测,回归问题,有时候变量是时间,需要进行合适的转换处理后才能进行学习分析,关于时间的变量如下所示,利用pandas和numpy对csv文件中时间进行处理。
date (UTC) Price
01/01/2015 0:00 48.1
01/01/2015 1:00 47.33
01/01/2015 2:00 42.27

#coding:utf-8
import datetime
import pandas as pd
import numpy as np
import pickle

#用pandas将时间转为标准格式
dateparse = lambda dates: pd.datetime.strptime(dates,"%d/%m/%Y %H:%M")
#将时间栏合并,并转为标准时间格式
rawdata = pd.read_csv("RealMarketPriceDataPT.csv",parse_dates={"timeline":["date","(UTC)"]},date_parser=dateparse)

#定义一个将时间转为数字的函数,s为字符串
def datestr2num(s):
    #toordinal()将时间格式字符串转为数字
    return datetime.datetime.strptime(s,"%Y-%m-%d %H:%M:%S").toordinal()

x = []
y = []
new_date = []

for i in range(rawdata.shape[0]):
    x_convert = int(datestr2num(str(rawdata.ix[i,0])))
    new_date.append(x_convert)
    y_convert = rawdata.ix[i,1].astype(np.float32)
    x.append(x_convert)
    y.append(y_convert)

x = np.array(x).astype(np.float32)

"""
with open("price.pickle","wb") as f:
    pickle.dump((x,y),f)
"""
print(datetime.datetime.fromordinal(new_date[0]),"------>>>>>>",new_date[0])
print(datetime.datetime.fromordinal(new_date[10]),"------>>>>>>",new_date[10])
print(datetime.datetime.fromordinal(new_date[20]),"------>>>>>>",new_date[20])
print(datetime.datetime.fromordinal(new_date[30]),"------>>>>>>",new_date[30])
print(datetime.datetime.fromordinal(new_date[40]),"------>>>>>>",new_date[40])
print(datetime.datetime.fromordinal(new_date[50]),"------>>>>>>",new_date[50])

将csv文件中的时间栏合并为一列,并转为方便数据分析的float或int类型
这里写图片描述

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。