Source code for cowidev.hosp.sources.south_africa
import pandas as pd
from cowidev.utils.clean import clean_date_series
METADATA = {
"source_url_flow": "https://docs.google.com/spreadsheets/d/e/2PACX-1vRGCkIwakQ5rpfXky9FZhDwr3qUgerfhBLSzn9OsA79yQ_2G_y-_Ns9JjRJZWXD5kxJ3qicoL7bHGjE/pub?gid=1044172863&output=csv",
"source_url_stock": "https://docs.google.com/spreadsheets/d/e/2PACX-1vRGCkIwakQ5rpfXky9FZhDwr3qUgerfhBLSzn9OsA79yQ_2G_y-_Ns9JjRJZWXD5kxJ3qicoL7bHGjE/pub?gid=1317252294&single=true&output=csv",
"source_url_ref": (
"https://docs.google.com/spreadsheets/d/1Ln3FO3E0hz2r_kCCWM6on9Wd18wRvrkiIV-bbE2EDQ0/edit#gid=1044172863"
),
"source_name": (
"National Policy Data Observatory (NPDO) at the Council for Scientific and Industrial Research (CSIR)"
),
"entity": "South Africa",
}
[docs]def main() -> pd.DataFrame:
flow = pd.read_csv(METADATA["source_url_flow"], usecols=["Week ending:", "National"]).rename(
columns={"Week ending:": "date"}
)
stock = pd.read_csv(METADATA["source_url_stock"], usecols=["Dates", "Hospitalised", "ICU"]).rename(
columns={"Dates": "date"}
)
df = (
stock.merge(flow, on="date", how="left") # validate="1:1")
.melt("date", var_name="indicator")
.dropna(subset=["value"])
.replace(
{
"National": "Weekly new hospital admissions",
"Hospitalised": "Daily hospital occupancy",
"ICU": "Daily ICU occupancy",
}
)
)
df["date"] = clean_date_series(df.date, "%d/%m/%Y")
df["entity"] = METADATA["entity"]
return df, METADATA
if __name__ == "__main__":
main()