oxxpehのらくがき帳

勝手なこと書いてます。気の短い人は読まないでください

covid-19重症者数と死亡者数(仮)

pandasのお勉強を兼ねてちょっと整理を。細工後の数値の確認もなんとなくでしかしてないので(仮)

covid19.mhlw.go.jp

の「性別・年代別重症者数 週次」と「性別・年代別死亡者数(累積)週次」のcsv取得(2023/02/26取得)してちょっと細工したグラフ。週次(累積)から月次にしてます。

「性別・年代不明・非公表等」人数が死亡で「13,002人」重症で「77 人」…

あと国内全体の年間死亡者数は以下の「死因(死因年次推移分類)別にみた性・年齢(5歳階級)・年次別死亡数及び死亡率(人口10万対)」を取得して…

www.e-stat.go.jp

covidと関係ないですが、30~60の男性の死亡数が女性にくらべてかなり多いのは驚いた。

以下やったこと。pythonからお勉強中なのでエレガントさが足りなかったり、間違ってるのは許してください。

試行錯誤したログからの抜粋なので貼り付けても動かないかも...
改行位置はもう少し短くしよう。

 

import pandas as ii_pd
import plotly as ii_pl
import plotly.graph_objects as ii_go 
#死亡データフレーム作成 
df_cov = ii_pd.read_csv('deaths_detail_cumulative_weekly.csv', skiprows=1, usecols=[x for x in range(21)])
df_cov =  df_cov.assign(m_u30 = df_cov['Male Under 10'] + df_cov['Male 10s'] + df_cov['Male 20s'])
df_cov =  df_cov.assign(m_o30_u60 = df_cov['Male 30s'] + df_cov['Male 40s'] + df_cov['Male 50s'])
df_cov =  df_cov.assign(m_o60 = df_cov['Male 60s'] + df_cov['Male 70s'] + df_cov['Male 80s'] + df_cov['Male Over 90'])
df_cov =  df_cov.assign(f_u30 = df_cov['Female Under 10'] + df_cov['Female 10s'] + df_cov['Female 20s'])
df_cov =  df_cov.assign(f_o30_u60 = df_cov['Female 30s'] + df_cov['Female 40s'] + df_cov['Female 50s'])
df_cov =  df_cov.assign(f_o60 = df_cov['Female 60s'] + df_cov['Female 70s'] + df_cov['Female 80s'] + df_cov['Female Over 90'])
df_cov = df_cov.assign(dt_ed = '')
for nn in df_cov.iterrows() :
    df_cov.loc[nn[0], 'dt_ed'] = ii_pd.to_datetime(nn[1]['Week'].split('~')[1],  format = '%Y/%m/%d')
df_cov.set_index('dt_ed', inplace = True)
df_covv = df_cov.resample('1M').last() 
#重症データフレーム作成 
df_cov_s = ii_pd.read_csv('severe_cases_detail_weekly.csv', skiprows=1, usecols=[x for x in range(21)])
df_cov_s =  df_cov_s.assign(m_u30 = df_cov_s['Male Under 10'] + df_cov_s['Male 10s'] + df_cov_s['Male 20s'])
df_cov_s =  df_cov_s.assign(m_o30_u60 = df_cov_s['Male 30s'] + df_cov_s['Male 40s'] + df_cov_s['Male 50s'])
df_cov_s =  df_cov_s.assign(m_o60 = df_cov_s['Male 60s'] + df_cov_s['Male 70s'] + df_cov_s['Male 80s'] + df_cov_s['Male Over 90'])
df_cov_s =  df_cov_s.assign(f_u30 = df_cov_s['Female Under 10'] + df_cov_s['Female 10s'] + df_cov_s['Female 20s'])
df_cov_s =  df_cov_s.assign(f_o30_u60 = df_cov_s['Female 30s'] + df_cov_s['Female 40s'] + df_cov_s['Female 50s'])
df_cov_s =  df_cov_s.assign(f_o60 = df_cov_s['Female 60s'] + df_cov_s['Female 70s'] + df_cov_s['Female 80s'] + df_cov_s['Female Over 90'])
df_cov_s = df_cov_s.assign(dt_ed = '')
for nn in df_cov_s.iterrows() :
    df_cov_s.loc[nn[0], 'dt_ed'] = ii_pd.to_datetime(nn[1]['Week'].split('~')[1],  format = '%Y/%m/%d')
df_cov_s.set_index('dt_ed', inplace = True)
df_cov_ss = df_cov_s.resample('1M').last() 
#グラフ作成 
oo_figds = ii_go.Figure()
oo_figds.add_bar(x= df_covv.index, y= df_covv.m_u30_d, marker_color = "rgba(0, 0, 255, 1)", offsetgroup = 1, name = '死亡男~30')
oo_figds.add_bar(x= df_covv.index, y= df_covv.m_o30_u60_d, marker_color = "rgba(0, 0, 255, 0.7)", offsetgroup = 1,\
  base = df_covv.m_u30_d,  name = '死亡男30~60')
oo_figds.add_bar(x= df_covv.index, y= df_covv.m_o60_d, marker_color = "rgba(0, 0, 255, 0.4)", offsetgroup = 1,\
  base = df_covv.m_u30_d + df_covv.m_o30_u60_d, name = '死亡男60~')
oo_figds.add_bar(x= df_cov_ss.index, y= df_cov_ss.m_u30, marker_color = "rgba(0, 127, 255, 1)", offsetgroup = 2, name = '重症男~30')
oo_figds.add_bar(x= df_cov_ss.index, y= df_cov_ss.m_o30_u60, marker_color = "rgba(0, 127, 255, 0.7)", offsetgroup = 2,\
  base = df_cov_ss.m_u30,  name = '重症男30~60')
oo_figds.add_bar(x= df_cov_ss.index, y= df_cov_ss.m_o60, marker_color = "rgba(0, 127, 255, 0.4)", offsetgroup = 2,\
  base = df_cov_ss.m_u30 + df_cov_ss.m_o30_u60, name = '重症男60~')
oo_figds.add_bar(x= df_covv.index, y= df_covv.f_u30_d, marker_color = "rgba(255, 0, 0, 1)", offsetgroup = 3, name = '死亡女~30')
oo_figds.add_bar(x= df_covv.index, y= df_covv.f_o30_u60_d, marker_color = "rgba(255, 0, 0, 0.7)", offsetgroup = 3, name = '死亡女30~60',\
  base = df_covv.f_u30_d)
oo_figds.add_bar(x= df_covv.index, y= df_covv.f_o60_d, marker_color = "rgba(255, 0, 0, 0.4)", offsetgroup = 3, name = '死亡女60~',\
  base = df_covv.f_u30_d + df_covv.f_o30_u60_d)
oo_figds.add_bar(x= df_cov_ss.index, y= df_cov_ss.f_u30, marker_color = "rgba(255, 127, 0, 1)", offsetgroup = 4, name = '重症女~30')
oo_figds.add_bar(x= df_cov_ss.index, y= df_cov_ss.f_o30_u60, marker_color = "rgba(255, 127, 0, 0.7)", offsetgroup = 4, name = '重症女30~60',\
  base = df_cov_ss.f_u30)
oo_figds.add_bar(x= df_cov_ss.index, y= df_cov_ss.f_o60, marker_color = "rgba(255, 127, 0, 0.4)", offsetgroup = 4, name = '重症女60~',\
  base = df_cov_ss.f_u30 + df_cov_ss.f_o30_u60)
ii_pl.offline.plot(oo_figds, filename='covds.html', include_plotlyjs='cdn') 
 #全死亡者データフレーム作成 
df_02 = ii_pd.read_excel('mc150000.xlsx', skiprows=7, usecols=[0,1,21,22])
df_03 =df_02.T 
df_d = ii_pd.DataFrame(columns=['a_u30', 'a_o30_u60', 'a_o60', 'a_o', 'm_u30', 'm_o30_u60', 'm_o60', 'm_o',\
  'f_u30', 'f_o30_u60', 'f_o60', 'f_o']) 
for row_nn in df_03[2:4].iterrows() :
    aai_a_u30 = row_nn[1][2:8].sum()
    aai_a_o30_u60 = row_nn[1][8:14].sum()
    aai_a_o60 = row_nn[1][14:23].sum()
    aai_a_o = row_nn[1][23]
    aai_m_u30 = row_nn[1][25:31].sum()
    aai_m_o30_u60 = row_nn[1][31:37].sum()
    aai_m_o60 = row_nn[1][37:46].sum()
    aai_m_o = row_nn[1][46]
    aai_f_u30 = row_nn[1][48:54].sum()
    aai_f_o30_u60 = row_nn[1][54:60].sum()
    aai_f_o60 = row_nn[1][60:69].sum()
    aai_f_o = row_nn[1][69]
    df_d.loc[row_nn[0]] = [aai_a_u30, aai_a_o30_u60, aai_a_o60, aai_a_o, aai_m_u30, aai_m_o30_u60, aai_m_o60, aai_m_o, \
      aai_f_u30, aai_f_o30_u60, aai_f_o60, aai_f_o ] 
df_dd = df_d.astype('int')
df_ddd = df_dd.reset_index()
df_dddd = df_ddd.iloc[:,[0,5,6,7,8,9,10,11,12]] 
#表作成 別件で頂いてた関数使用 
def ff_mk_tb_pl(df_ff, aas_out_ff = 'test_pltb', ll_hd_ff = '') :
    """
    out) html file
    ret) oo_fig_ff
    """
    if ll_hd_ff == '' :
        ll_hd_ff = list(df_ff.columns)
    oo_fig_ff = ii_go.Figure()
    oo_fig_ff.add_trace(ii_go.Table(\
        header = dict(values = ll_hd_ff),
        cells = dict(values = [df_ff.iloc[:,num] for num in range(len(df_ff.columns))])
    ))
    ii_pl.offline.plot(oo_fig_ff ,filename = f'{aas_out_ff}.html', include_plotlyjs='cdn')
    return(oo_fig_ff) 
oo_fig = ff_mk_tb_pl(df_dddd, 'deth_year', ['年', \
  '男~30','男~60','男60~','男不明','女~30','女~60','女60~','女不明'])