はじめに
本記事では、Rを使って政府統計(e-Stat)からAPIを使って都道府県の人口データを取得して棒グラフ表示する。
前準備
API機能を使うには、e-Statでのユーザ登録が必要である。 以下のサイトでユーザ登録を行う。メールアドレスが必要。それ以外に名前や住所などは必要ない。
登録したらログイン後のマイページから「API機能(アプリケーションID発行)」に進んでアプリケーションIDを発行しよう。
名称、URLを適当に(testなどでも可)入力して「発行」を押せば下のappIdに数字とa〜fの組み合わせが表示される。 これがアプリケーションID(appId)になるのでコピーする。 このappIdは発行した人だけが使うものなので他の人には教えないように。
Rプログラム
options(crayon.enabled = FALSE) # 色
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.2 ✔ tibble 3.2.1
✔ lubridate 1.9.4 ✔ tidyr 1.3.1
✔ purrr 1.0.4
── 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
apikey = "9a95xxxxxxxxxxxxxxxxxxxxxxxxxxxxx1b24" # 前準備でコピーした自分のappId
url <- paste0("http://api.e-stat.go.jp/rest/3.0/app/getSimpleStatsData?appId=", apikey, "&lang=J&statsDataId=0003445078&metaGetFlg=N&cntGetFlg=N&explanationGetFlg=N&annotationGetFlg=N§ionHeaderFlg=1&replaceSpChars=0")
jinkou <- read_csv(url, skip = 27)
── Column specification ────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (7): tab_code, 表章事項, 男女, area_code, 全国,都道府県,市区町村(2000年市区町村含む), 時間軸(年次), unit
dbl (3): cat01_code, time_code, value
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Warning message:
One or more parsing issues, call `problems()` on your data frame for details, e.g.:
dat <- vroom(...)
problems(dat)
「全国,都道府県,市区町村(2000年市区町村含む)」というカラム名があるので注意。 今回は都道府県のみ抽出するのでrenameでカラム名を都道府県に変更する。
jinkou47 <- jinkou |>
filter(area_code != "00000") |> # 全国のデータを除く
filter(str_ends(area_code, "000")) |> # 都道府県のデータのみ抽出
rename(都道府県 = `全国,都道府県,市区町村(2000年市区町村含む)`) |>
print(n=Inf)
# A tibble: 141 × 10
tab_code 表章事項 cat01_code 男女 area_code 都道府県 time_code `時間軸(年次)` unit value
<dbl>
1 2020_01 人口 0 総数 01000 北海道 2020000000 2020年 人 5224614
2 2020_01 人口 0 総数 02000 青森県 2020000000 2020年 人 1237984
3 2020_01 人口 0 総数 03000 岩手県 2020000000 2020年 人 1210534
4 2020_01 人口 0 総数 04000 宮城県 2020000000 2020年 人 2301996
5 2020_01 人口 0 総数 05000 秋田県 2020000000 2020年 人 959502
6 2020_01 人口 0 総数 06000 山形県 2020000000 2020年 人 1068027
7 2020_01 人口 0 総数 07000 福島県 2020000000 2020年 人 1833152
8 2020_01 人口 0 総数 08000 茨城県 2020000000 2020年 人 2867009
9 2020_01 人口 0 総数 09000 栃木県 2020000000 2020年 人 1933146
10 2020_01 人口 0 総数 10000 群馬県 2020000000 2020年 人 1939110
11 2020_01 人口 0 総数 11000 埼玉県 2020000000 2020年 人 7344765
12 2020_01 人口 0 総数 12000 千葉県 2020000000 2020年 人 6284480
13 2020_01 人口 0 総数 13000 東京都 2020000000 2020年 人 14047594
14 2020_01 人口 0 総数 14000 神奈川県 2020000000 2020年 人 9237337
15 2020_01 人口 0 総数 15000 新潟県 2020000000 2020年 人 2201272
16 2020_01 人口 0 総数 16000 富山県 2020000000 2020年 人 1034814
17 2020_01 人口 0 総数 17000 石川県 2020000000 2020年 人 1132526
18 2020_01 人口 0 総数 18000 福井県 2020000000 2020年 人 766863
19 2020_01 人口 0 総数 19000 山梨県 2020000000 2020年 人 809974
20 2020_01 人口 0 総数 20000 長野県 2020000000 2020年 人 2048011
21 2020_01 人口 0 総数 21000 岐阜県 2020000000 2020年 人 1978742
22 2020_01 人口 0 総数 22000 静岡県 2020000000 2020年 人 3633202
23 2020_01 人口 0 総数 23000 愛知県 2020000000 2020年 人 7542415
24 2020_01 人口 0 総数 24000 三重県 2020000000 2020年 人 1770254
25 2020_01 人口 0 総数 25000 滋賀県 2020000000 2020年 人 1413610
26 2020_01 人口 0 総数 26000 京都府 2020000000 2020年 人 2578087
27 2020_01 人口 0 総数 27000 大阪府 2020000000 2020年 人 8837685
28 2020_01 人口 0 総数 28000 兵庫県 2020000000 2020年 人 5465002
29 2020_01 人口 0 総数 29000 奈良県 2020000000 2020年 人 1324473
30 2020_01 人口 0 総数 30000 和歌山県 2020000000 2020年 人 922584
31 2020_01 人口 0 総数 31000 鳥取県 2020000000 2020年 人 553407
32 2020_01 人口 0 総数 32000 島根県 2020000000 2020年 人 671126
33 2020_01 人口 0 総数 33000 岡山県 2020000000 2020年 人 1888432
34 2020_01 人口 0 総数 34000 広島県 2020000000 2020年 人 2799702
35 2020_01 人口 0 総数 35000 山口県 2020000000 2020年 人 1342059
36 2020_01 人口 0 総数 36000 徳島県 2020000000 2020年 人 719559
37 2020_01 人口 0 総数 37000 香川県 2020000000 2020年 人 950244
38 2020_01 人口 0 総数 38000 愛媛県 2020000000 2020年 人 1334841
39 2020_01 人口 0 総数 39000 高知県 2020000000 2020年 人 691527
40 2020_01 人口 0 総数 40000 福岡県 2020000000 2020年 人 5135214
41 2020_01 人口 0 総数 41000 佐賀県 2020000000 2020年 人 811442
42 2020_01 人口 0 総数 42000 長崎県 2020000000 2020年 人 1312317
43 2020_01 人口 0 総数 43000 熊本県 2020000000 2020年 人 1738301
44 2020_01 人口 0 総数 44000 大分県 2020000000 2020年 人 1123852
45 2020_01 人口 0 総数 45000 宮崎県 2020000000 2020年 人 1069576
46 2020_01 人口 0 総数 46000 鹿児島県 2020000000 2020年 人 1588256
47 2020_01 人口 0 総数 47000 沖縄県 2020000000 2020年 人 1467480
48 2020_01 人口 1 男 01000 北海道 2020000000 2020年 人 2465088
49 2020_01 人口 1 男 02000 青森県 2020000000 2020年 人 583402
50 2020_01 人口 1 男 03000 岩手県 2020000000 2020年 人 582952
51 2020_01 人口 1 男 04000 宮城県 2020000000 2020年 人 1122598
52 2020_01 人口 1 男 05000 秋田県 2020000000 2020年 人 452439
53 2020_01 人口 1 男 06000 山形県 2020000000 2020年 人 516438
54 2020_01 人口 1 男 07000 福島県 2020000000 2020年 人 903864
55 2020_01 人口 1 男 08000 茨城県 2020000000 2020年 人 1430976
56 2020_01 人口 1 男 09000 栃木県 2020000000 2020年 人 964930
57 2020_01 人口 1 男 10000 群馬県 2020000000 2020年 人 959411
58 2020_01 人口 1 男 11000 埼玉県 2020000000 2020年 人 3652169
59 2020_01 人口 1 男 12000 千葉県 2020000000 2020年 人 3117987
60 2020_01 人口 1 男 13000 東京都 2020000000 2020年 人 6898388
61 2020_01 人口 1 男 14000 神奈川県 2020000000 2020年 人 4588268
62 2020_01 人口 1 男 15000 新潟県 2020000000 2020年 人 1068670
63 2020_01 人口 1 男 16000 富山県 2020000000 2020年 人 502637
64 2020_01 人口 1 男 17000 石川県 2020000000 2020年 人 549771
65 2020_01 人口 1 男 18000 福井県 2020000000 2020年 人 373973
66 2020_01 人口 1 男 19000 山梨県 2020000000 2020年 人 397309
67 2020_01 人口 1 男 20000 長野県 2020000000 2020年 人 1000389
68 2020_01 人口 1 男 21000 岐阜県 2020000000 2020年 人 960436
69 2020_01 人口 1 男 22000 静岡県 2020000000 2020年 人 1791118
70 2020_01 人口 1 男 23000 愛知県 2020000000 2020年 人 3761502
71 2020_01 人口 1 男 24000 三重県 2020000000 2020年 人 864475
72 2020_01 人口 1 男 25000 滋賀県 2020000000 2020年 人 697429
73 2020_01 人口 1 男 26000 京都府 2020000000 2020年 人 1231468
74 2020_01 人口 1 男 27000 大阪府 2020000000 2020年 人 4235956
75 2020_01 人口 1 男 28000 兵庫県 2020000000 2020年 人 2599756
76 2020_01 人口 1 男 29000 奈良県 2020000000 2020年 人 623926
77 2020_01 人口 1 男 30000 和歌山県 2020000000 2020年 人 435051
78 2020_01 人口 1 男 31000 鳥取県 2020000000 2020年 人 264432
79 2020_01 人口 1 男 32000 島根県 2020000000 2020年 人 324291
80 2020_01 人口 1 男 33000 岡山県 2020000000 2020年 人 908045
81 2020_01 人口 1 男 34000 広島県 2020000000 2020年 人 1357156
82 2020_01 人口 1 男 35000 山口県 2020000000 2020年 人 636736
83 2020_01 人口 1 男 36000 徳島県 2020000000 2020年 人 343265
84 2020_01 人口 1 男 37000 香川県 2020000000 2020年 人 459197
85 2020_01 人口 1 男 38000 愛媛県 2020000000 2020年 人 633062
86 2020_01 人口 1 男 39000 高知県 2020000000 2020年 人 326531
87 2020_01 人口 1 男 40000 福岡県 2020000000 2020年 人 2430951
88 2020_01 人口 1 男 41000 佐賀県 2020000000 2020年 人 384451
89 2020_01 人口 1 男 42000 長崎県 2020000000 2020年 人 616912
90 2020_01 人口 1 男 43000 熊本県 2020000000 2020年 人 822481
91 2020_01 人口 1 男 44000 大分県 2020000000 2020年 人 533414
92 2020_01 人口 1 男 45000 宮崎県 2020000000 2020年 人 504763
93 2020_01 人口 1 男 46000 鹿児島県 2020000000 2020年 人 748306
94 2020_01 人口 1 男 47000 沖縄県 2020000000 2020年 人 722812
95 2020_01 人口 2 女 01000 北海道 2020000000 2020年 人 2759526
96 2020_01 人口 2 女 02000 青森県 2020000000 2020年 人 654582
97 2020_01 人口 2 女 03000 岩手県 2020000000 2020年 人 627582
98 2020_01 人口 2 女 04000 宮城県 2020000000 2020年 人 1179398
99 2020_01 人口 2 女 05000 秋田県 2020000000 2020年 人 507063
100 2020_01 人口 2 女 06000 山形県 2020000000 2020年 人 551589
101 2020_01 人口 2 女 07000 福島県 2020000000 2020年 人 929288
102 2020_01 人口 2 女 08000 茨城県 2020000000 2020年 人 1436033
103 2020_01 人口 2 女 09000 栃木県 2020000000 2020年 人 968216
104 2020_01 人口 2 女 10000 群馬県 2020000000 2020年 人 979699
105 2020_01 人口 2 女 11000 埼玉県 2020000000 2020年 人 3692596
106 2020_01 人口 2 女 12000 千葉県 2020000000 2020年 人 3166493
107 2020_01 人口 2 女 13000 東京都 2020000000 2020年 人 7149206
108 2020_01 人口 2 女 14000 神奈川県 2020000000 2020年 人 4649069
109 2020_01 人口 2 女 15000 新潟県 2020000000 2020年 人 1132602
110 2020_01 人口 2 女 16000 富山県 2020000000 2020年 人 532177
111 2020_01 人口 2 女 17000 石川県 2020000000 2020年 人 582755
112 2020_01 人口 2 女 18000 福井県 2020000000 2020年 人 392890
113 2020_01 人口 2 女 19000 山梨県 2020000000 2020年 人 412665
114 2020_01 人口 2 女 20000 長野県 2020000000 2020年 人 1047622
115 2020_01 人口 2 女 21000 岐阜県 2020000000 2020年 人 1018306
116 2020_01 人口 2 女 22000 静岡県 2020000000 2020年 人 1842084
117 2020_01 人口 2 女 23000 愛知県 2020000000 2020年 人 3780913
118 2020_01 人口 2 女 24000 三重県 2020000000 2020年 人 905779
119 2020_01 人口 2 女 25000 滋賀県 2020000000 2020年 人 716181
120 2020_01 人口 2 女 26000 京都府 2020000000 2020年 人 1346619
121 2020_01 人口 2 女 27000 大阪府 2020000000 2020年 人 4601729
122 2020_01 人口 2 女 28000 兵庫県 2020000000 2020年 人 2865246
123 2020_01 人口 2 女 29000 奈良県 2020000000 2020年 人 700547
124 2020_01 人口 2 女 30000 和歌山県 2020000000 2020年 人 487533
125 2020_01 人口 2 女 31000 鳥取県 2020000000 2020年 人 288975
126 2020_01 人口 2 女 32000 島根県 2020000000 2020年 人 346835
127 2020_01 人口 2 女 33000 岡山県 2020000000 2020年 人 980387
128 2020_01 人口 2 女 34000 広島県 2020000000 2020年 人 1442546
129 2020_01 人口 2 女 35000 山口県 2020000000 2020年 人 705323
130 2020_01 人口 2 女 36000 徳島県 2020000000 2020年 人 376294
131 2020_01 人口 2 女 37000 香川県 2020000000 2020年 人 491047
132 2020_01 人口 2 女 38000 愛媛県 2020000000 2020年 人 701779
133 2020_01 人口 2 女 39000 高知県 2020000000 2020年 人 364996
134 2020_01 人口 2 女 40000 福岡県 2020000000 2020年 人 2704263
135 2020_01 人口 2 女 41000 佐賀県 2020000000 2020年 人 426991
136 2020_01 人口 2 女 42000 長崎県 2020000000 2020年 人 695405
137 2020_01 人口 2 女 43000 熊本県 2020000000 2020年 人 915820
138 2020_01 人口 2 女 44000 大分県 2020000000 2020年 人 590438
139 2020_01 人口 2 女 45000 宮崎県 2020000000 2020年 人 564813
140 2020_01 人口 2 女 46000 鹿児島県 2020000000 2020年 人 839950
141 2020_01 人口 2 女 47000 沖縄県 2020000000 2020年 人 744668
今回は総数のデータのみ使うことにする。
jinkou47 |>
filter(男女 == "総数") |>
ggplot(aes(y = value, x = reorder(都道府県, value))) + # valueによる降順
geom_bar(stat = "identity") + # valueの値を棒グラフの長さとする
coord_flip() # 横の棒グラフ
完成。
参考
政府統計の総合窓口(e-Stat)のAPI 仕様 3.0版