我编写了一个简短的 Python 脚本,用于从 API 中提取一些人口数据并将其存储到 csv 中。 API 返回内容的示例可以在 here 中找到。 。 “数据”包含 8000 多个观察结果,因此我正在寻找一种有效的方法来访问它。我编写的代码可以工作,但需要几个小时才能运行。 因此我的问题是,有没有办法更有效地循环这个 JSON,或者提取所需的数据而不循环遍历每个观察?
import requests
api_base = "http://dw.euro.who.int/api/v3/data_sets/HFAMDB/HFAMDB_8"
with open("population.csv", "w") as outfile:
outfile.write("country,year,group,fullname,count\n")
for i in range(32,51):
response = requests.get(api_base+str(i))
print(api_base+str(i))
for observation in response.json()['data']:
count = observation["value"]["numeric"]
country = observation["dimensions"]["COUNTRY"]
year = observation["dimensions"]["YEAR"]
group = observation["dimensions"]["AGE_GRP_6"]
fullGroupName = response.json()['full_name']
if observation["dimensions"]["SEX"] == "ALL":
outfile.write("{},{},{},{},{}\n".format(country, year, group, fullGroupName, count))
预先感谢您的回答。
最佳答案
好吧,如果没有必要,请不要一遍又一遍地调用 response.json()
。
而不是
for observation in response.json()['data']:
fullGroupName = response.json()['full_name']
做
data = response.json()
for observation in data['data']:
fullGroupName = data['full_name']
进行此更改后,整个过程需要我的电脑大约 33 秒。几乎所有这些都是为了满足请求。如果站点可以的话,也许您可以通过使用并行请求来进一步加快速度。
关于python - 高效循环大型 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46491566/