2013-02-14 136 views
2

我正在讀取文件中的一些csv日誌數據,並使用日期,時間字段作爲幀的索引。當我繪製時間序列時,絕對時間顯示在X軸上。我想在x軸上顯示相對於開始時間的時間。這個怎麼做?熊貓時間序列相對於開始的使用時間

例如:這裏是一個示例x軸:

23:59:57--------+23:59:58----------23:59:59--------+00:00:00--------------+ 

我希望它是這樣的:

0---------00:00:01----------00:00:02--------+00:00:03--------------+ 

回答

3

一個簡單的解決方案是從索引中減去所述第一索引項目。它可以通過使用列表理解來完成,如果你的數據幀非常大,這可能不是最好的(最快)選項。

begin = pd.datetime(2013,1,5,5,53) 
end = pd.datetime(2013,1,7,7,16) 

rng = pd.DatetimeIndex(start=begin, end=end, freq=pd.datetools.Minute(15)) 
df = pd.DataFrame(np.random.randn(rng.size), index=rng) 

fig, axs = plt.subplots(2,1, figsize=(15,6)) 
fig.subplots_adjust(hspace=.5) 

df.plot(ax=axs[0]) 
axs[0].set_title('Original') 

df.index = [idx - df.index[0] for idx in df.index] 
df.plot(ax=axs[1]) 
axs[1].set_title('Normalized') 

enter image description here

+0

太好了,謝謝。在從csv:df.date_time = df.date_time - df.date_time [0]中讀取數據幀後,我嘗試了類似的方法,該錯誤信息出錯說''Timestamp'對象沒有屬性'dtype'「。我現在會嘗試你的解決方案。 – 2013-02-14 18:04:56

+0

@Rutger_Kassies我看到,做df.index = [idx - df.index [0] for idx in df.index]將索引的數據類型更改爲Objects而不是DatetimeIndex,它正在更改圖形輸出。我會將輸出圖像作爲單獨的答案發布,以便您瞭解正在發生的事情。如果您有任何線索,我會調查自己修復此問題,但在此發佈。 – 2013-03-05 20:16:16

2

Here is the output after I did relative time normalization

由於索引的數據類型從DatetimeIndex改變爲目的,正在打印在單獨的存儲桶的每一行。

+1

現在通過這樣做修復問題:start_t = pd.tslib.Timestamp(df.index [0] .date())df.index = [pd.tslib.Timestamp(start_t +(idx - df.index [0]) )爲df.index中的idx] – 2013-03-05 22:56:06