Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

【Python】JupyterNotebook + matplotlibで折れ線グラフを出力する

今回はAnaconda + matplotlibを使って折れ線グラフを出力します。

プログラミングの環境

Anaconda 5.3.0

Python 3.7.0

numpy 1.15.1

pandas 0.23.4

matplotlib 2.2.3

jupyter 1.0.0

使うデータ

日本が統計を開始してから2017年までの交通事故の統計データ

政府統計の総合窓口

www.e-stat.go.jp

前準備

データ分析によく使われるpandas numpy matplotlibをライブラリとしてインストールしておく必要あります。

pandasライブラリはpythonの標準の配列機能より強力なものを使えます。

numpyライブラリは計算機能が強い。

matplotlibライブラリは図を表示するもの。

以上のライブラリが必要になります。

なお、今回はAnaconda5.3.0環境でのVersionになります。

Anacondaなら最初から3つのライブラリは入っています。

データを加工する

もともと入っているデータではちょっと表示がやりづらそうだったのでこんな感じで変更

和暦 =>(西暦に変換して) => AD
発生件数(件) =>  Incidents
負傷者数(人)=>  Injured_person
死者数(人)=>  Casualties

それ以外のものは削除しました。

これのデータをCSVとして変更しました。これらは

名前はh29_jiko.csvです。

AD,Incidents,Injured_person,Casualties
1948,21341,17609,3848
1949,25113,20242,3790
1950,33212,25450,4202
。。。。

こんな感じ

jupyter notebookコマンドにてjupyter notebookを起動しましょう。

(JupyterNotebookについてはまた今度)

最初のライン

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline

%matplotlib inline はJupyterNote上でmatplotlibを表示するための設定です。

上記のコードを入力した状態でShift + Enterを押します。

ライブラリがうまくはいっていれば、問題なく次の行に進むはず。

2つ目のライン

jiko29 = pd.read_csv('h29_jiko.csv')

pd.read_csv()pandascsvファイルを読み込む関数です。

h29_jiko.csvという名前でCSVファイルを同じディレクトリに保管しているので、このデータ呼び出し方で呼べます。

Shift + Enterでそのコードを実行。

3つ目のライン

plt.plot(jiko29['AD'],jiko29['Incidents'])

Shift + Enterでコード

f:id:Kuzunoha-NE:20190102205248p:plain
事故件数の折れ線グラフ

と、このように簡単に折れ線グラフを出力できます。

2000年頭くらいから2010年くらいまでの事故数が増えて、それから右肩下がり?のようです。

3つ目のラインを編集

plt.plot(jiko29['AD'],jiko29['Injured_person'])をグラフ内に追加します。(負傷者数)

plt.plot(jiko29['AD'],jiko29['Incidents'])
plt.plot(jiko29['AD'],jiko29['Injured_person'])

f:id:Kuzunoha-NE:20190102210735p:plain
事故件数+負傷者数の折れ線グラフ

このように、データを重ねて表示することも可能です。

一回の事故に対して、負傷者が増えたってこと…であってるのかな?

4つ目にやりたかったけど出来なかったこと

死亡者数のデータを出力しようとすると…

plt.plot(jiko29['AD'],jiko29['Incidents'])
plt.plot(jiko29['AD'],jiko29['Injured_person'])
plt.plot(jiko29['AD'],jiko29['Casualties'])

f:id:Kuzunoha-NE:20190102220340p:plain
事故件数+負傷者数+死者数

緑色のグラフが死者数…だけど、さっぱりデータがわからない。

f:id:Kuzunoha-NE:20190102220438p:plain
死者数

このデータだけ見てみると経緯がわかりやすい。

死者数はだんだんと減っていっている傾向にある、ということ。

二つ軸グラフが使えればデータわかりやすかったんだと思うけど、ちょっと今はわからない。

また調べてやってみよう。