1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pandasで東京都感染者数のグラフを書く

Posted at

#動機
とにかく、暇だ。新しいことにチャレンジすることが大事だとか、何とか誰かが言っていたので遠隔授業が始まる前にPythonのお勉強をしようと思いました。

#環境
OS:macOS Mojave
Pythonバージョン:Python 3.7.5rc1
実行環境:Atom ruuner

#設計
https://catalog.data.metro.tokyo.lg.jp/dataset/t000010d0000000068
から配布されているコロナ関連のcsvデータがある。これをベースに感染者数をグラフ化する。
グラフ化には、pandas,matplotlib,japanize_matplotlibを用いた。
感染者数を日毎にカウントすれば折れ線グラフを用いて簡単にグラフ化できるだろう。

japanize_matplotlibをインストールしていないと、グラフに日本語を用いることができない。
該当CSVデータはutf-8でエンコードされているものの、日本語にできないものはできないらしい。

#コード

hello.py
import pandas as pd
import numpy
import requests
import datetime
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import japanize_matplotlib

#ダイレクトリンクで取得するのはサーバに負担を掛けるのでローカルでやろう。
url = "130001_tokyo_covid19_patients.csv"
#CSV読み込み
csv_data = pd.read_csv(url)  

#printによる省略回避なくてもOK
pd.set_option('display.max_columns',100)  
pd.set_option('display.max_rows',10000)  

#患者数No
num_patients = csv_data["No"].count()
#列ごとに数を取得
num_date = csv_data["公表_年月日"].value_counts()
num_age = csv_data["患者_年代"].value_counts()
num_sex = csv_data["患者_性別"].value_counts()
#グラフ処理のためnum_dateを要素頻度→日付順にソート
num_date = num_date.sort_index()

#画面出力部
print("感染者数={0}".format(num_patients))
print("公表日頻度=\n{0} \n{1}".format(num_date,num_age))
print("性別=\n{0}".format(num_sex))
print(type(num_date))

#グラフ出力部
plt.figure()
#日付が入るようにX軸90°回転lengendは、凡例の表示位置
num_date.plot(rot=90,legend='reverse') 
plt.savefig('sample_fig.png')
plt.close("all")


printのformatメソッドはあまり気にしすぎなくて良い。
そのまま、変数を用いて、print(num_patients)としてよい。
退院フラグなども追加されたようだが、値としては、Nanか1.0しか取り得ない。死亡も退院に含まれるようだ。

####図1.出力したグラフ
fig.png

#感想
pandasの2次元配列?と一般的な2次元配列の区別がついておらず混乱した。
一般的(default)の2次元配列のメソッドはpandasの2次元配列から呼び出せない。
(メソッドを持っていないから)

Javaでやると100日くらい掛かりそうなことが、pythonでは1日でできてしまって感動している。
実用的なライブラリが多くある一方、どれを使うべきなのかが混乱しやすい。

#今後の展望
天気予報や気温などの相関をだして気温によってコロナウイルスは弱らないということを否定してみたい。
冬から春へのデータしか揃っていないから首都圏の最近の気温の乱高下を利用しようと思うが、
計測するまでもなく、気温に関係なく患者が増えていることから否定できないと思われる。

#参考
pandasについて
https://qiita.com/ysdyt/items/9ccca82fc5b504e7913a

matplotlibについて
https://blog.codecamp.jp/python-Matplotlib

japanize_matplotlibについて
https://qiita.com/uehara1414/items/6286590d2e1ffbf68f6c

#お断り
データ等は、執筆当時のものです。最新のデータや政府から指示・要請に従ってください。
本記事は医学的に正しいということを示すものでは有りません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?