エルの楽園

Twitterで垂れ流すには見苦しい長文を置きます。 あ、はてな女子です。

新型コロナ感染者数が一番ヤバい都市はどこか

人口100万人以上の政令指定都市の新型コロナウィルス感染者数を月ごとに時系列で追ってみました。Pandasの勉強をしようと思っていたらこんなデータを見つけたので遊んでみた結果です。

gis.jag-japan.com

 

人口100人以上の政令指定都市は以下の11都市です。

  1. 札幌市
  2. 仙台市
  3. 横浜市
  4. 川崎市
  5. さいたま市
  6. 名古屋市
  7. 京都市
  8. 大阪市
  9. 神戸市
  10. 広島市
  11. 福岡市

まずは3月から11月までの各都市別新規感染者数。

f:id:aliliput:20201213224524p:plain

8月に一度大きな山があったことがわかりますが、中でも大阪はぶっちぎりです。近隣の京都や神戸は比較的健闘しているようです。

大阪と札幌は増加傾向にあるのが怖いですね。

こちらは10万人ごとの新規感染者数。

f:id:aliliput:20201213224825p:plain

8月には大阪以外にも福岡市が思いの他マズい状況にあったことが分かりました。次いで名古屋が割とピンチだったかも?しかしどちらもその後は抑え込んでいることがわかります。

それにしても大阪はマズいですね、人口補正をかけてもこの通りです。これは周辺地域が気が気でないでしょう。札幌と大阪の二都市がなぜ増加傾向にあるのかは興味深い問題です。

以下はやったこと。

もっとすっきりした風に書きたいので、有識者の添削をお待ちしております。

まずはデータを取得

import pandas as pd
import numpy as np
import datetime as dt 
import matplotlib.pyplot as plt

 時系列データを追うために日付をdatetimeに変換

df['確定日'] = pd.to_datetime(df['確定日'])
各都市の人口は別場所からとってきて辞書型に格納
cities = ['yokohama''osaka''nagoya''sapporo''fukuoka''kawasaki''kobe''kyoto''saitama''hiroshima''sendai']
numbers = [37564122750995232813819729781602633153908215166381457856131875311986641091992]
populations = dict(zip(cities, numbers))
各都市の新規感染者数はこんな感じて取得。query()がなぜかdatetimeと仲悪かったんじゃ……
def get_ts_list(city):
  df_city = df[(df['居住市区町村'] == city)]
  ts_list = 
  month = 3
  while month < 12 :
    date = "2020/" + str(month) + "/1"
    date2 = "2020/" + str(month+1) + "/1"
    p = df_city['確定日'] >= dt.datetime.strptime(date, "%Y/%m/%d")
    s = df_city['確定日'] >= dt.datetime.strptime(date2, "%Y/%m/%d")
    new = p.sum()-s.sum()
    ts_list.append(new)
    month +=1
  return ts_list
新規感染者数を10万人あたりで計算する。
def get_ts_per_list(tscity):
  ts_per = 
  for p in ts:
    per = round(p/populations[city]*1000001)
    ts_per.append(per)
  return ts_per

 グラフ描画はこんな感じ。データが多いので画像を拡大し凡例を出しています。

plt.figure(figsize=(63), dpi=200)
plt.plot(month, sapporo_ts, marker="o", color = "#E60012", linestyle = "--", label="Sapporo")
plt.plot(month, sendai_ts, marker="o", color = "#F39800", linestyle = "--", label="Sendai")
plt.plot(month, yokohama_ts, marker="o", color = "#DFD000", linestyle = "--", label="Yokohama")
plt.plot(month, kawasaki_ts, marker="o", color = "#009944", linestyle = "--", label="Kawasaki")
plt.plot(month, saitama_ts, marker="o", color = "#0068B7", linestyle = "--", label="Saitama")
plt.plot(month, nagoya_ts, marker="o", color = "#1D2088", linestyle = "--", label="Nagoya")
plt.plot(month, kyoto_ts, marker="o", color = "#920783", linestyle = "--", label="Kyoto")
plt.plot(month, osaka_ts, marker="v", color = "#C7000B", linestyle = "--", label="Osaka")
plt.plot(month, kobe_ts, marker="v", color = "#E8AC51", linestyle = "--", label="Kobe")
plt.plot(month, fukuoka_ts, marker="v", color = "#0068B7", linestyle = "--", label="Fukuoka")
plt.plot(month, hiroshima_ts, marker="v", color = "#39A869", linestyle = "--", label="Hiroshima")
plt.legend(loc="upper left", fontsize=8)