2012-03-18 75 views
4

我看到熊貓不允許duplicate time series indexeshttps://github.com/pydata/pandas/issues/643),但很快就會加入。我想知道是否有一種很好的方法,通過多索引標記/列將滾動窗口應用於具有重複時間的數據集Pandas滾動重複時間序列數據的中位數

基本上,我有一個csv的無序事件,它包含epochtime,分層標記( tag1,tag2)和時間。一個小樣本:

epochTimeMS,event,tag,timeTakenMS 
1331782842801,event1,tag1,16 
1331782841535,event1,tag2,1278 
1331782842801,event1,tag1,17 
1331782842381,event2,tag1,436 

我想要做的是構建和圖形滾動意味着不同ms窗口,通過事件和事件+標記。這似乎應該在熊貓中完成,但不確定是否需要等到重複的時間序列索引第一次。現在有什麼想法在黑客入侵?

回答

4

沒有什麼真的,現在阻止你:

In [17]: idf = df.set_index(['tag', 'epochTimeMS'], verify_integrity=False).sort_index() 

In [18]: idf 
Out[18]: 
        event timeTakenMS 
tag epochTimeMS      
tag1 1331782842381 event2   436 
    1331782842801 event1   16 
    1331782842801 event1   17 
tag2 1331782841535 event1   1278 

In [20]: idf.ix['tag1'] 
Out[20]: 
       event timeTakenMS 
epochTimeMS      
1331782842381 event2   436 
1331782842801 event1   16 
1331782842801 event1   17 

訪問的時間戳特定值將導致異常(這將得到改善,因爲你提到),但你一定能工作數據。現在,如果你想有一個固定長度(時間空間)窗口,這是不支持的非常好,但是我在這裏創造一個問題:

https://github.com/pydata/pandas/issues/936

如果你能對你的API在郵件列表上說話因爲我們現在正在積極研究時間序列功能,所以對於我和這些人來說,這將對您的應用程序有所幫​​助。

+0

非常感謝verify_integrity的澄清 請跟我聯繫,我的數據分析命名是有限的。我的理解是否正確,移動窗口時間序列數據的最小當前粒度是一天?如果我有二級數據,按標籤分組的每30秒數據平均值是不可能的? 我應該將我的用例簡單地發佈到http://groups.google.com/group/pystatsmodels? – Aaron 2012-03-18 23:02:55

+0

移動窗口函數是數組函數,並且在數值中具有固定的窗口大小 - 例如, 30個值。所以30秒窗口的概念沒有意義(還)。如果在秒之間沒有任何值,則可以使用'asfreq'(請參閱pandas.core.datetools)將數據重新整理爲第二次規則,然後在'window = 30'使用'rolling_mean' – 2012-03-19 14:32:14

相關問題