我想构建一个组合来自多个 API 调用的数据的 CSV 文件。我对基本的 Python 没问题,我可以调用 API,提取 JSON 数据,并将数据写入 CSV。我需要帮助的地方是有效地合并数据,以便在数据提取完成后将其写入 CSV。
这是直接来自 API 请求的数据:
{u'dateTime': u'2011-03-28', u'value': u'2298'},
{u'dateTime': u'2011-03-29', u'value': u'2322'},
{u'dateTime': u'2011-03-30', u'value': u'2309'},
{u'dateTime': u'2011-03-31', u'value': u'2224'},
{u'dateTime': u'2011-04-01', u'value': u'2763'},
{u'dateTime': u'2011-04-02', u'value': u'3543'},
所以我会考虑将很多这些合并在一起:
>APICALL1
2011-03-28,2298
2011-03-29,2322
2011-03-30,2309
>APICALL2
2011-03-28,432
2011-03-29,0
2011-03-30,444
每个 API 调用结果看起来都差不多:日期和值。日期的格式总是相同的,所以这是我们共同的元素。
对于给定的日期和值,可能没有值或返回 0,因此我需要能够考虑没有数据的情况。
理想的输出如下所示:
2011-03-28,2298,432,23952,765,31
2011-03-29,2322,0,432353,766,31
2011-03-30,2309,444,2343923,0,32
2011-03-31,2224,489,3495,765,33
我有大约 15 次调用,每个返回响应包含大约 800 行数据(基本上是 800 天,未来每天增长 1 行)。我需要每天运行几次,所以随着它越来越大,我在某种程度上担心效率。不幸的是,历史数据可能会发生变化,所以我每次运行命令时都需要重建整个列表。但是,历史数据很少更改,并且只有很小的百分比变化,因此如果仅更新数据有效率,我对此持开放态度。
我知道我可以做的一个选择是从第一个 API 调用将所有内容写入 CSV 文件,然后重新打开文件并为每个后续调用将更多数据写入 CSV(即 15 次单独读取和写入 CSV每个程序执行)。这对我来说听起来不是很有效。
我应该在内存中使用 SQLite 来构建数据集,然后最后将其转储到 CSV 吗?列表更好吗?我不擅长 SQL,尽管我知道如果它是正确的方法会很危险。