Bagaimana cara memplot data di halaman web dari kumpulan data gratis yang diperbarui setiap hari?

Aug 17 2020

Saya menggunakan data yang tersedia di tautan di bawah ini untuk mendapatkan data tentang kasus yang dikonfirmasi untuk COVID-19 di Kolombia. Saya memodelkan kasus kumulatif dengan model non linier dan semuanya baik-baik saja. Ini telah dibuat dengan mengunduh data untuk bekerja secara lokal. Saya tahu bahwa ada mekanisme untuk pengembangan web dan banyak hal yang saya butuhkan saya temukan di komunitas ini, kecuali saya tidak tahu cara membuat grafik diperbarui secara otomatis dari data yang ditemukan di tautan di halaman 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

Terima kasih atas saran Anda!

Jawaban

4 flinty Aug 16 2020 at 23:18

Tampaknya menggunakan Socrata untuk mengelola data. Saya tidak memiliki pengalaman dengan API ini, tetapi tampaknya Anda dapat mengaksesnya menggunakan bentuk URL ini:

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

Menurut dokumentasi Socrata , Anda dapat meminta data ini pada waktu tertentu $offsetdan $limitdengan memberikannya sebagai parameter di URL. Ini adalah ceruk kecil, dan di luar cakupan Mathematica Stack Exchange, tetapi mudah-mudahan ini akan membantu Anda memulai:

(* 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];

Kami kemudian dapat meminta properti respons JSON dengan membentuk Association:

(* 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"} *)

Jika Anda menginginkan jumlah entri dalam database (kasus) maka saya rasa Anda dapat menggunakan API seperti ini $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 *)

Ini sama persis dengan data untuk Columbia di https://www.trackcorona.live/map per 16 Agustus 2020.