Я пытаюсь использовать Socrata API для загрузки этого набора данных по 311 вызовам в Нью-Йорке C с 2010 года. Набор данных содержит 22 миллиона строк. Я никогда раньше не работал с API, и не уверен, что лучше всего загрузить этот набор данных. Я написал фрагмент кода ниже, чтобы получить данные в виде кусков по 2000 строк, но, согласно моим расчетам, это займет 10 000 минут. , так как каждый кусок 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». Как я могу go получить набор данных на период после 2015 года, если получение всего набора данных нецелесообразно? В целом, 22 миллиона записей считаются слишком большими для запроса? И вообще, лучше ли разбивать запрос на куски или пытаться получить набор данных за один go, используя get_all ()?