産業構造・職業構成の変化

概要

国勢調査から,産業構造(就業者の産業別割合)および就業者の職業構成の変化をグラフ化する。

日本標準産業分類の変更に伴い,国勢調査の産業分類が2000年以前と2005年以降で異なるため,データは完全には接続できない。ただし,1995年と2000年については新旧両方の分類のデータが公開されている。ここでは,新旧の分類を統合せず,それぞれについてグラフを作成する。

また,2009年の日本標準職業分類の変更に伴い,データはその前後で完全には接続できない。ただし,1995~2005年については新旧両方の分類のデータが公開されている。ここでは,新旧の分類を統合せず,それぞれについてグラフを作成する。

コードと実行結果

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(estatapi)
このサービスは、政府統計総合窓口(e-Stat)のAPI機能を使用していますが、サービスの内容は国によって保証されたものではありません。
library(RColorBrewer)

# e-statのappIDが必要
# 利用申請(無料)をすればだれでも入手できる

# appID = "入手したappIDをここに設定(行頭の#を外す)"

### 産業構造

# 国勢調査・時系列データ・人口の労働力状態,就業者の産業・職業 表番号4 

# 産業(大分類),男女別15歳以上就業者数
# -全国(平成7年~平成27年)※平成19年11月改訂後
industry_latest <-
  estat_getStatsData(appId = appID,
                     statsDataId = "0003410395",
                     cdTab = "2020_44",     # 表章項目 == "人口構成比 [産業別]"
                     cdCat01From = 120, # 産業分類
                     cdCat01To   = 330, #  総数,小計,再掲などを除く
                     cdCat02     = 100  # 男女_時系列 == "総数"
  ) %>%
  filter(substring(time_code, 9, 10) == "00") %>% 
  mutate(year = as.numeric(time_code) / 1000000,
         industry = `産業大分類2015`) %>%
  select(year, industry, value)
Fetching record 1-160... (total: 160 records)
#【参考】産業(旧大分類),男女別15歳以上就業者数及び産業別割合
# -全国(大正9年~平成12年)※平成14年3月改訂前
industry_old <- 
  estat_getStatsData(appId = appID,
                     statsDataId = "0003410396",
                     cdTab = "2020_44",      # 表章項目 == "人口構成比 [産業別]"
                     cdCat01From = 120, # 産業分類
                     cdCat01Tob  = 330, #  総数を除く
                     cdCat02     = 100  # 男女_時系列 == "総数"
  ) %>% 
  filter(cat01_code != 150 & cat01_code != 190) %>%  # 小計(第n次産業)を除く
  mutate(year = as.numeric(time_code) / 1000000,
         industry = `産業大分類(平成14年3月改訂前)`) %>%
  select(year, industry, value)
Fetching record 1-224... (total: 224 records)
#### グラフ

clr <- c(brewer.pal(11, "Paired"), brewer.pal(8, "YlOrBr"), "#FFFFFF")

## 1995年以降(新産業分類)

industry_latest %>%
  ggplot(aes(x = year, y = value, fill = industry)) +
  geom_bar(stat = "identity", color = "black") +
  scale_fill_manual(name = "産業", values = clr) +
  labs(x = "年", y = "")

## 2000年以前(旧産業分類)

industry_old %>%
  ggplot(aes(x = year, y = value, fill = industry)) +
  geom_bar(stat = "identity", color = "black") +
  scale_fill_manual(name = "産業", values = clr) +
  labs(x = "年", y = "")
Warning: Removed 2 rows containing missing values or values outside the scale range
(`geom_bar()`).

### 職業構造

# 国勢調査・時系列データ・人口の労働力状態,就業者の産業・職業 表番号7

# 職業(大分類),男女別15歳以上就業者数-全国(平成7年~平成27年)
occupation_latest <-
  estat_getStatsData(appId = appID,
                     statsDataId = "0003410408",
                     cdTab = "2020_45",      # 表章項目 == "人口構成比 [職業別]"
                     cdCat01From = 110, # 職業分類
                     cdCat01To   = 220, # 
                     cdCat02     = 100  # 男女_時系列 == "総数")
  ) %>% 
  filter(substring(time_code, 9, 10) == "00") %>% 
  mutate(year = as.numeric(time_code) / 1000000,
         occupation = `職業大分類2015`) %>%
  select(year, occupation, value)
Fetching record 1-96... (total: 96 records)
# 【参考】職業(旧大分類),男女別15歳以上就業者数及び産業別割合
# -全国(昭和25年~平成17年)※平成21年12月改訂前
occupation_old <- 
  estat_getStatsData(appId = appID, 
                     statsDataId = "0003410409",
                     cdTab = "2020_45",      # 表章項目 == "割合"
                     cdCat01From = 110, # 職業分類
                     cdCat01To   = 200, # 
                     cdCat02     = 100  # 男女_時系列 == "総数")#%>%)%>%
  ) %>%
  mutate(year = as.numeric(time_code) / 1000000,
         occupation = `職業大分類(旧大分類H21改定前)`) %>%
  select(year, occupation, value)
Fetching record 1-120... (total: 120 records)
#### グラフ

clr <- c(brewer.pal(7, "Accent"), brewer.pal(4, "YlOrRd"), "#FFFFFF")

## 1995年以降(新職業分類)

occupation_latest %>%
  ggplot(aes(x = year, y = value, fill = occupation)) +
  geom_bar(stat = "identity", color = "black") +
  scale_fill_manual(name = "職業", values = clr) +
  labs(x = "年", y = "") 

## 1990年以前(旧職業分類)

occupation_old %>%
  ggplot(aes(x = year, y = value, fill = occupation)) +
  geom_bar(stat = "identity", color = "black") +
  scale_fill_manual(name = "職業", values = clr) +
  labs(x = "年", y = "")