どこにでもいる30代SEの学習ブログ

主にプログラミング関連の学習内容。読んだ本の感想や株式投資についても書いてます。

【政府統計】大企業・大卒だと定年退職金の平均は3,000万円を超える [e-Stat(政府統計): 民間企業退職給付調査(4)]

f:id:predora005:20210222233348j:plain
*1

前回に引き続き「民間企業の勤務条件制度等調査(民間企業退職給付調査)」の2016年次データを紹介します。

predora005.hatenablog.com

わかったこと

わかったことは次の通りです。

  • 勤続年数41年で定年退職する人が最も多い(高卒で60歳定年)
  • 定年退職の退職一時金は概ね800〜1,000万円
  • 企業年金の受給額は大企業の方が圧倒的に多い

[3] 退職一時金・企業年金の支給状況

[3-1] 退職者数

定年退職者の割合は、勤続年数37年、41年が多いことが分かります。これは、高卒・大卒の人達の多くが60歳で定年に達するためです。18歳で高卒であれば勤続年数41年で、22歳で大卒であれば勤続年数37年で60歳に達します。勤続年数42年も多いことから、当時(2016年の42年前は1974年)は中学卒も多かったことが伺えます。

f:id:predora005:20210221195600p:plain

会社都合退職の人数は、定年退職ほど多くありません。勤続年数30年以降が比較的多いことが分かります。

f:id:predora005:20210221195623p:plain

[3-2] 退職一時金

意外なことに企業規模によって極端な差はありませんでした。勤続年数40年前後では、1,000万円前後が平均です。ただ、調査対象に従業員数50人未満の企業が含まれていないので、そのような企業ではより少ない可能性もあります。

f:id:predora005:20210221195815p:plain

会社都合退職に関しては、従業員数50人から100人未満の標本数が少なく信頼性に欠けます。ただ、会社都合ということもあり定年退職に比べて高い金額を受け取っている傾向があると言えます。

f:id:predora005:20210221195826p:plain

[3-3] 企業年金

退職一時金とは異なり、大企業と中小企業とで大きな差がありました。大卒・大企業の場合、退職一時金と合わせると3,000万円を超えています。

f:id:predora005:20210221195945p:plain

注意点は、そもそも企業年金制度を設けている企業が、従業員の多い企業に偏っていることです。従業員数100人未満の企業の6割以上は企業年金制度を設けていません。

f:id:predora005:20210221200011p:plain

会社都合退職に関しては、標本数が少ないですが、従業員数の多い企業ほど高い金額を受け取れる傾向にあります。

終わりに

大企業の退職金が中小企業に比べて多いという、世間の認識を裏付ける内容でした。これだけ見ると大企業に勤めた方がいいと思ってしまいますが、私は20代のうちから60歳のときのことなんて考える気にはなりませんでした。昔に比べれば、長く勤めて退職金をもらうよりも働けるうちに稼ぐという風潮が強まっている気はします。

出典

*1:3D Animation Production CompanyによるPixabayからの画像

【政府統計】企業年金の受給資格は勤続年数や年齢によって決まる [e-Stat(政府統計): 民間企業退職給付調査(3)]

f:id:predora005:20210222233348j:plain
*1

前回に引き続き「民間企業の勤務条件制度等調査(民間企業退職給付調査)」の2016年次データを紹介します。

predora005.hatenablog.com

わかったこと

わかったことは次の通りです。

  • 大企業になるほど、企業年金制度を設けている場合が多い
  • 企業年金の受給資格は、勤続年数が要件となるケースが8割弱を占めている
  • 企業年金の受給資格が勤続年数要件のみの場合、勤続年数5年以上で約50%の人が受給資格を得る
  • 企業年金の受給資格が勤続年数要件かつ年齢要件の場合、79%が60歳で受給資格を得る
  • 企業年金の支給開始時期は、厚生年金支給開始時または定年退職時の人が半数以上を占めている

[2] 退職一時金・企業年金制度の状況

[2-9] 企業年金の種類の状況

f:id:predora005:20210221194748p:plain

大企業になるほど、企業年金制度があるケースが多いです。種類としては、確定給付企業年金(規約型)、確定拠出年金(企業型)が多いです。

確定給付企業年金確定拠出年金の主な違いは、会社が運用するか自分で運用するかです。確定給付企業年金は会社が運用し、確定拠出年金は自分で運用します。

確定給付企業年金の規約型・基金型の違いは、規約型が母体企業が信託会社・生命保険会社等と契約し管理・運用し、基金型は母体企業とは別に法人を設立して管理・運用します。

f:id:predora005:20210221194804p:plain

f:id:predora005:20210213194517p:plain

[2-10] 企業年金の種類別受給資格の状況

f:id:predora005:20210221194844p:plain

企業年金を受給するための資格は、勤続年数が要件となる場合が多く、加えて年齢も要件となる場合も多いです。

f:id:predora005:20210213201310p:plain

[2-11] 受給資格として勤続年数又は年齢の要件を設けている場合の要件の状況

f:id:predora005:20210221195009p:plain

勤続年数を要件にしている場合、勤続年数要件のみの場合は勤続年数5年以上で約50%の人が受給資格を得ます。勤続年数25年以上であれば95%以上です。一方、勤続年数要件かつ年齢要件の場合、半数以上の人が勤続年数20年以上でないと受給資格が得られません。

f:id:predora005:20210213205626p:plain

年齢要件を設けている場合のほとんどが、勤続年数要件との併用です。年数要件は60歳で受給資格を得るケースが79%と圧倒的に多いです。

f:id:predora005:20210221195104p:plain

60歳になる前に退職したら年金を受給できないのでしょうか? この点は調べてもわかりませんでした。

f:id:predora005:20210213205646p:plain

[2-12] 企業年金の種類別支給開始時期の状況

f:id:predora005:20210221195148p:plain

企業年金の支給開始時期は、厚生年金支給開始時または定年退職時の人が半数以上を占めています。どちらの条件に該当するとしても、大抵の人は65歳までには支給が開始されると言えます。

f:id:predora005:20210213211149p:plain

[2-13] 企業年金の種類別支給期間の状況

f:id:predora005:20210221195331p:plain

企業年金の多くは有期の場合が多いですが、厚生年金基金の場合には終身が7割を超えています。

f:id:predora005:20210221195341p:plain

終身の場合には保証期間が設けられています。保証期間は下記サイトによると次の通りです。

通算企業年金の特長と注意点|通算企業年金のおすすめ|企業年金連合会

保証期間とは、年金受取開始年齢から80歳に達するまでの期間のことを指し、その間に亡くなられたり、病気や災害などの理由があった場合に、選択一時金や死亡一時金を受け取ることができます。

f:id:predora005:20210221195402p:plain

終身ではなく有期の場合は、全体で見ると10年が50%強、20年が30%弱となっています。

f:id:predora005:20210213220514p:plain

終わりに

私が勤めている中小企業は企業年金制度が無いため、馴染みのない内容が多かったです。勤続年数が長いほど高い金額をもらえるのは、退職一時金と同じでした。

次回は、企業規模と勤続年数別の退職金などについて見ていきます。

predora005.hatenablog.com

出典

*1:3D Animation Production CompanyによるPixabayからの画像

【政府統計】大企業のほうが退職一時金と企業年金の両方を設けている [e-Stat(政府統計): 民間企業退職給付調査(2)]

f:id:predora005:20210222233348j:plain
*1

前回に引き続き「民間企業の勤務条件制度等調査(民間企業退職給付調査)」の2016年次データを紹介します。

predora005.hatenablog.com

わかったこと

わかったことは次の通りです。

  • 9割以上の企業が退職給付制度を設けている
  • 退職一時金を設けている企業が8割で、企業年金を設けている企業は5割
  • 大企業になるほど、退職一時金と企業年金の両方を設けている割合が高くなる
  • 退職一時金のうち、大企業のほとんどは社内準備だが、中小企業だと中小企業退職金共済の割合が増える
  • 勤続年数が増えるほど、退職一時金は多くもらえる
  • 定年前退職(早期退職や希望退職)の優遇制度を設けている企業は少ない

[2] 退職一時金・企業年金制度の状況

[2-1] 退職給付制度の普及状況

f:id:predora005:20210221193228p:plain

9割以上の企業が退職給付制度を設けています。もっとも割合の少ない50人〜99人の企業でも87%は退職給付制度があります。

f:id:predora005:20210221193243p:plain

退職給付制度の内訳は、企業規模によって大きく異なります。大企業ほど退職一時金と企業年金の併用が多く、中小企業ほど退職一時金のみの割合が多いです。

f:id:predora005:20210212211048p:plain

[2-2] 企業年金導入時の原資の状況

f:id:predora005:20210221193339p:plain

私の理解不足で内容がはっきりとは理解できていません。恐らく、企業年金を導入した場合のみに該当する話で、その原資が何かの話です。退職一時金から充当する場合が最も多く、企業年金用に別途原資を拠出する割合は少ないということだと思います。

f:id:predora005:20210212223905p:plain

[2-3] 退職給付債務(PBO)計算上の割引率の状況

割引率については以下のサイトの説明が分かりやすかったです。

割引率|退職給付会計|EY新日本有限責任監査法人

割引率とは、将来の価値を現在の価値に直すために用いる率のことをいいます。利回りを考慮すれば現在の通貨の価値と将来の通貨の価値とでは価値が違うために、将来の通貨の価値を現在の通貨の価値に換算するために用いる率のことを指します。

f:id:predora005:20210221193542p:plain

500人未満の企業では、退職給付債務を設定していない企業が多数派です。一方、500人以上の企業では設定している場合の方が多いです。

f:id:predora005:20210212231601p:plain

設定している場合の割引率は、1.0%未満の場合が多いです。割引率は債券の利回りを参考にするとされています。米国債 10年の利回りが1%くらいなので、あまりに割引率が高いと、本当に大丈夫なんだろうかと心配になってしまいますね。

f:id:predora005:20210221193605p:plain

f:id:predora005:20210212231752p:plain

[2-4] 退職給付制度がない理由の状況

f:id:predora005:20210221193704p:plain

f:id:predora005:20210212233023p:plain

[2-5] 退職一時金制度の種類と算定方式の状況

f:id:predora005:20210221193912p:plain

退職一時金制度のある企業が8割です。

f:id:predora005:20210212235049p:plain

退職一時金制度の内訳は、社内準備が多いです。ただし、中小企業の場合は中小企業退職金共済を利用する割合が増えています。社内準備と併用、もしくは、共済のみの割合が増えるようです。

f:id:predora005:20210221193933p:plain

f:id:predora005:20210212235107p:plain

[2-6] 退職一時金(社内準備)における算定方式別、退職事由別、勤続年数別平均累積支給率の状況

f:id:predora005:20210221194232p:plain

基本給を基礎とする場合、退職一時金は一般的に以下の式で計算されます。

(退職一時金) = (退職時の基本給) × (支給率)

仮に、勤続35年で定年を迎えたとき、基本給が30万円なら、30×62.4=1,872万円を退職金として受け取れます。そこから税金が引かれます。

f:id:predora005:20210213001435p:plain

別テーブル方式の場合は、基本給ではなく勤続年数に応じた基準額がベースとなります。勤続年数に応じて、支給率が増えるのは基本給と変わりません。

f:id:predora005:20210221194247p:plain

f:id:predora005:20210213001453p:plain

[2-7] 定年前退職者の退職一時金優遇制度の状況

f:id:predora005:20210221194408p:plain

定年前退職(早期退職や希望退職をすべて含めたもの)の優遇制度については、社員1,000人以上の企業では40%に存在するものの、100人未満の企業では5%に満たないです。

f:id:predora005:20210213003508p:plain

[2-8] 早期退職優遇制度及び希望退職制度の退職一時金の割増率の状況

早期退職の優遇については、年齢が高く定年に近い方が割増率は低いです。勤続年数が高くなるにつれて貰える退職一時金が増えるため、割増率が低くなっているのでしょう。

f:id:predora005:20210221194615p:plain

f:id:predora005:20210221194619p:plain

f:id:predora005:20210221194622p:plain

f:id:predora005:20210213010513p:plain

希望退職制度については、ブランクとなっている箇所が多いです。希望退職制度を設けている企業は少ないのかもしれません。

f:id:predora005:20210213010703p:plain

終わりに

勤続年数が長いほど退職金が多くもらえることなど、今回は一般的な認識を裏付けるデータでした。

次回も引き続き、退職金や企業年金について見ていきます。

predora005.hatenablog.com

出典

*1:3D Animation Production CompanyによるPixabayからの画像

【政府統計】中小企業ほど定年後の再雇用率が高い [e-Stat(政府統計): 民間企業退職給付調査(1)]

f:id:predora005:20210222233348j:plain
*1

以前、e-Stat(政府統計の総合窓口)で様々な統計データが見れることを紹介しました。

predora005.hatenablog.com

今回は「民間企業の勤務条件制度等調査(民間企業退職給付調査)」の2016年次のデータから得られた情報や考察を紹介していきます。

わかったこと

わかったことは次の通りです。

  • 大企業ほど定年年齢60歳の割合が多い
  • 8割以上の企業は、定年制の変更予定が無い
  • 96%以上の企業は継続雇用制度があり、そのうち87%以上は再雇用である
  • 中小企業ほど定年後の再雇用率が高い
  • 再雇用のうちフルタイム再雇用の割合が9割以上

前提条件

民間企業の勤務条件制度等調査とは

民間企業の勤務条件制度等調査は、国家公務員の勤務条件検討のための基礎資料を得ることを目的とした調査で、民間企業を対象とし毎年実施されます。
この調査では、民間企業における労働時間、休業・休暇、福利厚生、退職管理及び災害補償法定外給付等の諸制度を調査し、その結果をとりまとめの上提供しています。

民間企業の勤務条件制度等調査 | 政府統計の総合窓口

調査対象

調査対象は「常勤の従業員数が50人以上の企業」が対象です。そのため、小規模事業者は含まれません。就業者数のおよそ4分の1は含まれないと考えて良いでしょう。

また、全企業を調査したわけではなく、層化無作為抽出された企業が対象です。標本企業7,355社のうち有効な回答のあった4,493社について集計が行われています。

平成28年民間企業の勤務条件制度等調査(民間企業退職給付調査)

調査時期

2016年10月1日〜11月30日です。4年半前の調査なので、当時と現在とでは若干異なっているかも知れません。

[1] 定年制と定年退職者の継続雇用の状況

[1-1] 定年制の状況

f:id:predora005:20210221192242p:plain

大企業ほど定年年齢が低く、中小企業になるほど高くなる傾向にあります。

f:id:predora005:20210212171021p:plain

[1-2] 定年制の今後の変更予定の状況

f:id:predora005:20210221192454p:plain

2016年時点のデータですが、定年年齢の引き上げ等の変更を検討していない企業が8割です。

f:id:predora005:20210212172022p:plain

[1-3] 継続雇用制度の状況

f:id:predora005:20210221192650p:plain

96%以上の企業は継続雇用制度があります。

f:id:predora005:20210221192702p:plain

継続雇用制度の内訳はほとんどが再雇用制度です。中小企業になるほど勤務延長制度の内訳が増えています。

f:id:predora005:20210212183732p:plain

再雇用と勤務延長の違いは、人事院の用語解説によると次の通りです。

「再雇用制度」とは、定年年齢に到達した従業員を一旦退職させた後、再び雇用することをいい、雇用形態の名称、身分上の取扱い等(常勤、非常勤、嘱託等)は問わない。
「勤務延長制度」とは、定年年齢に到達した従業員を、退職させることなく、引き続き常勤の従業員として雇用することをいう。
「特殊関係」とは、高年齢者等の雇用の安定等に関する法律(昭和46年法律第68号)第9条第2項において、継続雇用制度に含まれるものとされているものいう。

[1-4] 再雇用者の割合の状況

f:id:predora005:20210221192842p:plain

社員数の多い企業の方が定年退職者が多いのは当然の結果ですね。ただ、次のグラフを見ると、社員数だけが要因ではありませんでした。

f:id:predora005:20210221192857p:plain

中小企業の方が、定年後に再雇用となる割合が高いことが分かります。中小企業の方が収入が低い傾向にありますから、年金受給が始まる65歳までは労働を続けるというのは納得できます。

f:id:predora005:20210212191106p:plain

[1-5] フルタイム再雇用者の割合の状況

f:id:predora005:20210221193004p:plain

再雇用者のうちフルタイムの割合がかなり多いです。1,000人以上の企業ですと割合は減っていますが、7割以上の企業は100%フルタイム再雇用です。

f:id:predora005:20210212192824p:plain

[1-6] 再雇用者の勤務形態別人数割合の状況

f:id:predora005:20210221193050p:plain

大企業の方がフルタイム再雇用の割合が多いのは意外でした。一つ前のデータでは、大企業の100%フルタイム再雇用が少なかったです。しかし、よく考えれば、定年退職者の数が多いため、100%フルタイム再雇用は成立しにくいのでした。

f:id:predora005:20210212203647p:plain

終わりに

従業員数50人以上の企業が対象なので、日本の実態を正確に表しているとは言えません。自営業の方なども含まれないわけですし。

ただ、裾野を広げすぎると収拾がつかなくなるのも理解は出来ます。前提条件を踏まえた上で、引き続きe-Statのデータを見ていきます。

次回は、退職金や企業年金について見ていきます。

predora005.hatenablog.com

出典

*1:3D Animation Production CompanyによるPixabayからの画像

【政府統計】pythonによる政府統計e-StatのAPI機能の使い方

f:id:predora005:20210107001006p:plain
*1

政府統計の総合窓口(e-Stat)」の統計データは、APIで取得可能です。ユーザ登録(無料)を行えば、誰でもAPIを利用できます。

Pythonを使って、API経由で人口動態のデータを取得し、matplotlibでグラフ表示しました。

f:id:predora005:20210131100819p:plain

[1] ユーザ登録

利用ガイドにしたがって、ユーザ登録します。メールアドレスを入力し仮登録します。

f:id:predora005:20210127185110p:plain

仮登録後メールに記載されているURLにアクセスし、本登録を行います。

利用する機能で「API機能」「地図で見る統計」をチェックします。チェックを外す理由は特に無いでしょう。

f:id:predora005:20210127185232p:plain

パスワードを入力するか、ソーシャルアカウント連携を行えば本登録完了です。

f:id:predora005:20210127185259p:plain

[2] アプリケーションIDの取得

ユーザ登録が終わったら、マイページからアプリケーションIDを取得します。

f:id:predora005:20210128212911p:plain

f:id:predora005:20210128212934p:plain

名称、URL、概要を入力します。以下は公式の引用です。

アプリケーションID取得時に入力する名称、URL、概要は後から変更しても構いません。また、URLについては、公開サイトで利用しない場合は、ローカルアドレス(「http://test.localhost/」等)を入力してください。

URLは公開サイトで利用しないので、ガイド通りのURLとしました。名称と概要は適当です。

f:id:predora005:20210128213035p:plain

[発行]ボタンを押すと、appId欄にアプリケーションIDが表示されます。

f:id:predora005:20210128213050p:plain

[3] 取得できるデータと統計表IDを確認する

e-Statの全てのデータがAPIで取得できるわけではありません。それでも数多くのデータが取得可能です。

また、APIで特定のデータにアクセスするには「統計表ID」が必要です。統計表IDは各データでユニークなIDです。ブラウザで取得したいデータの統計表IDを確認します。

[3-1] ブラウザで確認する方がAPIより楽

API機能でも確認できるのですが、結論としてはブラウザ「データベース | 統計データを探す | 政府統計の総合窓口」から確認する方が早いです。

データの数が1万を軽く超える数あるので、APIで取得しても見るのが大変です。

[3-2] ブラウザで統計表IDを確認する

ブラウザからデータベース | 統計データを探す | 政府統計の総合窓口にアクセスします。今回は分野から「人口・世帯」を選択し、最新の「人口動態調査」を探していきました。

f:id:predora005:20210130150401p:plain

f:id:predora005:20210130150407p:plain f:id:predora005:20210130150413p:plain f:id:predora005:20210130150417p:plain

最下層まで辿っていくと、[DB]と[API]が表示されます。[API]を押したら目的は達せられるのですが、いったん[DB]を選択してデータの中身を確認します。

f:id:predora005:20210130150422p:plain

データの中身が確認できたので、[API]を選択します。

f:id:predora005:20210130150428p:plain

API機能でアクセスするためのURLが表示されます。statsDataIdの後ろの数字が「統計表ID」です。appId(アプリケーションID)は空欄になっています。APIを使用する際は取得した自身のIDをセットします。

f:id:predora005:20210130150435p:plain

また、ファイル形式はXML,JSON,CSVのいずれかが選択できます。ファイル形式を変更すると、URLも自動的に変更してくれます。

appId=の後ろに取得したアプリケーションIDをコピーし、ブラウザでアクセスします。すると、データがXML形式で表示されました。

f:id:predora005:20210130150438p:plain

[4] メタ情報を取得する

「統計表ID」を用いてメタ情報を取得します。メタ情報は公式のAPI仕様によると次の通りです。

指定した統計表IDに対応するメタ情報(表章事項、分類事項、地域事項等)を取得します。

先程の人口動態調査ですと、行(年度:2018年, 2017年...)と列(出生率, 死亡数...)が取得できます。

[4-1] ブラウザで取得

まずは、ブラウザで確認します。下記URLをブラウザに入力します。

https://api.e-stat.go.jp/rest/3.0/app/getMetaInfo?appId={アプリケーションID}&statsDataId=0003411561&explanationGetFlg=N

f:id:predora005:20210130212013p:plain f:id:predora005:20210130212018p:plain

[4-2] Pythonで取得

Pythonで取得する際は、JSON形式で取得します。ブラウザではXML形式で取得しましたが、PythonではJSON形式の方が扱いやすいからです。

import requests

app_id = {アプリケーションID}
stats_data_id = 0003411561 # 年次別にみた人口動態総覧

# メタ情報取得のURL
url = 'https://api.e-stat.go.jp/rest/3.0/app/json/getMetaInfo?'
url += 'appId={0:s}&'.format(app_id) 
url += 'statsDataId={0:s}&'.format(stats_data_id)
url += 'explanationGetFlg=N&'   # 解説情報有無:無し

# メタ情報取得
json = requests.get(url).json()
print(json)
# {'GET_META_INFO': {'RESULT': {'STATUS': 0, 'ERROR_MSG': '正常に終了しました。', 'DATE': '2021-01-30T21:26:13.043+09:00'}, 
# 'PARAMETER': {'LANG': 'J', 'STATS_DATA_ID': '0003411561', 'EXPLANATION_GET_FLG': 'N', 'DATA_FORMAT': 'J'}, 
# 'METADATA_INF': {'TABLE_INF': ...(省略)...
# 'CLASS_INF': {'CLASS_OBJ': [{'@id': 'cat01', '@name': '人口動態総覧', 
# 'CLASS': [{'@code': '00110', '@name': '出生数', '@level': '1', '@unit': '人'}, ...(省略)...

取得したJSONから、行と列の情報を抽出します。

# メタ情報から各表のCLASS(行や列)を抽出
class_objs = json['GET_META_INFO']['METADATA_INF']['CLASS_INF']['CLASS_OBJ']
print(class_objs)
# [ {'@id': 'cat01', '@name': '人口動態総覧', 
#   'CLASS': [{'@code': '00110', '@name': '出生数', '@level': '1', '@unit': '人'}, ...(省略)...
#   {'@id': 'time', '@name': '時間軸(年次)', 
#   'CLASS': [{'@code': '2018000000', '@name': '2018年', '@level': '1'}, ...(省略)...

[5] 統計データの取得

APIの統計データ取得を用いて、データの中身(値)を取得します。

[5-1] ブラウザで確認

まずはブラウザで、どのようなデータ構造になっているのか確認します。

https://api.e-stat.go.jp/rest/3.0/app/getMetaInfo?appId={アプリケーションID}&explanationGetFlg=N

f:id:predora005:20210130224945p:plain

VALUEタグの中に値が格納されており、属性に何のデータかが示されています。属性はメタ情報と対応しています。「cat01」は「人口動態総覧」のカテゴリを示しており、「00110」は人口動態総覧のうち「出生数」であることを示しています。

[5-2] Pythonで確認

メタ情報の際と同様にJSON形式で取得します。

app_id = {アプリケーションID}
stats_data_id = 0003411561 # 年次別にみた人口動態総覧

# 統計データ取得のURL
url = 'https://api.e-stat.go.jp/rest/3.0/app/json/getStatsData?'
url += 'appId={0:s}&'.format(app_id) 
url += 'statsDataId={0:s}&'.format(stats_data_id)
url += 'metaGetFlg=N&'          # メタ情報有無
url += 'explanationGetFlg=N&'   # 解説情報有無
url += 'annotationGetFlg=N&'    # 注釈情報有無

# 統計データ取得
json = requests.get(url).json()

# 統計データからデータ部取得
values = json['GET_STATS_DATA']['STATISTICAL_DATA']['DATA_INF']['VALUE']

# jsonからDataFrameを作成
df = pd.DataFrame(values)
print(df)
#      @cat01       @time @unit        $
# 0     00110  2018000000     人   918400
# 1     00110  2017000000     人   946146
# 2     00110  2016000000     人   977242
# 3     00110  2015000000     人  1005721
# 4     00110  2014000000     人  1003609
# ...     ...         ...   ...      ...
# 3154  00430  1903000000  人口千対     1.44
# 3155  00430  1902000000  人口千対     1.43
# 3156  00430  1901000000  人口千対     1.43
# 3157  00430  1900000000  人口千対     1.46
# 3158  00430  1899000000  人口千対     1.53
# 
# [3159 rows x 4 columns]

JSON形式で取得したデータは、後で扱いやすいようにDataFrameに変換しました。

[5-3] IDやCODEを意味のわかる内容に置き換える

これは必須ではありませんが、データの可読性のためにやりました。

DataFrameの列名'@cat01', '@time'を一目見ただけだと意味が理解づらいですし、値も'00110'や'2018000000'となっており分かりづらいです。メタ情報を用いて、意味の分かる内容に置き換えます。

# 統計データのカテゴリ要素をID(数字の羅列)から、意味がわかる名称に変更する
for class_obj in meta_info:

    # メタ情報の「@id」の先頭に'@'を付与'した文字列が、
    # 統計データの列名と対応している
    column_name = '@' + class_obj['@id']
    
    # 統計データの列名を「@code」から「@name」に置換するディクショナリを作成
    id_to_name_dict = {}
    for obj in class_obj['CLASS']:
        id_to_name_dict[obj['@code']] = obj['@name']
    
    # ディクショナリを用いて、指定した列の要素を置換 
    df[column_name] = df[column_name].replace(id_to_name_dict)

# 統計データの列名を変換するためのディクショナリを作成
col_replace_dict = {'@unit': '単位', '$': '値'}
for class_obj in meta_info:
    org_col = '@' + class_obj['@id']
    new_col = class_obj['@name']
    col_replace_dict[org_col] = new_col

# ディクショナリに従って、列名を置換する
new_columns = []
for col in stats_data:
    if col in col_replace_dict:
        new_columns.append(col_replace_dict[col])
    else:
        new_columns.append(col)
        
df.columns = new_columns
print(df)
#      人口動態総覧 時間軸(年次)    単位        値
# 0       出生数   2018年     人   918400
# 1       出生数   2017年     人   946146
# 2       出生数   2016年     人   977242
# 3       出生数   2015年     人  1005721
# 4       出生数   2014年     人  1003609
# ...     ...     ...   ...      ...
# 3154    離婚率   1903年  人口千対     1.44
# 3155    離婚率   1902年  人口千対     1.43
# 3156    離婚率   1901年  人口千対     1.43
# 3157    離婚率   1900年  人口千対     1.46
# 3158    離婚率   1899年  人口千対     1.53
# 
# [3159 rows x 4 columns]

[6] matplotlibでグラフ表示

APIで取得した「年次別にみた人口動態総覧」のデータを、matplotlibでグラフ表示します。

[6-1] 数値に変換する

年が文字列になっているので、整数値に変換します。変換値は「年度」という新しい列に格納します。

# 時間軸(年次)を整数に変換
df['年度'] = df['時間軸(年次)'].map(lambda year: int(year.replace('年','')))

次は「値」列について、有効値以外をNaNに変換します。例えば、戦前には調査していなかったデータなどは"…"といった値が格納されています。NaNに変換後、列のデータタイプをfloat64に変換します。

import numpy as np

# 有効値以外をNaNに置換する
df['値'] = df['値'].replace(['***', '-', '.', '…'], np.nan)
df['値'] = df['値'].astype(np.float64)

[6-2] 出生率と死亡率を表示

出生率と死亡率をDataFrameから取り出し、折れ線グラフで表示します。

import matplotlib.pyplot as plt

# 出生率と死亡率を取得する
birth_rate = df[df['人口動態総覧'] == '出生率']
mortality_rate = df[df['人口動態総覧'] == '死亡率']

# 図と座標軸を取得
fig = plt.figure()
ax = fig.add_subplot(1,1,1)

# 折れ線グラフをセット
ax.plot(birth_rate['年度'], birth_rate['値'], label='出生率(人口千対)')
ax.plot(mortality_rate['年度'], mortality_rate['値'], label='死亡率(人口千対)')

# Y軸の範囲設定
ymax = max([ birth_rate['値'].max(), mortality_rate['値'].max() ])
ax.set_ylim([0, ymax])

# 凡例表示
ax.legend()

# 折れ線グラフを表示
fig.show()

2005年ごろを境に死亡率が出生率を上回り、人口が減少していることが分かります。

f:id:predora005:20210131100755p:plain

[6-3] 自然増減率を第二軸に追加

第二軸に自然増減率を第二軸に追加します。自然増減率が0以下になると、人口が減少することを意味します。

# 自然増減率を取得する
natutal_id_rate = df[df['人口動態総覧'] == '自然増減率']

# 自然増減率を第二軸にプロット
ax2 = ax.twinx()
ax2.plot(natutal_id_rate['年度'], natutal_id_rate['値'], 'C2', ls=':', label='自然増減率(人口千対)')
ax2.set_ylabel('自然増減率(人口千対)')
ax2.grid(axis='y', color='gray', ls=':')

出生率と死亡率が交わるタイミングと、自然増減率が0になるタイミングが一致しています。

f:id:predora005:20210131100819p:plain

終わりに

そこまで大きな苦労はなく、APIで統計データを取得できました。今後、他のデータと組み合わせたり、色々と有効活用できそうです。

[付録1] APIで統計表情報取得

個人的には、APIではなくブラウザで確認する方をオススメします。

[付1-1] ブラウザで試しに確認

ブラウザで次のURLを直接入力して確認します。

API機能のうち「統計表情報取得」を使用して確認します。

https://api.e-stat.go.jp/rest/3.0/app/getStatsList?appId={アプリケーションID}&limit=2

  • limit=2では、取得するデータを2データまでに限定します。

上記URLにアクセスすると、次の結果が得られます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GET_STATS_LIST xsi:noNamespaceSchemaLocation="https://api.e-stat.go.jp/rest/3.0/schema/GetStatsList.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RESULT>
        <STATUS>0</STATUS>
        <ERROR_MSG>正常に終了しました。</ERROR_MSG>
        <DATE>2021-01-27T22:44:59.685+09:00</DATE>
    </RESULT>
    <PARAMETER>
        <LANG>J</LANG>
        <DATA_FORMAT>X</DATA_FORMAT>
        <LIMIT>1</LIMIT>
    </PARAMETER>
    <DATALIST_INF>
        <NUMBER>183998</NUMBER>
        <RESULT_INF>
            <FROM_NUMBER>1</FROM_NUMBER>
            <TO_NUMBER>1</TO_NUMBER>
            <NEXT_KEY>2</NEXT_KEY>
        </RESULT_INF>
        <TABLE_INF id="0003288322">
            <STAT_NAME code="00020111">民間企業の勤務条件制度等調査</STAT_NAME>
            <GOV_ORG code="00020">人事院</GOV_ORG>
            <STATISTICS_NAME>民間企業の勤務条件制度等調査(民間企業退職給付調査) 統計表 1 定年制と定年退職者の継続雇用の状況</STATISTICS_NAME>
            <TITLE no="1">(推計値) 定年制の状況</TITLE>
            <CYCLE>年次</CYCLE>
            <SURVEY_DATE>201601-201612</SURVEY_DATE>
            <OPEN_DATE>2019-03-20</OPEN_DATE>
            <SMALL_AREA>0</SMALL_AREA>
            <COLLECT_AREA>該当なし</COLLECT_AREA>
            <MAIN_CATEGORY code="03">労働・賃金</MAIN_CATEGORY>
            <SUB_CATEGORY code="02">賃金・労働条件</SUB_CATEGORY>
            <OVERALL_TOTAL_NUMBER>25</OVERALL_TOTAL_NUMBER>
            <UPDATED_DATE>2019-03-30</UPDATED_DATE>
            <STATISTICS_NAME_SPEC>
                <TABULATION_CATEGORY>民間企業の勤務条件制度等調査(民間企業退職給付調査)</TABULATION_CATEGORY>
                <TABULATION_SUB_CATEGORY1>統計表</TABULATION_SUB_CATEGORY1>
                <TABULATION_SUB_CATEGORY2>1 定年制と定年退職者の継続雇用の状況</TABULATION_SUB_CATEGORY2>
            </STATISTICS_NAME_SPEC>
            <DESCRIPTION/>
            <TITLE_SPEC>
                <TABLE_CATEGORY>(推計値)</TABLE_CATEGORY>
                <TABLE_NAME>定年制の状況</TABLE_NAME>
                <TABLE_EXPLANATION>1 事務・技術関係職種の従業員がいる企業41,314社について集計した。2 「定年年齢」内の数値は定年制がある企業を100とした場合の割合を示す。</TABLE_EXPLANATION>
            </TITLE_SPEC>
        </TABLE_INF>
        <TABLE_INF id="0003288323">
            ...(省略)...
        </TABLE_INF>
    </DATALIST_INF>
</GET_STATS_LIST>

[付1-2] Pythonで取得

Pythonで取得する際は、json形式で取得します。

# coding: utf-8

import sys
import requests

# エントリーポイント
if __name__ == '__main__':
    
    # コマンドライン引数からアプリケーションID取得
    if len(sys.argv) < 2:
        print('Usage:')
        print('  python3 {0:s} [appId]'.format(sys.argv[0]))
        sys.exit(1)
    app_id = sys.argv[1]
    
    # 統計表情報取得のURL
    url = 'https://api.e-stat.go.jp/rest/3.0/app/json/getStatsList?'
    url += 'appId={0:s}&'.format(app_id)
    url += 'limit=2'

    # 統計表情報取得
    json = requests.get(url).json()
    print(json)
# {'GET_STATS_LIST': {'RESULT': 
# {'STATUS': 0, 'ERROR_MSG': '正常に終了しました。', 'DATE': '2021-01-27T22:52:49.687+09:00'}, 
# 'PARAMETER': {'LANG': 'J', 'DATA_FORMAT': 'J', 'LIMIT': 1}, 
# 'DATALIST_INF': {'NUMBER': 183998, 'RESULT_INF': ...(以下略)...

アプリケーションIDをソースに直打ちしたくないので、コマンドライン引数で指定しています。

[付1-3] pandasのDataFrame形式に変換

json形式のままだと見づらいので、pandasのDataFrame形式に変換します。いったんディクショナリのリストにした後、DataFrameに変換します。

import pandas as pd

# 統計表情報から各表のデータ部取得
datalist = json['GET_STATS_LIST']['DATALIST_INF']['TABLE_INF']

# ディクショナリ形式にし、pandasのDataFrameに変換
dict_list = []
for data in datalist:
    dict = {}

    # 統計表ID
    dict['id'] = data['@id']
    
    # 政府統計コードと統計名
    dict['stat_id'] = data['STAT_NAME']['@code']
    dict['stat_name'] = data['STAT_NAME']['$']
    
    #タイトル
    if '$' in data['TITLE']:
        dict['title'] = data['TITLE']['$']
    else:
        dict['title'] = data['TITLE']
    
    # 担当機関
    dict['gov_code'] = data['GOV_ORG']['@code']
    dict['gov_name'] = data['GOV_ORG']['$']
    
    # ディクショナリをリストに追加
    dict_list.append(dict)

df = pd.DataFrame(dict_list)
print(df)
#    id          stat_id   stat_name                 title                           gov_code  gov_name
# 0  0003288322  00020111  民間企業の勤務条件制度等調査  (推計値) 定年制の状況               00020     人事院
# 1  0003288323  00020111  民間企業の勤務条件制度等調査  (推計値) 定年制の今後の変更予定の状況  00020     人事院

[付1-4] CSVファイルに出力

URLのlimit=1000に変更して、1,000件の統計表情報を取得します。そして、取得したデータをCSVファイルに出力します。

df.to_csv('list.csv')

CSVファイルを確認すると、各データのIDやタイトルが確認できます。

id stat_id stat_name title gov_code gov_name
0003288322 00020111 民間企業の勤務条件制度等調査 (推計値) 定年制の状況 00020 人事院
... ... ... ... ...
0003354588 00100101 情報化社会と青少年に関する調査 親 Q6 [カード4] 携帯電話もPHSも使わない理由は何ですか。次の中から、あてはまるものをいくつでもあげてください。(M.A.) 家族の就労状況 00100 内閣府

データは1,000件だけでなく、まだまだ沢山あります。APIでキーワード検索等の絞り込みも行えますが、ブラウザで確認した方が楽です。

*1:200 DegreesによるPixabayからの画像

【政府統計】e-Statの使い方(政府の統計データを見る)

f:id:predora005:20210107001006p:plain
*1

政府統計の総合窓口(e-Stat)」は政府の統計データが閲覧できるサイトです。公式の利用ガイドには次のように書かれています。

政府統計の総合窓口(e-Stat)は、各府省が公表する統計データを一つにまとめ、統計データを検索したり、地図上に表示できるなどの、たくさんの便利な機能を備えた政府統計のポータルサイトです。

職種別の平均年収、人口ピラミッド、人口密度分布といったデータを閲覧できます。

f:id:predora005:20210105121141p:plain

f:id:predora005:20210105214843p:plain

f:id:predora005:20210105231621p:plain

数多くのデータがあり、様々な形式で表示したりダウンロードできます。今回はe-Statの使い方と、どのようなデータがあるのか概要をまとめました。

[1] 基本的な使い方

[1-1] データを探す

データの探し方は色々ありますが、まずは分野から探してみます。

f:id:predora005:20210104211147p:plain

分野は17種類に分かれています。皆さんが想像するような主要な統計データは一通り揃っています。今回は「労働・賃金」分野の「民間給与実態統計調査」を見てみます。

f:id:predora005:20210104211159p:plain

次の画面から「データベース」を選択し「年次」「2016年」と選択していくと、各統計表を選ぶ画面に進みます。

f:id:predora005:20210104213725p:plain

f:id:predora005:20210104214345p:plain

f:id:predora005:20210104214402p:plain

たくさんの統計表が並んでいます。その中から「給与所得者数・給与額・税額 業種別」の「DB」を選択します。

f:id:predora005:20210104211228p:plain

すると、表形式でデータが表示されます。

f:id:predora005:20210104211242p:plain

[1-2] データを絞る

列が多いので、表示する列を絞り込みます。[表示項目選択]を押して項目の選択を行っていきます。

f:id:predora005:20210104215516p:plain

まずは「1/3 表章項目」を「給与所得者数(年間月平均)」と「給与額(平均)」に絞ります。

f:id:predora005:20210104215530p:plain

「3/3 年」は「2016年」のみに絞ります。

f:id:predora005:20210104215541p:plain

これで少し見やすくなりました。

f:id:predora005:20210104215554p:plain

[1-3] グラフを表示する

[グラフ表示]を押すとグラフが表示されます。ただ、このままでは分かりにくいので表示する項目を変更します。

f:id:predora005:20210105105827p:plain

まずは「合計」を表示項目から外します。

f:id:predora005:20210105110022p:plain

次に給与額(平均)のチェックを外し「給与所得者数(年間月平均)」のみ表示するようにします。

f:id:predora005:20210105110217p:plain

これで少しは見やすくなりました。

f:id:predora005:20210105120516p:plain

次は棒グラフを縦向きに変更し、業種を基準軸にします。

f:id:predora005:20210105120554p:plain

これで見るに耐えうる表示になりました。製造業がもっとも人数が多く、電気・ガス・熱供給・水道業がもっとも少ないと分かります。文字が見切れているのは何とも出来ませんでした。

f:id:predora005:20210105120853p:plain

同じ要領で業種ごとの給与額を見てみます。

f:id:predora005:20210105121113p:plain

単位は千円です。電気・ガス・熱供給・水道業がもっとも給与が高く、800万円超えです。宿泊業・飲食サービス業がもっとも低く、150万くらいです。恐らく、パートの方も含んでいるのでしょう。

f:id:predora005:20210105121141p:plain

[2] 統計ダッシュボードを使う

次は[グラフ]をクリックして、統計ダッシュボードを使います。

f:id:predora005:20210105214815p:plain

統計ダッシュボードはe-Statとは別ページに飛びます。

f:id:predora005:20210105214831p:plain

人口ピラミッドを表示すると、いい感じに表示されます。調査をした時点を変えたり、都道府県別に表示したりもできます。

f:id:predora005:20210105214843p:plain

次は[地域の見える化]を選択し「世界と日本のすがた」を見てみます。

f:id:predora005:20210105215720p:plain

2020年の各国の人口が表示されました。表示する国を選ぶことは出来ないようです。

f:id:predora005:20210105215335p:plain

アニメーションを再生させて、時系列の変化を見ることもできます。

f:id:predora005:20210105215350p:plain

人口以外にも「完全失業率」「国内総生産」を見ることも可能です。

f:id:predora005:20210105215403p:plain

続いて「地域のレーダーチャート・ランキング」を見てみます。

f:id:predora005:20210105221908p:plain

デフォルトでは東京都のレーダーが表示されます。

f:id:predora005:20210105221943p:plain

表示する項目は変更できます。項目は40以上あります。

f:id:predora005:20210105222042p:plain

また、各項目についてランキングを表示することもできます。

f:id:predora005:20210105222057p:plain

[3] 時系列表を見る

今度は「時系列表」を見てみます。

f:id:predora005:20210105222537p:plain

分野と表示できる項目が表示されます。

f:id:predora005:20210105222544p:plain

項目を選択すると、時系列表が表示されました。

f:id:predora005:20210105222551p:plain

[4] 統計GISを使う

続いて[地図]をクリックし「地図で見る統計」を開きます。

f:id:predora005:20210105223849p:plain

中段の「地図で見る統計 (jSTAT MAP)」をクリックします。

f:id:predora005:20210105223855p:plain

地図が開きました。ここから色々な作業を行っていきます。

f:id:predora005:20210105223901p:plain

[4-1] 統計グラフ作成

右下の[統計図作成]をクリックするとメニューが表示されます。その中から[統計グラフ作成]を選択します。

f:id:predora005:20210105231555p:plain

ダイアログが表示されますので「調査名」「年」「集計単位」を選択していきます。

f:id:predora005:20210105231603p:plain

今回は「国勢調査」「2015年」「都道府県」を選択しました。その中からさらに「人口性比、密度」「密度(人口総数)」を選択し、[指標選択]をクリックします。

f:id:predora005:20210105231608p:plain

すると、下段に「密度(人口総数)」が追加されます。他のデータも追加できますが今回はこの状態で[次へ]をクリックします。

f:id:predora005:20210105231613p:plain

集計単位と集計範囲はそのままの状態で[集計開始]をクリックします。

f:id:predora005:20210105232717p:plain

無事、都道府県ごとに人口密度が色分けされました。

f:id:predora005:20210105231621p:plain

[4-2] プロット作成

次は地図上にプロットを作成します。

f:id:predora005:20210106214134p:plain

プロット作成には3パターンあります。[ジオコーディング], [緯度経度付きファイル]は事前準備が必要です。今回は何も準備していないので[地図クリック]を選びました。

f:id:predora005:20210106214143p:plain

プロットを作成するためにはグループが必要です。グループには複数のプロットを含むことができます。グループ名を「東京都の駅」とし、アイコンは「ピン型(青)」としました。

f:id:predora005:20210106214147p:plain

[決定]を押すと、地図が再び表示され、地図上をクリックするように促されます。

f:id:predora005:20210106214153p:plain

八王子駅立川駅を登録しました。プロットの作成はこれで終わりです。作成したプロットはこのあとの「エリア作成」で使います。

f:id:predora005:20210106214202p:plain

[4-3] エリア作成

先ほど作成したプロット(八王子駅立川駅)から徒歩15分圏内のエリアを作成します。

f:id:predora005:20210106221106p:plain

グループ名に「駅から15分圏内」を入力します。その他はデフォルトのままでも問題ありません。

f:id:predora005:20210106221116p:plain

次にエリアの作成方法から「到達圏」を洗濯します。

f:id:predora005:20210106221122p:plain

先ほど作成したプロットを使いたいので「到達権(プロットグループ指定)」を選択します。

f:id:predora005:20210106221127p:plain

プロットグループは先ほど作成したグループ「東京都の駅」を選択します。到達圏指定は「徒歩、時速4km、15分圏」に設定します。エリア作成範囲は「すべて」としました。

f:id:predora005:20210106221131p:plain

駅から15分圏内のエリアが、水色のワクで表示されました。

f:id:predora005:20210106221137p:plain

[4-4] 計測

続いては「計測」で距離と面積を計測します。

f:id:predora005:20210106224219p:plain

まずは、上野駅秋葉原駅の直線距離を計測します。距離計測を選択して、上野駅秋葉原駅をクリックすると「1.776km」と表示されました。

f:id:predora005:20210106224227p:plain

続いて、皇居の面積を計測します。面積計測を選択して、地道に皇居周りを選択していきます。結果「2.280km2」と表示されました。実際の面積は約2.3km2らしいので、実際と近い数値になっています。

f:id:predora005:20210106224236p:plain

[4-5] 選択

「選択」を使い、6-1で作成したグラフを選択します。今回はグラフ選択を使用しますが、プロットとエリアの選択も可能です。

f:id:predora005:20210106225843p:plain

宮城県を選択すると、宮城県の人口密度が表示されます。表示される内容は作成したグラフの内容によって変わります。人口密度のグラフを作成したので人口密度が表示されています。

f:id:predora005:20210106225849p:plain

新潟県と愛知県も選択すると、二県の人口密度が追加されました。

f:id:predora005:20210106225856p:plain

[5] 都道府県・市区町村のすがた

次は[地域]をクリックし「都道府県・市区町村のすがた」を見ていきます。

f:id:predora005:20210106234154p:plain

[データ表示]と[地域ランキング]とがありますが、[データ表示]の方を選択します。

f:id:predora005:20210106233918p:plain

すると次の画面が表示されるので、地域選択、表示項目選択の順に行っていきます。

f:id:predora005:20210106233923p:plain

地域区分は「都道府県」とし、北海道と東方地方の県を選択しました。

f:id:predora005:20210106233930p:plain

表示項目選択では、年齢3区分の人口を選択しました。その中から、各区分の総人口に占める割合を選択しました。

f:id:predora005:20210106233938p:plain

北海道・東北地方の、0〜14歳, 15〜64歳, 65歳以上の人口割合が表示されました。この中では秋田県がもっとも少子高齢化が進んでいます。

f:id:predora005:20210106233947p:plain

グラフ表示すると視覚的に表示できます。

f:id:predora005:20210106233953p:plain

グラフ表示は設定を以下のように変更しています。

f:id:predora005:20210106235024p:plain

データ表示については以上です。今度は「地域ランキング」を見てみます。

f:id:predora005:20210106235622p:plain

地域ランキングでは、公共スポーツ施設のランキングを確認しました。

f:id:predora005:20210106235628p:plain

意外なことに北海道が1位、東京都が2位、長野県が3位でした。人口の影響を受けてはいますが、それだけでは無いようです。

f:id:predora005:20210106235634p:plain

終わりに

e-Statの使い方を一通り確認しました。ここで紹介した統計データ以外にも、膨大なデータがe-Statには登録されています。

APIによるデータ取得も可能なので、様々なことに応用できそうです。

*1:200 DegreesによるPixabayからの画像