2017-09-09 44 views
1

我有一些原始數據,其中包含一系列(大約1e7)個事件,每個事件包含一些元數據(錄製時間,頻道號等)和實際的時間系列。通過處理數據,我計算了每個事件的一組(約20個)單值特徵。所以我結束了單值以下數據結構和一個數組:如何存儲一系列時間序列數據,包括元數據

1: eventID, ToR, channel, feat1, feat2,..., signal(shape=30000,) 
2: eventID, ToR, channel, feat1, feat2,..., signal 
3: . 
    . 

現在什麼是組織在Python這個數據的最佳方式,如果我想:

  1. 訪問和劇情信號,通過所有的事件,其事件ID
  2. 切片索引(或它的一部分)和情節FEAT1與FEAT2
  3. 訪問數據列其名稱
  4. 可能通過提供兩個訪問EVENTID它的特點
  5. 可能刪除單個事件

雖然在Python字典存儲數據肯定是可能的,我覺得有一種更快的方式。熊貓數據幀似乎對我來說不可能,因爲數據的長度並不相同。

通過將士object它可以存儲陣列中陣列等[1, 2, 3, [4,5,6]]類型的numpy的陣列,但我失去它的名字,這將是至少不優選訪問數據的能力。

我可能對這種結構沒有正確的感覺,所以對此有什麼合適的方法?

+0

你有沒有想過一個namedtuples列表,然後列出解析? namedtuples在這裏似乎很好,因爲您似乎不需要能夠更改數據,但需要以各種不同的方式訪問它。 namedtuples比字典更輕量級。 –

+0

你能通過一長串元組有效地切片嗎?我認爲這可能是一個問題。 – Abufari

+0

有了列表解析我期望是,但它當然取決於您的條件。如果這是一個昂貴的操作,那麼沒有。 :-) –

回答

1

我所有元數據存儲在一個數據幀:

1: eventID, ToR, channel, feat1, feat2,... 
2: eventID, ToR, channel, feat1, feat2,... 
3: ... 

然後,對於具有不同長度的時間序列,我會每個時間序列存儲在一個pd.Series(),在一個字典鍵控相同元數據索引(或可能由eventID)或列表(時間序列的N行映射到元數據的N行)。

+0

好吧,這似乎是最簡單的解決方案。謝謝。 – Abufari

相關問題