2014-12-23 23 views
0

因此,我有很多原始貿易數據,我想要解決這個問題,因此我想將其更改爲olhc格式,以便更輕鬆地進行分析。所以,在迅速研究這個我又找到在python大熊貓,更具體地說,這個命令將貿易數據重新抽樣爲olhc格式

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

所以,我有我的CSV文件中的所有數據,所以什麼IM正在運行的是

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

,如果即時消息糾正這是正確的格式和命令,我的問題是我相信的時間格式,我不知道如何去改變時間格式在CSV中。

我的CSV是按以下格式

unixtimecode,價格,成交量

所以採樣線是

1419031147 453.3 0.050 

究竟什麼是一個簡單的方法去了解從一個轉換時間unix時間戳爲resample代碼的可用時間格式?

所以,感謝尼廷我現在有什麼,我認爲是正確的格式我的時間,運行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,設法讓它工作。

對於任何人誰通過谷歌/將來認爲這我繼承人的代碼,我用

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') 
+0

所以這個問題不是關於重新取樣,而是對正確分析數據文件。您應該編輯標題和問題以反映這一點。 –

回答

0

勇利用大熊貓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] 
+0

所以,謝謝你。我得到的時間轉換爲這種格式2014-12-19 23:19:07 453.3 0.050但我似乎無法讓resample代碼工作。它仍然錯誤「TypeError:只對DatetimeIndex,TimedeltaIndex或PeriodIndex有效」,任何想法爲什麼? – Bigandrewgold

+0

你有沒有試過沒有'如何' – nitin