繁体   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