【Pandas】コロナのデータファイルURLまとめ
以前に投稿した時に使ったコロナのデータファイルURLをまとめました。
- ファイルのURL
- ダウンロードと保存の方法
- Pandasでのファイルの読込方法
- 簡単なグラフ作成方法
をメモしておきます。
目次
- 目次
- 新型コロナのデータファイルURL
- ライブラリのインストールとインポート
- データファイルのダウンロードとローカル保存
- ファイルをデータフレームに取り込む
- ◆ 1/12 japan_deaths.xlsx
- ◆ 2/12 demography.csv
- 3/12 ◆ pcr_positive_daily.csv
- 4/12 ◆ pcr_tested_daily.csv
- 5/12 ◆ cases_total.csv
- 6/12 ◆ recovery_total.csv
- 7/12 ◆ death_total.csv
- 7/12-02 ◆ death_total.csv
- 8/12 ◆ pcr_case_daily.csv
- 9/12 ◆ current_situation.csv
- 10/12 ◆ severe_daily.csv
- 11/12 ◆ nhk_news_covid19_prefectures_daily_data.csv
- 11/12-02 ◆ 都道府県別 感染者・死亡者数(単日・累計)グラフ
- 12/12 ◆ ECDE.csv(リネーム済)
- グラフ作成
実行環境
- Windows10 WSL Ubuntu
- UbuntuのAnaconda
- Jupyter Notebook
- Python3.8
- 外部ライブラリ
- requests、Pandas、Numpy、matplotlib
新型コロナのデータファイルURL
新型コロナウィルスに関するデータファイルのリストです。
出典元は、
# 新型コロナのデータファイルURLリスト(11 + 1個) URLs = [ "http://www.ipss.go.jp/projects/j/Choju/covid19/data/japan_deaths.xlsx", # 年代別データ(国立社会保障・人口問題研究所) "https://toyokeizai.net/sp/visual/tko/covid19/csv/demography.csv", # 年代別国内発生動向 (東洋経済オンライン) "https://www.mhlw.go.jp/content/pcr_positive_daily.csv", # 陽性者数 (厚生労働省 オープンデータ) "https://www.mhlw.go.jp/content/pcr_tested_daily.csv", # PCR検査実施人数 (厚生労働省 オープンデータ) "https://www.mhlw.go.jp/content/cases_total.csv", # 入院治療等を要する者の数(厚生労働省 オープンデータ) "https://www.mhlw.go.jp/content/recovery_total.csv", # 退院又は療養解除となった者の数(厚生労働省 オープンデータ) "https://www.mhlw.go.jp/content/death_total.csv", # 死亡者数(厚生労働省 オープンデータ) "https://www.mhlw.go.jp/content/pcr_case_daily.csv", # PCR検査の実施件数(厚生労働省 オープンデータ) "https://www.mhlw.go.jp/content/current_situation.csv", # 発生状況(厚生労働省 オープンデータ) "https://www.mhlw.go.jp/content/severe_daily.csv", # 重症者 (厚生労働省 オープンデータ) "https://www3.nhk.or.jp/n-data/opendata/coronavirus/nhk_news_covid19_prefectures_daily_data.csv", # 都道府県別感染者・死亡者(NHK) ] # (番外編)世界各国の新型コロナデータファイル URLs2 = "https://opendata.ecdc.europa.eu/covid19/casedistribution/csv" # 世界各国別データ(ECDE オープンデータ)
この後これらのファイルをrequests
ライブラリでダウンロード保存します。
※一番最後のファイルを別に分けた理由
ファイル名がcsv
となっており、requests.get()
で行うとエラーが出てしまうため。
TypeError: expected str, bytes or os.PathLike object, not list
これはPandasのpd.read_csv()
で読み込めました。詳しいことは不明
ライブラリのインストールとインポート
外部ライブラリの
- pandas : ファイル読込・保存・データ操作用
- matplotlib : グラフ作成用
- requests : ファイルダウンロード・保存用
- numpy : 累計データ→日ごとに換算用
を使用します。
インストールするにはターミナルから
$ pip install pandas matplotlib requests numpy
など環境に合わせて行ってください。
# ライブラリのインポート import requests import pandas as pd import numpy as np import matplotlib.pyplot as plt
データファイルのダウンロードとローカル保存
今回は、一旦すべてをrequests
ライブラリでダウウンロードしローカルに保存します。
直接ネット上のファイルをPandasのpd.read_csv()
などで読み込むこともできます。
Pandasで読み込み、ダウンロードと保存を行う場合
- 読み込み
- 保存
df.to_csv(保存名, index=False)
(index=Flaseをつける理由は、0から始まる連番のインデックスが保存するとき左端列に付かないようにする為)
で行います。
requestsでダウンロード保存する場合
今回はrequests
ライブラリを使って、一旦すべてのファイルをダウンロード保存します。
# ライブラリのインポート #import requests # 一つずつ取得 for URL in URLs: # 保存名(元のファイル名) savename = URL.split('/')[-1] # 取得 res = requests.get(URL) # カレントディレクトリに保存 with open(savename, "wb") as f: f.write(res.content) print("保存完了")
※番外編のECDEのサイトに置いてある世界各国のコロナのデータファイルについて、requests
で行うと次のようなエラーが出ました。
savename = URLs2.split('/'[-1]) res = requests.get(URLs2) with open(savename, "wb") as f: f.write(res.content) print("保存完了")
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-078ff5b15d97> in <module>
1 savename = URLs2.split('/'[-1])
2 res = requests.get(URLs2)
----> 3 with open(savename, "wb") as f:
4 f.write(res.content)
5 print("保存完了")
TypeError: expected str, bytes or os.PathLike object, not list
ファイル名が単に「csv」となっているからだろうと思いますが詳細は不明。
ダウンロード保存するにはPandasのpd.read_csv(URL)
で読み込んだ後、df.to_csv(保存名)
でローカル保存すれば行ける。
# Pandasでネットから直接読み込み df = pd.read_csv(URLs2) # 一応表示 df
dateRep | day | month | year | cases | deaths | countriesAndTerritories | geoId | countryterritoryCode | popData2019 | continentExp | Cumulative_number_for_14_days_of_COVID-19_cases_per_100000 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 14/12/2020 | 14 | 12 | 2020 | 746 | 6 | Afghanistan | AF | AFG | 38041757.0 | Asia | 9.013779 |
1 | 13/12/2020 | 13 | 12 | 2020 | 298 | 9 | Afghanistan | AF | AFG | 38041757.0 | Asia | 7.052776 |
2 | 12/12/2020 | 12 | 12 | 2020 | 113 | 11 | Afghanistan | AF | AFG | 38041757.0 | Asia | 6.868768 |
3 | 11/12/2020 | 11 | 12 | 2020 | 63 | 10 | Afghanistan | AF | AFG | 38041757.0 | Asia | 7.134266 |
4 | 10/12/2020 | 10 | 12 | 2020 | 202 | 16 | Afghanistan | AF | AFG | 38041757.0 | Asia | 6.968658 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
61895 | 25/03/2020 | 25 | 3 | 2020 | 0 | 0 | Zimbabwe | ZW | ZWE | 14645473.0 | Africa | NaN |
61896 | 24/03/2020 | 24 | 3 | 2020 | 0 | 1 | Zimbabwe | ZW | ZWE | 14645473.0 | Africa | NaN |
61897 | 23/03/2020 | 23 | 3 | 2020 | 0 | 0 | Zimbabwe | ZW | ZWE | 14645473.0 | Africa | NaN |
61898 | 22/03/2020 | 22 | 3 | 2020 | 1 | 0 | Zimbabwe | ZW | ZWE | 14645473.0 | Africa | NaN |
61899 | 21/03/2020 | 21 | 3 | 2020 | 1 | 0 | Zimbabwe | ZW | ZWE | 14645473.0 | Africa | NaN |
61900 rows × 12 columns
これを保存する。61900行もある・・・
# 保存名 savename_urls2 = 'ECDE.csv' # Pandasで保存 df.to_csv(savename_urls2, index=False)
保存できたか確認する。
!ls |grep csv !ls |grep xlsx
ECDE.csv
cases_total.csv
current_situation.csv
death_total.csv
demography.csv
nhk_news_covid19_prefectures_daily_data.csv
pcr_case_daily.csv
pcr_positive_daily.csv
pcr_tested_daily.csv
recovery_total.csv
severe_daily.csv
japan_deaths.xlsx
これでURLsのファイル全12個をローカルに保存できました。
ファイルをデータフレームに取り込む
12個の全ファイルをPandasのデータフレームにします。
URLsのリスト順にしておきます。
files = [URL.split('/')[-1] for URL in URLs] files.append('ECDE.csv') # 番外を追加 files
['japan_deaths.xlsx',
'demography.csv',
'pcr_positive_daily.csv',
'pcr_tested_daily.csv',
'cases_total.csv',
'recovery_total.csv',
'death_total.csv',
'pcr_case_daily.csv',
'current_situation.csv',
'severe_daily.csv',
'nhk_news_covid19_prefectures_daily_data.csv',
'ECDE.csv']
◆ 1/12 japan_deaths.xlsx
年代別累計死亡者数 国立社会保障・人口問題研究所
print("出典:",URLs[0]) df_0 = pd.read_excel(files[0], header=3) df_0
出典: http://www.ipss.go.jp/projects/j/Choju/covid19/data/japan_deaths.xlsx
年代 \nAge | 男性 Male | 女性 Female | 非公表 \nNot Disclosed | Unnamed: 4 | for pyramid | |
---|---|---|---|---|---|---|
0 | <10 | 0.0 | 0.000000 | 0.0 | NaN | 0.0 |
1 | 10s | 0.0 | 0.000000 | 0.0 | NaN | 0.0 |
2 | 20s | 5.0 | 1.000000 | 0.0 | NaN | -5.0 |
3 | 30s | 14.0 | 5.000000 | 0.0 | NaN | -14.0 |
4 | 40s | 58.0 | 22.000000 | 0.0 | NaN | -58.0 |
5 | 50s | 192.0 | 41.000000 | 3.0 | NaN | -192.0 |
6 | 60s | 547.0 | 141.000000 | 12.0 | NaN | -547.0 |
7 | 70s | 1556.0 | 654.000000 | 22.0 | NaN | -1556.0 |
8 | 80s | 2274.0 | 1720.000000 | 106.0 | NaN | -2274.0 |
9 | 90+ | 779.0 | 1284.000000 | 11.0 | NaN | -779.0 |
10 | 小計 \nSubtotal | 5425.0 | 3868.000000 | 154.0 | NaN | NaN |
11 | 高齢者 \nOld Person | 52.0 | 36.000000 | 369.0 | NaN | NaN |
12 | 非公表 \nNot Disclosed | 60.0 | 23.000000 | 1655.0 | NaN | NaN |
13 | 合計 \nTotal | 5537.0 | 3927.000000 | 2178.0 | NaN | NaN |
14 | 総計 \nGrand Total | 11642.0 | NaN | NaN | NaN | NaN |
15 | 性比 \nSex ratio | NaN | 140.998217 | NaN | NaN | NaN |
16 | 性・年代非公表\nSex Age Not Disclosed | NaN | 2349.000000 | NaN | NaN | NaN |
17 | NaN | NaN | NaN | NaN | NaN | NaN |
18 | 出典: 国立社会保障・人口問題研究所「新型コロナウィルス感染症について」www.ipss.g... | NaN | NaN | NaN | NaN | NaN |
19 | Source : National Institute of Population and ... | NaN | NaN | NaN | NaN | NaN |
◆ 2/12 demography.csv
同じく、年代別動向 東洋経済オンライン
df_1 = pd.read_csv(files[1])
df_1
year | month | date | age_group | tested_positive | hospitalized | serious | death | |
---|---|---|---|---|---|---|---|---|
0 | 2021 | 5 | 19 | 10歳未満 | 21655 | 1933 | 0 | 0 |
1 | 2021 | 5 | 19 | 10代 | 49334 | 4021 | 0 | 0 |
2 | 2021 | 5 | 19 | 20代 | 150642 | 11229 | 0 | 6 |
3 | 2021 | 5 | 19 | 30代 | 101020 | 7512 | 0 | 20 |
4 | 2021 | 5 | 19 | 40代 | 98371 | 8333 | 26 | 87 |
5 | 2021 | 5 | 19 | 50代 | 89181 | 7784 | 48 | 238 |
6 | 2021 | 5 | 19 | 60代 | 57428 | 5725 | 87 | 764 |
7 | 2021 | 5 | 19 | 70代 | 51057 | 5865 | 122 | 2441 |
8 | 2021 | 5 | 19 | 80代以上 | 50616 | 5590 | 78 | 6702 |
9 | 2021 | 5 | 19 | 不明 | 9842 | 972 | 2 | 76 |
3/12 ◆ pcr_positive_daily.csv
全国の陽性者数(日ごと) 厚生労働省
df_2 = pd.read_csv(files[2])
df_2
日付 | PCR 検査陽性者数(単日) | |
---|---|---|
0 | 2020/1/16 | 1 |
1 | 2020/1/17 | 0 |
2 | 2020/1/18 | 0 |
3 | 2020/1/19 | 0 |
4 | 2020/1/20 | 0 |
... | ... | ... |
486 | 2021/5/16 | 5247 |
487 | 2021/5/17 | 3677 |
488 | 2021/5/18 | 5229 |
489 | 2021/5/19 | 5811 |
490 | 2021/5/20 | 5711 |
491 rows × 2 columns
4/12 ◆ pcr_tested_daily.csv
df_3 = pd.read_csv(files[3])
df_3
日付 | PCR 検査実施件数(単日) | |
---|---|---|
0 | 2020/2/5 | 4 |
1 | 2020/2/6 | 19 |
2 | 2020/2/7 | 9 |
3 | 2020/2/8 | 4 |
4 | 2020/2/9 | 10 |
... | ... | ... |
463 | 2021/5/16 | 35948 |
464 | 2021/5/17 | 95425 |
465 | 2021/5/18 | 86352 |
466 | 2021/5/19 | 149234 |
467 | 2021/5/20 | 97287 |
468 rows × 2 columns
5/12 ◆ cases_total.csv
全国の入院治療等を要する者の数(日ごと) 厚生労働省
print("出典:",URLs[4]) df_4 = pd.read_csv(files[4]) df_4
出典: https://www.mhlw.go.jp/content/cases_total.csv
日付\t | 入院治療を要する者 | |
---|---|---|
0 | 2020/2/4 | 15 |
1 | 2020/2/5 | 16 |
2 | 2020/2/6 | 12 |
3 | 2020/2/7 | 12 |
4 | 2020/2/8 | 7 |
... | ... | ... |
467 | 2021/5/16 | 73235 |
468 | 2021/5/17 | 70565 |
469 | 2021/5/18 | 68228 |
470 | 2021/5/19 | 66835 |
471 | 2021/5/20 | 66721 |
472 rows × 2 columns
6/12 ◆ recovery_total.csv
全国の退院又は療養解除となった者の数(累計)厚生労働省
print("出典:",URLs[5]) df_5 = pd.read_csv(files[5]) df_5
出典: https://www.mhlw.go.jp/content/recovery_total.csv
日付 | 退院、療養解除となった者 | |
---|---|---|
0 | 2020/1/29 | 1 |
1 | 2020/1/30 | 1 |
2 | 2020/1/31 | 1 |
3 | 2020/2/1 | 1 |
4 | 2020/2/2 | 1 |
... | ... | ... |
473 | 2021/5/16 | 592451 |
474 | 2021/5/17 | 599618 |
475 | 2021/5/18 | 606339 |
476 | 2021/5/19 | 612524 |
477 | 2021/5/20 | 618796 |
478 rows × 2 columns
7/12 ◆ death_total.csv
全国の死亡者数(累計)厚生労働省
print("出典:",URLs[6]) df_6 = pd.read_csv(files[6]) df_6
出典: https://www.mhlw.go.jp/content/death_total.csv
日付 | 死亡者数 | |
---|---|---|
0 | 2020/2/14 | 1 |
1 | 2020/2/15 | 1 |
2 | 2020/2/16 | 1 |
3 | 2020/2/17 | 1 |
4 | 2020/2/18 | 1 |
... | ... | ... |
457 | 2021/5/16 | 11504 |
458 | 2021/5/17 | 11587 |
459 | 2021/5/18 | 11847 |
460 | 2021/5/19 | 11936 |
461 | 2021/5/20 | 12042 |
462 rows × 2 columns
7/12-02 ◆ death_total.csv
全国の死亡者数(累計) 厚生労働省 を日ごとに換算
# 累計死亡者数(全国)を日ごとに換算 import numpy as np df_6_02 = pd.read_csv(files[6]) n_6_02 = np.array(df_6_02) n_daily = np.append(1, np.diff(np.array(n_6_02[:,1]))) df_6_02["死亡者(単日)"] = n_daily df_6_02
日付 | 死亡者数 | 死亡者(単日) | |
---|---|---|---|
0 | 2020/2/14 | 1 | 1 |
1 | 2020/2/15 | 1 | 0 |
2 | 2020/2/16 | 1 | 0 |
3 | 2020/2/17 | 1 | 0 |
4 | 2020/2/18 | 1 | 0 |
... | ... | ... | ... |
457 | 2021/5/16 | 11504 | 45 |
458 | 2021/5/17 | 11587 | 83 |
459 | 2021/5/18 | 11847 | 260 |
460 | 2021/5/19 | 11936 | 89 |
461 | 2021/5/20 | 12042 | 106 |
462 rows × 3 columns
8/12 ◆ pcr_case_daily.csv
print("出典:",URLs[7]) df_7 = pd.read_csv(files[7]) df_7
出典: https://www.mhlw.go.jp/content/pcr_case_daily.csv
日付 | 国立感染症研究所 | 検疫所 | 地方衛生研究所・保健所 | 民間検査会社 | 大学等 | 医療機関 | |
---|---|---|---|---|---|---|---|
0 | 2020/2/18 | 472 | 75 | 398 | 0 | 79 | NaN |
1 | 2020/2/19 | 15 | 68 | 609 | 0 | 0 | NaN |
2 | 2020/2/20 | 20 | 15 | 758 | 0 | 0 | NaN |
3 | 2020/2/21 | 261 | 188 | 902 | 132 | 108 | NaN |
4 | 2020/2/22 | 341 | 127 | 677 | 2 | 19 | NaN |
... | ... | ... | ... | ... | ... | ... | ... |
452 | 2021/5/15 | 0 | 0 | 7677 | 84049 | 1561 | 14372.0 |
453 | 2021/5/16 | 0 | 0 | 6843 | 24077 | 1207 | 8470.0 |
454 | 2021/5/17 | 0 | 0 | 5487 | 51689 | 5761 | 30932.0 |
455 | 2021/5/18 | 0 | 0 | 7233 | 46666 | 4471 | 23622.0 |
456 | 2021/5/19 | 0 | 0 | 7621 | 46674 | 3641 | 17171.0 |
457 rows × 7 columns
9/12 ◆ current_situation.csv
発生状況 厚生労働省
print("出典:",URLs[8]) df_8 = pd.read_csv(files[8]) df_8
出典: https://www.mhlw.go.jp/content/current_situation.csv
Unnamed: 0 | PCR検査\n実施人数 ※3 | 陽性者数 | 入院治療等を要する者の数 | うち重症者の数 | 退院又は療養解除と\nなった者の数 | 死亡者数 | 確認中 ※4 | |
---|---|---|---|---|---|---|---|---|
0 | 国内事例 ※1,※5\n(チャーター便帰国\n者を除く) | 12,878,440\n(+97,287) | 701,255\n(+5,711)※2 | 66,721\n(-114) | 1,294\n(+6)※6 | 618,796\n(+6,272) | 12,042\n(+106) | 4,244\n(-273) |
1 | 空港,海港検疫 | 677,707\n(+1,522)※7 | 2,889\n(+10) | 88\n(-2) | 0 | 2,797\n(+12) | 4 | 0 |
2 | チャーター便\n帰国者事例 | 829 | 15 | 0 | 0 | 15 | 0 | 0 |
3 | 合計 | 13,556,976\n(+98,809) | 704,159\n(+5,721)※2 | 66,809\n(-116) | 1,294\n(+6)※6 | 621,608\n(+6,284) | 12,046\n(+106) | 4,244\n(-273) |
10/12 ◆ severe_daily.csv
重症者(日ごと) 厚生労働省
print("出典:",URLs[9]) df_9 = pd.read_csv(files[9]) df_9
出典: https://www.mhlw.go.jp/content/severe_daily.csv
日付 | 重症者数 | |
---|---|---|
0 | 2020/2/5 | 0 |
1 | 2020/2/6 | 0 |
2 | 2020/2/7 | 0 |
3 | 2020/2/8 | 0 |
4 | 2020/2/9 | 0 |
... | ... | ... |
466 | 2021/5/16 | 1227 |
467 | 2021/5/17 | 1235 |
468 | 2021/5/18 | 1293 |
469 | 2021/5/19 | 1288 |
470 | 2021/5/20 | 1294 |
471 rows × 2 columns
11/12 ◆ nhk_news_covid19_prefectures_daily_data.csv
print("出典:",URLs[10]) df_10 = pd.read_csv(files[10]) df_10
出典: https://www3.nhk.or.jp/n-data/opendata/coronavirus/nhk_news_covid19_prefectures_daily_data.csv
日付 | 都道府県コード | 都道府県名 | 各地の感染者数_1日ごとの発表数 | 各地の感染者数_累計 | 各地の死者数_1日ごとの発表数 | 各地の死者数_累計 | |
---|---|---|---|---|---|---|---|
0 | 2020/1/16 | 1 | 北海道 | 0 | 0 | 0 | 0 |
1 | 2020/1/17 | 1 | 北海道 | 0 | 0 | 0 | 0 |
2 | 2020/1/18 | 1 | 北海道 | 0 | 0 | 0 | 0 |
3 | 2020/1/19 | 1 | 北海道 | 0 | 0 | 0 | 0 |
4 | 2020/1/20 | 1 | 北海道 | 0 | 0 | 0 | 0 |
... | ... | ... | ... | ... | ... | ... | ... |
23072 | 2021/5/16 | 47 | 沖縄県 | 78 | 13859 | 0 | 141 |
23073 | 2021/5/17 | 47 | 沖縄県 | 59 | 13918 | 1 | 142 |
23074 | 2021/5/18 | 47 | 沖縄県 | 168 | 14086 | 4 | 146 |
23075 | 2021/5/19 | 47 | 沖縄県 | 203 | 14289 | 0 | 146 |
23076 | 2021/5/20 | 47 | 沖縄県 | 198 | 14487 | 1 | 147 |
23077 rows × 7 columns
11/12-02 ◆ 都道府県別 感染者・死亡者数(単日・累計)グラフ
下記のコードを実行すると、全ての都道府県の日ごと感染者と死亡者のグラフが表示されます。
# 都道府県別感染者・死亡者 df = pd.read_csv(files[10], encoding='utf-8') # 都道府県名 place_lst = df["都道府県名"].unique() # 都道府県別感染者数(日ごと)のグラフ for place in place_lst: # 1日あたりの感染者数データ Kansensya_daily = df[df["都道府県名"]==place].iloc[:,3] # 日数 day = Kansensya_daily.shape[0] # グラフ作成 print(place) plt.plot(range(day), Kansensya_daily) plt.title("positive daily") plt.grid() plt.show() print("-"*50) # 都道府県別死亡者(日ごと)のグラフ for place in place_lst: # 1日あたりの死者数データ Death_daily = df[df["都道府県名"]==place].iloc[:,-2] # 日数 day = Death_daily.shape[0] # グラフ作成 print(place) plt.plot(range(day), Death_daily) plt.title("death daily") plt.grid() plt.show() print("-"*50)
12/12 ◆ ECDE.csv(リネーム済)
世界各国別データ ECDE オープンデータ (最大2020/12/14までのデータ)
print("出典:",URLs2) df_11 = pd.read_csv('ECDE.csv') df_11
出典: https://opendata.ecdc.europa.eu/covid19/casedistribution/csv
dateRep | day | month | year | cases | deaths | countriesAndTerritories | geoId | countryterritoryCode | popData2019 | continentExp | Cumulative_number_for_14_days_of_COVID-19_cases_per_100000 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 14/12/2020 | 14 | 12 | 2020 | 746 | 6 | Afghanistan | AF | AFG | 38041757.0 | Asia | 9.013779 |
1 | 13/12/2020 | 13 | 12 | 2020 | 298 | 9 | Afghanistan | AF | AFG | 38041757.0 | Asia | 7.052776 |
2 | 12/12/2020 | 12 | 12 | 2020 | 113 | 11 | Afghanistan | AF | AFG | 38041757.0 | Asia | 6.868768 |
3 | 11/12/2020 | 11 | 12 | 2020 | 63 | 10 | Afghanistan | AF | AFG | 38041757.0 | Asia | 7.134266 |
4 | 10/12/2020 | 10 | 12 | 2020 | 202 | 16 | Afghanistan | AF | AFG | 38041757.0 | Asia | 6.968658 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
61895 | 25/03/2020 | 25 | 3 | 2020 | 0 | 0 | Zimbabwe | ZW | ZWE | 14645473.0 | Africa | NaN |
61896 | 24/03/2020 | 24 | 3 | 2020 | 0 | 1 | Zimbabwe | ZW | ZWE | 14645473.0 | Africa | NaN |
61897 | 23/03/2020 | 23 | 3 | 2020 | 0 | 0 | Zimbabwe | ZW | ZWE | 14645473.0 | Africa | NaN |
61898 | 22/03/2020 | 22 | 3 | 2020 | 1 | 0 | Zimbabwe | ZW | ZWE | 14645473.0 | Africa | NaN |
61899 | 21/03/2020 | 21 | 3 | 2020 | 1 | 0 | Zimbabwe | ZW | ZWE | 14645473.0 | Africa | NaN |
61900 rows × 12 columns
# 日付の最大 pd.to_datetime(df_11['dateRep']).max()
Timestamp('2020-12-14 00:00:00')
# 国名抽出 df_11['countriesAndTerritories'].unique()
array(['Afghanistan', 'Albania', 'Algeria', 'Andorra', 'Angola',
'Anguilla', 'Antigua_and_Barbuda', 'Argentina', 'Armenia', 'Aruba',
'Australia', 'Austria', 'Azerbaijan', 'Bahamas', 'Bahrain',
'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin',
'Bermuda', 'Bhutan', 'Bolivia',
'Bonaire, Saint Eustatius and Saba', 'Bosnia_and_Herzegovina',
'Botswana', 'Brazil', 'British_Virgin_Islands',
'Brunei_Darussalam', 'Bulgaria', 'Burkina_Faso', 'Burundi',
'Cambodia', 'Cameroon', 'Canada', 'Cape_Verde',
'Cases_on_an_international_conveyance_Japan', 'Cayman_Islands',
'Central_African_Republic', 'Chad', 'Chile', 'China', 'Colombia',
'Comoros', 'Congo', 'Costa_Rica', 'Cote_dIvoire', 'Croatia',
'Cuba', 'Curaçao', 'Cyprus', 'Czechia',
'Democratic_Republic_of_the_Congo', 'Denmark', 'Djibouti',
'Dominica', 'Dominican_Republic', 'Ecuador', 'Egypt',
'El_Salvador', 'Equatorial_Guinea', 'Eritrea', 'Estonia',
'Eswatini', 'Ethiopia', 'Falkland_Islands_(Malvinas)',
'Faroe_Islands', 'Fiji', 'Finland', 'France', 'French_Polynesia',
'Gabon', 'Gambia', 'Georgia', 'Germany', 'Ghana', 'Gibraltar',
'Greece', 'Greenland', 'Grenada', 'Guam', 'Guatemala', 'Guernsey',
'Guinea', 'Guinea_Bissau', 'Guyana', 'Haiti', 'Holy_See',
'Honduras', 'Hungary', 'Iceland', 'India', 'Indonesia', 'Iran',
'Iraq', 'Ireland', 'Isle_of_Man', 'Israel', 'Italy', 'Jamaica',
'Japan', 'Jersey', 'Jordan', 'Kazakhstan', 'Kenya', 'Kosovo',
'Kuwait', 'Kyrgyzstan', 'Laos', 'Latvia', 'Lebanon', 'Lesotho',
'Liberia', 'Libya', 'Liechtenstein', 'Lithuania', 'Luxembourg',
'Madagascar', 'Malawi', 'Malaysia', 'Maldives', 'Mali', 'Malta',
'Marshall_Islands', 'Mauritania', 'Mauritius', 'Mexico', 'Moldova',
'Monaco', 'Mongolia', 'Montenegro', 'Montserrat', 'Morocco',
'Mozambique', 'Myanmar', 'Namibia', 'Nepal', 'Netherlands',
'New_Caledonia', 'New_Zealand', 'Nicaragua', 'Niger', 'Nigeria',
'North_Macedonia', 'Northern_Mariana_Islands', 'Norway', 'Oman',
'Pakistan', 'Palestine', 'Panama', 'Papua_New_Guinea', 'Paraguay',
'Peru', 'Philippines', 'Poland', 'Portugal', 'Puerto_Rico',
'Qatar', 'Romania', 'Russia', 'Rwanda', 'Saint_Kitts_and_Nevis',
'Saint_Lucia', 'Saint_Vincent_and_the_Grenadines', 'San_Marino',
'Sao_Tome_and_Principe', 'Saudi_Arabia', 'Senegal', 'Serbia',
'Seychelles', 'Sierra_Leone', 'Singapore', 'Sint_Maarten',
'Slovakia', 'Slovenia', 'Solomon_Islands', 'Somalia',
'South_Africa', 'South_Korea', 'South_Sudan', 'Spain', 'Sri_Lanka',
'Sudan', 'Suriname', 'Sweden', 'Switzerland', 'Syria', 'Taiwan',
'Tajikistan', 'Thailand', 'Timor_Leste', 'Togo',
'Trinidad_and_Tobago', 'Tunisia', 'Turkey',
'Turks_and_Caicos_islands', 'Uganda', 'Ukraine',
'United_Arab_Emirates', 'United_Kingdom',
'United_Republic_of_Tanzania', 'United_States_of_America',
'United_States_Virgin_Islands', 'Uruguay', 'Uzbekistan', 'Vanuatu',
'Venezuela', 'Vietnam', 'Wallis_and_Futuna', 'Western_Sahara',
'Yemen', 'Zambia', 'Zimbabwe'], dtype=object)
# 国別の各種合計 df_11.groupby(df_11.columns[6]).sum()
day | month | year | cases | deaths | popData2019 | Cumulative_number_for_14_days_of_COVID-19_cases_per_100000 | |
---|---|---|---|---|---|---|---|
countriesAndTerritories | |||||||
Afghanistan | 5324 | 2162 | 686799 | 49273 | 1971 | 1.293420e+10 | 1750.302963 |
Albania | 4409 | 2067 | 567620 | 48530 | 1003 | 8.043420e+08 | 21166.897881 |
Algeria | 5368 | 2177 | 696899 | 92102 | 2596 | 1.485330e+10 | 2867.464408 |
Andorra | 4342 | 2052 | 557520 | 7338 | 79 | 2.102485e+07 | 128373.393544 |
Angola | 4214 | 2028 | 541360 | 16188 | 371 | 8.529180e+09 | 688.424011 |
... | ... | ... | ... | ... | ... | ... | ... |
Wallis_and_Futuna | 930 | 648 | 119180 | 3 | 0 | 0.000000e+00 | 0.000000 |
Western_Sahara | 3624 | 1898 | 470660 | 766 | 1 | 1.357127e+08 | 1827.771273 |
Yemen | 3904 | 1962 | 502980 | 2083 | 606 | 7.261319e+09 | 99.756799 |
Zambia | 4274 | 2037 | 547420 | 18274 | 367 | 4.840340e+09 | 1405.075428 |
Zimbabwe | 4235 | 2031 | 543380 | 11246 | 307 | 3.939632e+09 | 1025.033469 |
214 rows × 7 columns
# Japanの各種合計を抽出 df_each_country = df_11.groupby(df_11.columns[6]).sum() df_each_country.loc['Japan']
day 5.407000e+03
month 2.192000e+03
year 7.069990e+05
cases 1.796530e+05
deaths 2.585000e+03
popData2019 4.440110e+10
Cumulative_number_for_14_days_of_COVID-19_cases_per_100000 1.803638e+03
Name: Japan, dtype: float64
# 国別死者数累計 df_each_country = df_11.groupby(df_11.columns[6]).sum() df_each_country['deaths']
countriesAndTerritories
Afghanistan 1971
Albania 1003
Algeria 2596
Andorra 79
Angola 371
...
Wallis_and_Futuna 0
Western_Sahara 1
Yemen 606
Zambia 367
Zimbabwe 307
Name: deaths, Length: 214, dtype: int64
# 地域別の各種合計 df_area = df_11.groupby(df_11.columns[10]).sum() df_area
day | month | year | cases | deaths | popData2019 | Cumulative_number_for_14_days_of_COVID-19_cases_per_100000 | |
---|---|---|---|---|---|---|---|
continentExp | |||||||
Africa | 235078 | 111887 | 30261617 | 2379827 | 56334 | 3.806604e+11 | 1.872527e+05 |
America | 215165 | 100702 | 27758834 | 30887593 | 785420 | 3.344507e+11 | 8.783230e+05 |
Asia | 206467 | 89041 | 26746795 | 16782046 | 290129 | 1.522954e+12 | 5.914060e+05 |
Europe | 270727 | 116967 | 35091410 | 21400012 | 479789 | 2.807138e+11 | 2.118615e+06 |
Oceania | 39019 | 18750 | 5049998 | 53440 | 1154 | 1.331826e+10 | 1.387105e+05 |
Other | 975 | 110 | 129279 | 696 | 7 | 0.000000e+00 | 0.000000e+00 |
グラフ作成
簡単な棒グラフと折れ線グラフの作図方法だけ書いておきます。
上の世界各国のエリア別のデータ
de_area
で、cases
を棒グラフにしたい時横軸:index
- 縦軸:cases
として、plt.bar(index, cases)
とすればおk。グラフの表示は省略。
# 世界エリア別cases棒グラフ plt.bar(df_area.index, df_area['cases']) plt.show()
1-2. 東洋経済の年代別データ ◆ 2/12 demography.csv で棒グラフを作りたい時
# demography.csvで年代別データ
df_1
year | month | date | age_group | tested_positive | hospitalized | serious | death | |
---|---|---|---|---|---|---|---|---|
0 | 2021 | 5 | 19 | 10歳未満 | 21655 | 1933 | 0 | 0 |
1 | 2021 | 5 | 19 | 10代 | 49334 | 4021 | 0 | 0 |
2 | 2021 | 5 | 19 | 20代 | 150642 | 11229 | 0 | 6 |
3 | 2021 | 5 | 19 | 30代 | 101020 | 7512 | 0 | 20 |
4 | 2021 | 5 | 19 | 40代 | 98371 | 8333 | 26 | 87 |
5 | 2021 | 5 | 19 | 50代 | 89181 | 7784 | 48 | 238 |
6 | 2021 | 5 | 19 | 60代 | 57428 | 5725 | 87 | 764 |
7 | 2021 | 5 | 19 | 70代 | 51057 | 5865 | 122 | 2441 |
8 | 2021 | 5 | 19 | 80代以上 | 50616 | 5590 | 78 | 6702 |
9 | 2021 | 5 | 19 | 不明 | 9842 | 972 | 2 | 76 |
累計死亡者数の棒グラフの場合は
- 横軸:age_group
- 縦軸:death
にして、plt.bar(age_group, death)
とすればおk。グラフ表示省略。
# 年代別累計死亡者数グラフ plt.bar(df_1['age_group'], df_1['death']) plt.show()
- 10/12 ◆ severe_daily.csvのデータで重症者(日ごと)の折れ線グラフを描きたい時
# 10/12 ◆ severe_daily.csv のデータ
df_9
日付 | 重症者数 | |
---|---|---|
0 | 2020/2/5 | 0 |
1 | 2020/2/6 | 0 |
2 | 2020/2/7 | 0 |
3 | 2020/2/8 | 0 |
4 | 2020/2/9 | 0 |
... | ... | ... |
466 | 2021/5/16 | 1227 |
467 | 2021/5/17 | 1235 |
468 | 2021/5/18 | 1293 |
469 | 2021/5/19 | 1288 |
470 | 2021/5/20 | 1294 |
471 rows × 2 columns
plt.plot(df['重症者数'])
か、または
plt.plot(日付, 重症者数)
- 横軸:日付
- 縦軸:重症者数
で折れ線グラフができる。グラフ表示省略。
# ① 横軸は連番のインデックスが使われるグラフ plt.plot(df_9['重症者数']) plt.show()
# ② 横軸を日付列(str型)に指定したグラフ plt.plot(df_9['日付'], df_9['重症者数']) plt.show()
②のグラフは横軸が日付(str型)で重なり真っ黒な表示になってしまうので別の工夫がいる。今回は触れません。
【参考リンク】
長くなりました、以上です。