Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save tejastank/e468d387a1e0c2095661a9d3fe094a75 to your computer and use it in GitHub Desktop.
Save tejastank/e468d387a1e0c2095661a9d3fe094a75 to your computer and use it in GitHub Desktop.
Python Dataimport of Corona COVID-19 Infected and Dead Counts for Germany from Wikidata
import requests
import pandas as pd
import datetime
url = 'https://query.wikidata.org/sparql'
query_infected = """
SELECT ?infectedDate ?infectedValue
WHERE
{
wd:Q83889294 p:P1603 ?infectedItem.
?infectedItem ps:P1603 ?infectedValue.
?infectedItem pq:P585 ?infectedDate.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}
ORDER BY ?infectedDate
"""
query_dead = """
SELECT ?deadDate ?deadValue
WHERE
{
wd:Q83889294 p:P1120 ?deadItem.
?deadItem ps:P1120 ?deadValue.
?deadItem pq:P585 ?deadDate.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
}
ORDER BY ?deadDate"""
r_infected = requests.get(url, params = {'format': 'json', 'query': query_infected})
data_infected = r_infected.json()
r_dead = requests.get(url, params = {'format': 'json', 'query': query_dead})
data_dead = r_dead.json()
def parse_date(string):
return datetime.datetime.strptime(string,"%Y-%m-%dT%H:%M:%S%z")
def to_pd(data,parsers=[parse_date,int]):
return pd.DataFrame(data=(
(parsers[0](item[data["head"]["vars"][0]]["value"]), parsers[1](item[data["head"]["vars"][1]]["value"]))
for item in data["results"]["bindings"]
),columns=list(data["head"]["vars"]))
df_infected = to_pd(data_infected)
df_dead = to_pd(data_dead)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment