将贸易数据重新采样为olhc格式

时间:2014-12-23 05:33:39

标签: python pandas

所以,我有很多我想要搞乱的原始交易数据,所以我想把它改成olhc格式,以便更容易分析。因此,在快速研究这个问题时,我发现了python中的pandas,更具体地说是这个命令

df.resample('60s', how={'price': 'ohlc'})

所以,我的所有数据都在csv文件中,所以我正在运行的是

df=pd.read_csv("xao.csv")
df.resample('60s', how={'price': 'ohlc'})

如果我正确这是正确的格式和命令,我的问题是我相信的时间格式,我不知道如何改变csv中的时间格式。

我的csv采用以下格式

unixtimecode,价格,体积

所以样本行是

1419031147  453.3   0.050

那么将时间从unix时间戳转换为重新采样代码的可用时间格式的简单方法是什么?

所以,感谢nitin我现在有时间处理我认为正确的格式,运行print df.tail()产量

                       Date    price  volume
824184  2014-12-19 23:19:07  434.9     0.050
824185  2014-12-19 23:19:48  434.7     0.011
824186  2014-12-19 23:19:48  434.9     0.039
824187  2014-12-19 23:20:29  434.9     0.050
824188  2014-12-19 23:21:09  434.9     0.050

我认为是正确的,但运行df.resample('60s', how={'price': 'ohlc'})仍然无效,它会给出错误TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex,为什么会这样?

edit2,设法让它发挥作用。

对于通过google / future me发现此内容的任何人,请使用我使用的代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df=pd.read_csv("xao.csv")
df['Date'] = pd.to_datetime(df['Date']*int(1e9))
df.Date=pd.to_datetime(df.Date, unit = 's')
df = df.set_index('Date').astype('float64')
df['price'].resample('60s',how='ohlc')

2 个答案:

答案 0 :(得分:0)

使用pandas to_datetime转换unixtimestamp。您可以将csv中的时间码读作整数,然后应用pd.to_datetime

import pandas as pd
df = pd.DataFrame({'timecode' : [1419031147], 'price' : [453.3], 'volume' : [0.050]})
pd.to_datetime(df.timecode, unit = 's')

这将产生,

0   2014-12-19 23:19:07
Name: timecode, dtype: datetime64[ns]

答案 1 :(得分:0)

您应该将日期列作为索引,以便重新采样。