私はAPIからいくつかの母集団データを抽出してcsvに格納する短いpythonスクリプトを書いた。 APIが返すものの例はhereです。 「データ」には8000を超える観測値が含まれているため、効率的なアクセス方法を探しています。私が書いたコードは動作していますが、実行するには数時間かかります。 したがって、私の質問は、このJSONをより効率的にループする方法、またはすべての観測をループせずに必要なデータを抽出する方法はありますか?大規模な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))
ありがとうございます。
私のアドバイス:次のうち最も遅いものを見つける:ダウンロードまたは書き込み。しかし、両方の問題に取り組むことができます:1.非同期にダウンロードする2.一度に複数の行を書き込む/出力をバッファする。 – Jakumi
@さくみそれらのどちらも問題ではありません。 –
@StefanPochmannあなたはおそらく正しいです、あなたの答えを読んで、データを見て気にしませんでした。とりわけ第2の 'response.json()'は恐らくキラーです。最初のものはかなり効率的であると仮定します。 – Jakumi