用Python下载大型数据集的最佳方法?

问题描述 投票:0回答:1

自2010年以来,我一直尝试使用Socrata API在纽约的311个调用中下载此数据集。该数据集为2200万行。我以前从未使用过API,并且不确定下载此数据集的最佳方法-我在下面编写了一段代码来抓取2,000行数据块中的数据,但是根据我的计算,这将花费10,000分钟,因为每2,000个块需要一分钟。

data_url = 'data.cityofnewyork.us'
dataset = 'erm2-nwe9'
app_token = app_token
client = Socrata(data_url, app_token)
client.timeout = 6000

record_count = client.get(dataset, select='COUNT(*)')

start = 0
chunk_size = 2000
results = []
while True:
    print(start)
    results.extend(client.get(dataset, limit=chunk_size))
    start = start+chunk_size
    if (start > int(record_count[0]['COUNT'])):
        break

df=pd.DataFrame(results)

我不需要所有数据;尽管我不确定如何在请求中指出这一点,但我只能使用2015年的数据。 “数据”列的格式类似于“ 2020-04-27T01:59:21.000”。如果获取整个数据集不合理,我该如何获取2015年后的数据集?通常,是否将2200万条记录视为请求太大?通常,最佳做法是使用get_all()将请求分成多个块,还是尝试一次性获取数据集?

python database api request socrata
1个回答
0
投票

有一些选择。首先,您可能想看看"sodapy" library,它支持从Socrata数据门户网站更轻松地下载。它内置了一些用于较大数据集的后端处理,即paging

第二,您可以利用API来过滤数据,包括dates。有很多示例,包括this answer,可以帮助您开始查询。您也可以将其与“ sodapy”结合使用。

© www.soinside.com 2019 - 2024. All rights reserved.