【Python】Anacondaのjupyter notebookを利用し、グラフを描く方法

covid-19
この記事は約5分で読めます。

今回は、Anacondaのjupyter notebookを利用し、csvファイルを読み込み
グラフを描く方法を紹介します。

事前準備

csvファイルのダウンロード

kaz-ogiwara/covid19
新型コロナウイルス感染症(COVID-19)の国内における状況を厚生労働省の報道発表資料からビジュアルにまとめた。 - kaz-ogiwara/covid19

こちらのcsvをお借りします。

Pythonコードを読み込む

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
from datetime import date

df = pd.read_csv("individuals.csv")
date = df[['確定年','確定月','確定日']].rename(columns={"確定年": "year", "確定月": "month", "確定日": "day"})
df['年月日'] = pd.to_datetime(date)

df.head()

group = df[['新No.', '年月日']].groupby('年月日').count()

x = group.index
y = group['新No.']

plt.figure(figsize=(8,6))
plt.plot(x, y)
plt.title('新型コロナウィルス感染者数推移')

plt.xticks(rotation=45)

group2 = df[['新No.', '年月日']].groupby('年月日').count().cumsum()

x = group2.index
y = group2['新No.']

plt.figure(figsize=(8,6))
plt.bar(x, y)
plt.title('新型コロナウィルス感染者数累積推移')

gender = df[['新No.', '性別']].groupby('性別').sum().plot.pie(subplots=True, figsize=(8, 6), autopct="%1.1f%%")
plt.title('新型コロナウィルス感染者数男女比')

ライブラリのインポート

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
from datetime import date

こちらのブロックでは利用するライブラリをインポートします。

pandasはcsvをデータフレームとして利用するために使います
matplotlib.pyplotはグラフを描くために使います
japanize_matplotlibはグラフを描く際に日本語が文字化けしてしまうので、インポートします。
あらかじめpip install japanize-matplotlibで利用できるようにしてください。
datetimeは文字列を日付型にするために使います

df = pd.read_csv("individuals.csv")
date = df[['確定年','確定月','確定日']].rename(columns={"確定年": "year", "確定月": "month", "確定日": "day"})
df['年月日'] = pd.to_datetime(date)

read_csvでcsvファイルを読み込み
年月日カラムを追加します。

df.head()

データフレームの先頭5行を表示します。

新No.旧No.確定年確定月確定日年代性別居住地1居住地2年月日
11202011530代神奈川県NaN2020-01-15
22202012440代中国(武漢市)NaN2020-01-24
33202012530代中国(武漢市)NaN2020-01-25
44202012640代中国(武漢市)NaN2020-01-26
55202012840代中国(武漢市)NaN2020-01-28
group = df[['新No.', '年月日']].groupby('年月日').count()

x = group.index
y = group['新No.']

plt.figure(figsize=(8,6))
plt.plot(x, y)
plt.title('新型コロナウィルス感染者数推移')

plt.xticks(rotation=45)

groupbyで年月日ごとの件数を抽出します。

xには index
yには新No.の件数が入ります

plt.figureで出力される画像のサイズを指定します。
plt.plot(x, y)でグラフが描画されます。

plt.titleはグラフのタイトルを設定します
xticsで日付の文字を45度回転させます。

group2 = df[['新No.', '年月日']].groupby('年月日').count().cumsum()

x = group2.index
y = group2['新No.']

plt.figure(figsize=(8,6))
plt.bar(x, y)
plt.title('新型コロナウィルス感染者数累積推移')

累積はcumsum()関数で算出できますので、count()の後に付け加えると累積のグラフが描けます。

gender = df[['新No.', '性別']].groupby('性別').sum().plot.pie(subplots=True, figsize=(8, 6), autopct="%1.1f%%")
plt.title('新型コロナウィルス感染者数男女比')

男女比を出す場合は、plot.pieで円グラフにします。
使う値は、新No.と性別の二つを抽出します。
性別でgroupbyします。
figsize=(8,6)でグラフサイズの指定
autopctはパーセント表示のために指定します。

成果物

本記事のソースコードは商用、非商用問わずご自由にご利用ください。

タイトルとURLをコピーしました