〇コード
%matplotlib inline
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import requests
import re
import pandas
#※データ取得ページ
#組織 厚生労働省 人口動態調査_人口動態統計_確定数_人口_年次_2016年 1_年次・性別人口
#http://www.data.go.jp/data/dataset/mhlw_20171204_0015/resource/53d97e92-5f10-4fcf-ab3b-a08c898f09c1
# download data and cleansing
url = "http://www.e-stat.go.jp/SG1/estat/GL08020103.do?_csvDownload_&fileId=000008018753&releaseCount=1"
table = False
rows = []
for line in requests.get(url).iter_lines():
# SJISとして読み込む
row = line.decode('SJIS')
# 「総数」含まれている行から実データ
if '総数' in row:
table = True
# ヘッダー1列目を「year」に修正
row = re.sub('^,.*', 'year,total,male,female', row)
# 西暦上2桁を修正
row = re.sub('^ ', '19', row)
# その他の位置の全角スペースを消す
row = re.sub(' ', '', row)
# 空行を除く
if len(row) == 0:
continue
if table == True:
rows.append(row)
filename = "population-data.csv"
with open(filename, mode='w') as outfile:
outfile.write("\n".join(rows))
df = pandas.read_csv(filename)
df2 = df.loc[:,['year','male','female']]
ax = df2.set_index('year').plot()
ax.get_yaxis().set_major_formatter(
ticker.FuncFormatter(lambda y, p: format(int(y), ',')))
plt.legend(loc='best')
plt.show()
〇出力画像
○関連情報
・requestsパッケージに関する他の記事はこちらを参照してください。
0 件のコメント:
コメントを投稿