人口動態の可視化する!
みなさん、こんにちは!若葉のマフィンです!
今回はPythonを使ってe-stat(政府統計)のデータを取得して可視化してみたいと思います!といっても私が今後e-statのデータを触りたいから使い方を勉強してみたというだけの記事です💦
2番煎じ、3番煎じ...参考にさせていただいた記事ですら100番煎じとご自身で書いていらっしゃったので、私の記事は1000番煎じくらいですかね笑。とりあえず、お付き合いいただければ嬉しいです!
(※この記事の内容をご自身のPCで試す場合は自己責任でお願いします)
e-stat(政府統計)とは
e-stat:政府統計の総合窓口とは2008年から本運用が開始された日本の統計を閲覧できる政府統計のポータルサイトです。こちらのサイトは総務省統計局が整備し、独立行政法人統計センターが運用管理をしているようです。
すなわち、簡単に言ってしまえば、各省庁などが公表している統計データを容易に閲覧できるようにするためのサイトと思っていただければ一番早いと思います!
で、なぜ政府統計を触るのかというと...日本国民たるもの日本の統計云々とかではなく、単純に気軽に触れるデータないかなぁということで探していたら見つかったというところです(単純ですんません💦)
というわけで早速触っていきましょう〜!
e-statに登録する
e-statのAPIを利用してデータを取ってくるためには、e-statのユーザ登録とAPIへの登録が必要です。詳しくは 利用ガイド | 政府統計の総合窓口(e-Stat)−API機能に書いてあります。
まずは利用ガイドの「1. ユーザ登録」に記載されているリンクからe-statのユーザ登録をしましょう。これはかなり簡単でメールアドレスを打ち込めば、そのアドレス宛に本登録用のメールが届くのでそこからパスワードを設定するだけ。特にその他の個人情報などを記載する必要はありません。
次にApplication IDを取得します。これはAPIを利用するために必要なIDだと思っていただければいいと思います。この取得は政府統計の総合窓口のマイページにある「API機能(アプリケーションID発行)」から行うことができます。Application IDを発行するためには
- 名称
- URL(特に公開する予定がない場合はhttp://localhost/でもいいようです)
が必要になります。これらを入力後、発行ボタンを押せばApplication IDが発行されます!
これで準備は完了です!
人口動態のデータをcsv形式でダウンロード
というわけで人口動態のデータを持ってきましょう!e-statのトップページから適当に探しても見つかりますが、下記のリンクから一発で行けます。
1917年から2016年の間の人口の変化が含まれている人口動態統計のデータです:
https://www.e-stat.go.jp/dbview?sid=0003214917
Jupyter Notebookを使ってここからcsvデータを取得します。(今回はPython3, matplotlib, pandasがあればこの記事の最後まで問題ないと思います)
このAPIを使ったデータの取得は
を参考にさせていただきました。ありがとうございました!
まず最初に必要なライブラリをimportして...
# library
import urllib
import urllib.request
次に
# 取得したapplication id
appID = "" # ここはご自身で取得したIDを入れる
# データの取得
robj = urllib.request.urlopen(
"http://api.e-stat.go.jp/rest/2.1/app/getSimpleStatsData?appId="+appID+"&lang=J&statsDataId=0003214917&metaGetFlg=Y&cntGetFlg=N§ionHeaderFlg=1"
)
resstr = robj.read().decode('utf-8')
最後に、ダウンロードしたファイルを保存。
metastr, datastr = resstr.split('\"VALUE\"')
with open("population.csv", "w") as f:
f.write(datastr.replace('\"',' '))
これで作業しているディレクトリにpopulation.csvという人口動態が書かれたファイルが出力されます!
(参考にさせていただいた記事ではJSON形式で扱っていらっしゃいましたが、私はJSONをあまり使いたくなかったのであえてcsvにしてみました💧)
※注意:APIを利用時にはクレジットの表示が必要らしいです。
https://www.e-stat.go.jp/api/api-info/credit
データの可視化
というわけで、落としてきたデータ可視化してみましょう!
まずはライブラリ。
import pandas as pd
import matplotlib.pyplot as plt
データのロード、必要なデータの取り出し。
df = pd.read_csv("population.csv")
gender = df[" 性別 "].values
time = df[" time_code "].values/1000000
pop = df[" value "].values
そしてplot!
plt.plot(time[gender==" 総数 "], pop[gender==" 総数 "],
"k-", label="population")
plt.plot(time[gender==" 男 "], pop[gender==" 男 "],
"b-", label="population(male)")
plt.plot(time[gender==" 女 "], pop[gender==" 女 "],
"r-", label="population(female)")
plt.legend()
plt.xlabel("year")
plt.show()
ちょっと変わった形式のcsvデータだったのでgenderという項目を使ってデータを分割しましたが、全人口と男女それぞれの人口をplotしてみました!
まとめ
さて、今回はe-stat(政府統計)のAPIを使って人口動態のデータをダウンロードし、実際にそれをplotしてみました!間違いのご指摘やご意見などございましたら、ぜひコメントよろしくお願いします。
今回の記事ははあくまでe-statというところからAPIを使って政府統計持ってこれるよということをお伝えするという目的で書きました!ですが、データを持ってくるということは本来目的にはなるはずもなく、持ってきたデータで何をするのかが重要なはずです!つまり、今回取り組んだことは本当にやりたいことの準備段階です!
したがって、次回はこの人口動態のデータを使ってもうちょっと面白い解析に取り組んでみたいと思います!
ではでは、次回もよろしくお願いします!