よちよちpython

独習 python/Qpython/Pydroid3/termux/Linux

厚労省のコロナ陽性者数データが変わったのでメモ

厚生労働省オープンデータというページに置いてあったコロナのPCR検査の陽性者数csvファイルが、別のファイルに置き換わったのでメモしておきます。





  • 変更内容
    • 日ごとの全国合計陽性者数 → 日ごとの全国・都道府県別の確認済み陽性者数



変更後のファイル内容確認

ついでに中身を見ておきます。ファイルは手動でダウンロード済み。

import pandas as pd

# 新規に置き換わったコロナ陽性者数ファイル
fname = "newly_confirmed_cases_daily.csv"

# csv 読み込み
df = pd.read_csv(fname)

df
Date Prefecture Newly confirmed cases
0 2020/1/26 ALL 1
1 2020/1/26 Hokkaido 0
2 2020/1/26 Aomori 0
3 2020/1/26 Iwate 0
4 2020/1/26 Miyagi 0
... ... ... ...
26779 2021/8/5 Kumamoto 127
26780 2021/8/5 Oita 31
26781 2021/8/5 Miyazaki 36
26782 2021/8/5 Kagoshima 51
26783 2021/8/5 Okinawa 648

26784 rows × 3 columns

カラムは、日付全国・都道府県名新規感染確認済み陽性数、かな。

「確認済み」とわざわざ付けてあり、これまでの単なる陽性者数(positive)と意味が違ってくる。



データフレームの概要確認

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 26784 entries, 0 to 26783
Data columns (total 3 columns):
 #   Column                 Non-Null Count  Dtype 
---  ------                 --------------  ----- 
 0   Date                   26784 non-null  object
 1   Prefecture             26784 non-null  object
 2   Newly confirmed cases  26784 non-null  int64 
dtypes: int64(1), object(2)
memory usage: 627.9+ KB



ALL(全国合計?)だけを抽出

# Prefecture列のALLのみを抽出
df[df["Prefecture"] == "ALL"]
Date Prefecture Newly confirmed cases
0 2020/1/26 ALL 1
48 2020/1/27 ALL 0
96 2020/1/28 ALL 3
144 2020/1/29 ALL 1
192 2020/1/30 ALL 3
... ... ... ...
26544 2021/8/1 ALL 10162
26592 2021/8/2 ALL 8325
26640 2021/8/3 ALL 12062
26688 2021/8/4 ALL 14204
26736 2021/8/5 ALL 15249

558 rows × 3 columns

558行ある。2020/1月から全国各地で一斉に検査を始めたわけはないので(知らんけど)、都道府県別でデータ量が違うかも? 確認する。

# 都道府県名列のユニーク抽出
lst = df["Prefecture"].unique()
print('都道府県名列のユニーク\n', lst)
print('-'*20)
print('都道府県名列のユニーク数\n', len(lst))
print('-'*20)

# 都道府県別の行数確認
print('都道府県別の行数')
for i in df["Prefecture"].unique():
    print(i, df[df["Prefecture"] == i].shape[0])
都道府県名列のユニーク
 ['ALL' 'Hokkaido' 'Aomori' 'Iwate' 'Miyagi' 'Akita' 'Yamagata' 'Fukushima'
 'Ibaraki' 'Tochigi' 'Gunma' 'Saitama' 'Chiba' 'Tokyo' 'Kanagawa'
 'Niigata' 'Toyama' 'Ishikawa' 'Fukui' 'Yamanashi' 'Nagano' 'Gifu'
 'Shizuoka' 'Aichi' 'Mie' 'Shiga' 'Kyoto' 'Osaka' 'Hyogo' 'Nara'
 'Wakayama' 'Tottori' 'Shimane' 'Okayama' 'Hiroshima' 'Yamaguchi'
 'Tokushima' 'Kagawa' 'Ehime' 'Kochi' 'Fukuoka' 'Saga' 'Nagasaki'
 'Kumamoto' 'Oita' 'Miyazaki' 'Kagoshima' 'Okinawa']
--------------------
都道府県名列のユニーク数
 48
--------------------
都道府県別の行数
ALL 558
Hokkaido 558
Aomori 558
Iwate 558
Miyagi 558
Akita 558
Yamagata 558
Fukushima 558
Ibaraki 558
Tochigi 558
Gunma 558
Saitama 558
Chiba 558
Tokyo 558
Kanagawa 558
Niigata 558
Toyama 558
Ishikawa 558
Fukui 558
Yamanashi 558
Nagano 558
Gifu 558
Shizuoka 558
Aichi 558
Mie 558
Shiga 558
Kyoto 558
Osaka 558
Hyogo 558
Nara 558
Wakayama 558
Tottori 558
Shimane 558
Okayama 558
Hiroshima 558
Yamaguchi 558
Tokushima 558
Kagawa 558
Ehime 558
Kochi 558
Fukuoka 558
Saga 558
Nagasaki 558
Kumamoto 558
Oita 558
Miyazaki 558
Kagoshima 558
Okinawa 558

全国合計と全ての都道府県で558行。未検査日はゼロを入れてあるのかな。



都道府県別の推移グラフ

時系列グラフをまとめて画像ファイルにする。

import matplotlib.pyplot as plt
import japanize_matplotlib

# 日付列をdatetime型に変換
df["Date"] = pd.to_datetime(df["Date"])

# グラフ化
plt.figure(figsize=(30,35))

# 都道府県ごと
for i,v in enumerate(lst):
    data = df[df["Prefecture"] == v]
    x= data["Date"]
    y = data["Newly confirmed cases"]
    
    plt.subplot(12, 4, i+1)
    plt.plot(x,y)
    plt.title(f"{v} 新規感染者数")
    plt.gcf().autofmt_xdate()
    plt.grid()


# 保存
plt.savefig('Newly_confirmed_cases.jpg')


plt.tight_layout()
    
    

f:id:chayarokurokuro:20210806214707j:plain

これらの波は検査数の増減によって現れているはず。なぜなら外国はこのような形ではないから。「第○波」には中身がない。しかし感染者が急に増えてるのは確かだ。ワクチンのアレじゃないの?