dev_si’s blog

政府や公財などから公開されている統計データでグラフ描画やデータ分析などして楽しむブログ

人口統計 労働力調査

人口統計

労働力調査

年齢階級 性別の別 時代変化

高齢化が進んでいるのが非常によくわかる。女性の労働力は、いわゆるM字の、「産後、いちど仕事を離れて、子育てが落ち着いたら復帰する」傾向は近年見られず、働き続けている様子が見て取れる。高齢世帯の就業率の上昇も興味深い。

f:id:dev_si:20190213163434p:plain

就業者数 年齢階級 性別の別 時代ごと

 

レシピ

基本情報

開発環境

jupyter.org

情報取得元

www.e-stat.go.jp

ソースコード

事前準備

ライブラリインポート

%matplotlib inline
import urllib
import urllib.request
import json
import numpy as np
import pandas as pd
import japandas as jpd
import seaborn as sns
import matplotlib
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt
font = {'family':'IPAexGothic'}
matplotlib.rc('font', **font)
print('Complete.')
人口統計取得
df = jpd.DataReader('0003006361', 'estat', appid=appId)
df.loc[(df['性別'] != '総数') & (df['教育'] != '総数') & (df['年齢階級(詳細集計)'] != '総数') & (df['雇用形態'] == '役員を除く雇用者') & (df['教育'] != 'うち在学中') & (df.index=='2018年7~9月期')]
#2018年
df_2018 = df.loc[(df['性別'] != '総数') & (df['教育'] == '総数') & (df['年齢階級(詳細集計)'] != '総数') & (df['年齢階級(詳細集計)'] != '15~19歳') & (df['年齢階級(詳細集計)'] != '20~24歳') & (df['雇用形態'] == '役員を除く雇用者') & (df['教育'] != 'うち在学中') & (df.index=='2018年7~9月期')]
df_2018 = df_2018.assign(intval = df_2018.value.apply(lambda x:int(x))).assign(epoch = df_2018.value.apply(lambda x:int(2018))).set_index(['年齢階級(詳細集計)','性別','epoch']).drop(['value', '地域', '就業状態(詳細集計)', '教育', '表章項目', '雇用形態'], axis=1)
#2002年
df_2002 = df.loc[(df['性別'] != '総数') & (df['教育'] == '総数') & (df['年齢階級(詳細集計)'] != '総数') & (df['年齢階級(詳細集計)'] != '15~19歳') & (df['年齢階級(詳細集計)'] != '20~24歳') & (df['雇用形態'] == '役員を除く雇用者') & (df['教育'] != 'うち在学中') & (df.index=='2002年7~9月期')]
df_2002 = df_2002.assign(intval = df_2002.value.apply(lambda x:int(x))).assign(epoch = df_2002.value.apply(lambda x:int(2002))).set_index(['年齢階級(詳細集計)','性別','epoch']).drop(['value', '地域', '就業状態(詳細集計)', '教育', '表章項目', '雇用形態'], axis=1)
#2010年
df_2010 = df.loc[(df['性別'] != '総数') & (df['教育'] == '総数') & (df['年齢階級(詳細集計)'] != '総数') & (df['年齢階級(詳細集計)'] != '15~19歳') & (df['年齢階級(詳細集計)'] != '20~24歳') & (df['雇用形態'] == '役員を除く雇用者') & (df['教育'] != 'うち在学中') & (df.index=='2010年7~9月期')]
df_2010 = df_2010.assign(intval = df_2010.value.apply(lambda x:int(x))).assign(epoch = df_2010.value.apply(lambda x:int(2010))).set_index(['年齢階級(詳細集計)','性別','epoch']).drop(['value', '地域', '就業状態(詳細集計)', '教育', '表章項目', '雇用形態'], axis=1)
df_disp = pd.concat([df_2002,df_2010, df_2018]).reset_index()
sns.catplot(x='年齢階級(詳細集計)', y="intval", hue='性別',col='epoch', data=df_disp, kind='bar')