毎日更新される無料のデータセットからWebページにデータをプロットする方法は?

Aug 17 2020

コロンビアで確認されたCOVID-19の症例に関するデータを取得するために、以下のリンクで利用可能なデータを使用しています。非線形モデルを使用して累積ケースをモデル化していますが、すべて問題ありません。これは、ローカルで機能するようにデータをダウンロードすることによって行われました。Web開発のメカニズムがあり、このコミュニティで必要なものがたくさんあることを知っています。ただし、Webページのリンクにあるデータからグラフィックを自動的に更新する方法がわかりません。

https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr/data

https://www.datos.gov.co/w/gt2j-8ykr/dneh-mcp2?cur=i2Z4n-Qy94T&from=root

あなたの提案をありがとう!

回答

4 flinty Aug 16 2020 at 23:18

Socrataを使用してデータを管理しているようです。このAPIの使用経験はありませんが、次の形式のURLを使用してアクセスできるようです。

https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr

よるとSocrataのドキュメントには、特定の時にこのデータを要求することができます$offsetし、$limitURLのパラメータとしてこれらを提供することで。これは少しニッチで、Mathematica Stack Exchangeの範囲を超えていますが、これでうまくいけば始められます:

(* fetch 10 records starting from offset 0 *)
request = 
  HTTPRequest["https://www.datos.gov.co/resource/gt2j-8ykr.json",
   <| Method -> "GET", "Query" -> {"$limit" -> 10, "$offset" -> 0}, 
    CharacterEncoding -> "UTF8"|>];
response = URLExecute[request];

次に、Association:を作成して、応答JSONのプロパティをクエリできます。

(* of our 10 records, get the first 5 cities of location *)
Association[#]["ciudad_de_ubicaci_n"] & /@ response[[1 ;; 5]]
(* {"Bogotá D.C.", "Guadalajara de Buga", "Medellín", "Medellín", "Medellín"} *)

データベース内のエントリの総数(ケース)が必要な場合は、次のようなAPIを使用できると思います$select=count(id_de_caso)

request = 
  HTTPRequest["https://www.datos.gov.co/resource/gt2j-8ykr.json",
   <| Method -> "GET", 
      "Query" -> {"$select" -> "count(id_de_caso)", "$offset" -> 0}, 
      CharacterEncoding -> "UTF8"|>];
response = URLExecute[request];

numberOfCases = ToExpression@Values[First[response]][[1]]

(* 456689 *)

これは、コロンビアのデータと正確に一致します。 https://www.trackcorona.live/map 2020年8月16日現在。