都道府県別直近7日のコロナ死亡率を計算

5/5だったので最新はどうなのか気になったので計算してみた

dot.asahi.com

web.sapmed.ac.jp

import pandas as pd
import requests

import pathlib


def fetch_file(url, dir="."):

    p = pathlib.Path(dir, pathlib.PurePath(url).name)
    p.parent.mkdir(parents=True, exist_ok=True)

    r = requests.get(url)
    r.raise_for_status()

    with p.open(mode="wb") as fw:
        fw.write(r.content)
    return p


# 人口

p1 = fetch_file("https://www.stat.go.jp/data/nihon/zuhyou/n210200200.xlsx")
df1 = pd.read_excel(
    p1, header=None, skiprows=9, skipfooter=3, index_col=0, usecols=[0, 6]
)

df1.set_axis(["総人口"], axis=1, inplace=True)
df1.index.name = "都道府県"

# NHK死亡者数

p2 = fetch_file(
    "https://www3.nhk.or.jp/n-data/opendata/coronavirus/nhk_news_covid19_prefectures_daily_data.csv"
)
df2 = pd.read_csv(p2, parse_dates=[0])

pv = df2.pivot(index="日付", columns="都道府県名", values="各地の死者数_累計")

# 前週との差分

pv_diff = pv.diff(7)
pv_diff

# 最新
se = pv_diff.iloc[-1]
# se = pv_diff.loc[pd.Timestamp("2021-05-05")]

se.index = se.index.str.rstrip("府県")
se.rename(index={"東京都": "東京"}, inplace=True)
se.name = "死亡者数"

df3 = df1.join(se)
df3

# 100万人あたり
df3["死亡率"] = df3["死亡者数"] / (df3["総人口"] / 1000)

df3["死亡率"].sort_values(ascending=False)

何も考えず「rstrip("都道府県")」にすると「北海道」は「北海」、「京都府」は「京」だけになるという知見を得られた(w