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

2024-06-09 14:05:54 发布

您现在位置:Python中文网/ 问答频道 /正文

自2010年以来,我一直在尝试使用Socrata API在纽约311次调用中下载此数据集。数据集有2200万行。我以前从未使用过API,也不确定下载此数据集的最佳方式-我在下面编写了一段代码,以获取2000行的数据块,但根据我的计算,这将需要10000分钟,因为2000行的每一块都需要一分钟

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()将请求分成块,或者尝试一次性获取数据集,这是最佳做法吗


Tags: 数据clienttokenapiappurldatasize
1条回答
网友
1楼 · 发布于 2024-06-09 14:05:54

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

其次,您可以利用API来过滤数据,包括dates。有很多例子,包括this answer,可以帮助您开始查询。你也可以把它和“苏打水”结合起来

相关问题 更多 >