国のオープンデータ(e-Stat)を使って、pythonでデータ分析してみる。男性比率が高い都道府県別ランキングを出力してみた。茨城県・栃木・埼玉と北関東が多い。マイルドヤンキー文化圏?
参考URL
https://qiita.com/Sei123/items/72a6977c363a00b3241a
政府統計の総合窓口(e-Stat 統計で見る日本)のAPIが、email登録だけで使える。
https://www.e-stat.go.jp/api/
アプリケーションIDを発行してもらう。URLはhttp://localhostはダメって書いてあるけど通った!
postmanを使って、APIを叩いてみる。最低限必要なのは、アプリケーションIDと政府統計コードの二種類のみ
0003448231 = 人口推計
http://api.e-stat.go.jp/rest/3.0/app/json/getStatsData?&statsDataId=0003448231&appId=
API仕様
https://www.e-stat.go.jp/api/api-info/e-stat-manual#api_2_3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import requests import pandas as pd APP_ID = "自分のアプリID" API_URL = "http://api.e-stat.go.jp/rest/3.0/app/json/getStatsData" params = { "appId": APP_ID, "statsDataId": "0003448231", # 人口推計 # "cdArea": "01000,02000", # 都道府県コード "cdAreaFrom": "01000", # 都道府県コード(開始) "cdAreaTo": "47000", # 都道府県コード(終了) "cdCat01": "004", # 人口性比 "cdCat02": "001", # 総人口 "cdTime": "1701", # 2022年10月1日現在 "lang": "J" # 日本語を指定 } response = requests.get(API_URL, params=params) data = response.json() # 統計データからデータ部取得 values = data['GET_STATS_DATA']['STATISTICAL_DATA']['DATA_INF']['VALUE'] # JSONからDataFrameを作成 df = pd.DataFrame(values) # メタ情報取得(統計データの文字列がコードになっている。その対応表がメタ情報) meta_info = data['GET_STATS_DATA']['STATISTICAL_DATA']['CLASS_INF']['CLASS_OBJ'] # 統計データのカテゴリ要素をID(数字の羅列)から、意味のある名称に変更する for class_obj in meta_info: # メタ情報の「@id」の先頭に'@'を付与した文字列が、統計データの列名と対応している column_name = '@' + class_obj['@id'] # 統計データの列名を「@code」から「@name」に置換するディクショナリを作成 id_to_name_dict = {} if isinstance(class_obj['CLASS'], list): for obj in class_obj['CLASS']: id_to_name_dict[obj['@code']] = obj['@name'] else: id_to_name_dict[class_obj['CLASS']['@code']] = class_obj['CLASS']['@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 df.columns: if col in col_replace_dict: new_columns.append(col_replace_dict[col]) else: new_columns.append(col) df.columns = new_columns print(df.sort_values('値', ascending=False)) |
男性比率が高い都道府県は
茨城県・栃木・埼玉と北関東が多い。マイルドヤンキー文化圏?
男女別・性比 人口 全国・都道府県 時間軸(年月日現在) 単位 値
7 人口性比 総人口 茨城県 2022年10月1日現在 女性=100 99.7
8 人口性比 総人口 栃木県 2022年10月1日現在 女性=100 99.6
22 人口性比 総人口 愛知県 2022年10月1日現在 女性=100 99.3
10 人口性比 総人口 埼玉県 2022年10月1日現在 女性=100 98.6
13 人口性比 総人口 神奈川県 2022年10月1日現在 女性=100 98.4
11 人口性比 総人口 千葉県 2022年10月1日現在 女性=100 98.2
9 人口性比 総人口 群馬県 2022年10月1日現在 女性=100 98.0
6 人口性比 総人口 福島県 2022年10月1日現在 女性=100 97.6
24 人口性比 総人口 滋賀県 2022年10月1日現在 女性=100 97.4
21 人口性比 総人口 静岡県 2022年10月1日現在 女性=100 97.3
46 人口性比 総人口 沖縄県 2022年10月1日現在 女性=100 96.9
18 人口性比 総人口 山梨県 2022年10月1日現在 女性=100 96.6
12 人口性比 総人口 東京都 2022年10月1日現在 女性=100 96.4
19 人口性比 総人口 長野県 2022年10月1日現在 女性=100 95.7
17 人口性比 総人口 福井県 2022年10月1日現在 女性=100 95.6
23 人口性比 総人口 三重県 2022年10月1日現在 女性=100 95.6
3 人口性比 総人口 宮城県 2022年10月1日現在 女性=100 95.2
15 人口性比 総人口 富山県 2022年10月1日現在 女性=100 94.8
14 人口性比 総人口 新潟県 2022年10月1日現在 女性=100 94.5
16 人口性比 総人口 石川県 2022年10月1日現在 女性=100 94.4
20 人口性比 総人口 岐阜県 2022年10月1日現在 女性=100 94.4
5 人口性比 総人口 山形県 2022年10月1日現在 女性=100 94.1
33 人口性比 総人口 広島県 2022年10月1日現在 女性=100 94.1
31 人口性比 総人口 島根県 2022年10月1日現在 女性=100 93.8
36 人口性比 総人口 香川県 2022年10月1日現在 女性=100 93.5
2 人口性比 総人口 岩手県 2022年10月1日現在 女性=100 93.3
32 人口性比 総人口 岡山県 2022年10月1日現在 女性=100 92.7
30 人口性比 総人口 鳥取県 2022年10月1日現在 女性=100 91.7
26 人口性比 総人口 大阪府 2022年10月1日現在 女性=100 91.7
35 人口性比 総人口 徳島県 2022年10月1日現在 女性=100 91.5
25 人口性比 総人口 京都府 2022年10月1日現在 女性=100 91.3
34 人口性比 総人口 山口県 2022年10月1日現在 女性=100 90.6
43 人口性比 総人口 大分県 2022年10月1日現在 女性=100 90.6
27 人口性比 総人口 兵庫県 2022年10月1日現在 女性=100 90.5
37 人口性比 総人口 愛媛県 2022年10月1日現在 女性=100 90.4
40 人口性比 総人口 佐賀県 2022年10月1日現在 女性=100 90.3
42 人口性比 総人口 熊本県 2022年10月1日現在 女性=100 90.1
39 人口性比 総人口 福岡県 2022年10月1日現在 女性=100 90.0
38 人口性比 総人口 高知県 2022年10月1日現在 女性=100 89.7
45 人口性比 総人口 鹿児島県 2022年10月1日現在 女性=100 89.5
4 人口性比 総人口 秋田県 2022年10月1日現在 女性=100 89.5
44 人口性比 総人口 宮崎県 2022年10月1日現在 女性=100 89.5
0 人口性比 総人口 北海道 2022年10月1日現在 女性=100 89.4
1 人口性比 総人口 青森県 2022年10月1日現在 女性=100 89.2
29 人口性比 総人口 和歌山県 2022年10月1日現在 女性=100 89.2
41 人口性比 総人口 長崎県 2022年10月1日現在 女性=100 88.9
28 人口性比 総人口 奈良県 2022年10月1日現在 女性=100 88.9