簡體   English   中英

使用python存儲預測時間序列數據的方法

[英]Approach to storing forecast time series data using python

所以我想每天抓取一次天氣預報表並存儲我的結果以供將來分析。 我想存儲數據,但我不確定如何存儲。

數據示例:預測表

我感興趣的四個變量是風速、陣風、波浪高度和波浪周期。

這是我的第一個涉及時間序列數據的 python 項目,我對數據庫還很陌生,所以請對我和 ELI5 放輕松。

在我最近參加的 Python For Everyone 課程中,我了解了關系數據庫和 SQLlite 的使用。 這里的主要思想基本上是有效地存儲數據,並且永遠不會將相同的數據存儲兩次。 然而,沒有一個例子涉及時間序列數據。 所以現在我不確定這里最好的方法是什么。

如果我為每個變量創建一個表,最后為我抓取預測的日期創建一個表。 抓取日期將作為主鍵。 在此示例中,諸如風速之類的變量的第一列將是刮擦日期,接下來的列是時間戳的預測值。 盡管與每天創建一個新表相比,這會使存儲更高效,但也存在一些問題。 時間戳不統一(見圖,預測時間僅為凌晨 3 點到晚上 9 點)。 此外,根據抓取預測的時間,時間戳上的日期和時間值總是在變化,因此下一個時間戳並不總是在 2 小時內。

看到每次我抓取預測時,我都會得到一個新表,我應該每次在 sqlite 中創建一個新的數據庫表嗎? 這似乎是一個相當基本的解決方案,我確信有更好的方法來存儲數據。

你會怎么做?

您應該考慮使用 pandas 模塊。 它將數據存儲為表格,稱為數據框,並且有許多方法可以對數據進行操作。 此外,您可以輕松地將新數據附加到 pandas 數據框。 一個簡單的網絡搜索將找到相當廣泛的 pandas 文檔。

總結我的評論:

您可能希望將來自新報廢的預測數據附加到同一數據庫表中的現有數據中。

從每個新的網絡抓取中,您將獲得大約。 40 條具有相同報廢時間戳但不同預測時間戳的新記錄。

例如,這將是使用ID作為主鍵和AUTOINCREMENT的表的列:

ID 報廢時間 Forecast_hours 風速 Wind_gusts 風向 海浪 Wave_period 波方向

注意:如果你使用 SQLite,你可以省略ID列,因為如果沒有指定其他主鍵,SQLite 默認會添加這樣的ROWID列( https://www.sqlite.org/autoinc.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM