都道府県別の2つの離婚率(=離婚数÷婚姻数、人口千人あたり)で整理 総務省統計局データをPythonで加工 e-Stat with Python(6)

 

 婚姻と離婚は当然ながら関係性があると思います。「両者の関係に県民性があるのか?」という点についてe-StatDataを活用して垣間見てみようと考えました。

 CommonのFunctionはこれまでどおりですので、こちらをご覧ください。→https://shikuuk.blogspot.com/2023/08/e-stat-with-python4-python.html

 まず、以下のコードでe-StatからMarriage関係のData(statsDataId = "0003411835")をGetします。

################################
# e-StatAPIからRequiredDataをGet
# 婚姻数・婚姻率データをget
################################

# e-StatAPIのDataBaseが格納されているURL
API_URL = "http://api.e-stat.go.jp/rest/3.0/app/json/getStatsData"

# e-StatDataID(婚姻数・婚姻率DataのID=0003411835)
statsDataId = "0003411835"

# 対象期間
cdTime = "2021000000"

# Processing Pandas data and change the column name
column_rename = {
    '@tab': 'DataType',
    '@area': '都道府県コード',
    '@time': '対象年',
    '@unit': '単位',
    '$': '婚姻数'
}

tree = "['GET_STATS_DATA']['STATISTICAL_DATA']['DATA_INF']['VALUE']"

df = fn_get_estat_data(APP_ID, API_URL, statsDataId, cdTime, column_rename, tree)

df.head()

##########################################
# 都道府県コードを都道府県の名称に置き換え
##########################################

#Dataの構造が格納されているMetaInfoを取得
API_URL = "http://api.e-stat.go.jp/rest/3.0/app/json/getMetaInfo?"

params = {
    "appId": APP_ID,
    "statsDataId": statsDataId,
    "limit": 2,
    "lang": "J"  # 日本語を指定
}

response = requests.get(API_URL, params=params)
data = response.json()
data

# META_INFOの中から都道府県コードと都道府県名を対比している箇所を取得
values = data['GET_META_INFO']['METADATA_INF']['CLASS_INF']['CLASS_OBJ']

for dictionary in values:
    if dictionary['@id'] == 'area':
        pref_list = dictionary['CLASS']

prefectures_list = {}
for pref_code in pref_list:
    prefectures_list[pref_code['@code']] = pref_code['@name']

# 先ほど作成した辞書を使用して、都道府県コードに基づき、
# 都道府県名の列を追加するための関数を定義
def replace_pref_name(pref_code):
    return prefectures_list.get(pref_code, None)

# 都道府県コード列を都道府県名列に置き換え
df["都道府県"] = df["都道府県コード"].apply(replace_pref_name)

print(df) # Confirm the number of DataCode that we required


# Select the requirede data from DataFrame'df'
# Ex. 'total of meil and femeil : code=000' and 'total population(Janapese + foreigner) : code=001'
df_marriage = df[df['DataType']=='10270']

df_marriage.head()

 Outputは省略して、都道府県別のDevorce(離婚)関係のData(statsDataId = "0003411861")をGetします。

################################
# e-StatAPIからRequiredDataをGet
# 離婚数・離婚率データをget
################################

# e-StatAPIのDataBaseが格納されているURL
API_URL = "http://api.e-stat.go.jp/rest/3.0/app/json/getStatsData"

# e-StatDataID(離婚数・離婚率DataのID=0003411835)
statsDataId = "0003411861"

# 対象期間
cdTime = "2021000000"

# Processing Pandas data and change the column name
column_rename = {
    '@tab': 'DataType',
    '@area': '都道府県コード',
    '@time': '対象年',
    '@unit': '単位',
    '$': '離婚'
}

tree = "['GET_STATS_DATA']['STATISTICAL_DATA']['DATA_INF']['VALUE']"

df = fn_get_estat_data(APP_ID, API_URL, statsDataId, cdTime, column_rename, tree)

df.head()

##########################################
# 都道府県コードを都道府県の名称に置き換え
##########################################

#Dataの構造が格納されているMetaInfoを取得
API_URL = "http://api.e-stat.go.jp/rest/3.0/app/json/getMetaInfo?"

params = {
    "appId": APP_ID,
    "statsDataId": statsDataId,
    "limit": 2,
    "lang": "J"  # 日本語を指定
}

response = requests.get(API_URL, params=params)
data = response.json()
data

# META_INFOの中から都道府県コードと都道府県名を対比している箇所を取得
values = data['GET_META_INFO']['METADATA_INF']['CLASS_INF']['CLASS_OBJ']

for dictionary in values:
    if dictionary['@id'] == 'area':
        pref_list = dictionary['CLASS']

prefectures_list = {}
for pref_code in pref_list:
    prefectures_list[pref_code['@code']] = pref_code['@name']

# 先ほど作成した辞書を使用して、都道府県コードに基づき、
# 都道府県名の列を追加するための関数を定義
def replace_pref_name(pref_code):
    return prefectures_list.get(pref_code, None)

# 都道府県コード列を都道府県名列に置き換え
df["都道府県"] = df["都道府県コード"].apply(replace_pref_name)

#print(df) # Confirm the number of DataCode that we required

# Select the requirede data from DataFrame'df'
# Ex. 'total of meil and femeil : code=000'
# and 'total population(Janapese + foreigner) : code=001'
df_devorce = df[df['DataType']=='10310']

# Select the requirede data from DataFrame'df'
# Ex. 'total of meil and femeil : code=000'
# and 'total population(Janapese + foreigner) : code=001'
df_devorce_rate = df[df['DataType']=='10320']

df_devorce.tail()

 At this time, I omit output from above code.

 Next, I get Japanese prefectural map as gdf_jp_pref and gdf_jp_prefに婚姻数や離婚数、人口千人当たりの離婚率を追加し、さらに、gdf_jp_prefの中で離婚数÷婚姻数を計算して、それぞれを図化します。

 この2つの図の色合いの差は驚くべき結果かなぁと思います。
 離婚数÷婚姻数を表す左の図は北国と南国が明確に高い傾向を示しているように感じます。
 人口千人あたりの婚姻数は以前分析したとおり、沖縄県と大都市圏が多いという傾向を下敷きにして、この離婚数÷婚姻数に関する分布を考えたときに何が見えてくるのでしょうか?
 北・南国(沖縄県除く)はもともと婚姻数が少ないにもかかわらず、相対的に離婚数が多くなっている、すなわち、婚姻の形態を継続しているカップルが相対的に少なくなっていると言えるような気がします。
 沖縄県は婚姻数がダントツ多いのですが、離婚数もそれなりに多く、離婚数÷婚姻率も人口千人あたりの離婚率も大きくなっています。
 東京都は人口千人当たりの婚姻率が高く、かつ、離婚数÷婚姻数は非常に低いので、婚姻の形態を継続しているカップルは相対的に多いのかもしれません。
 愛知県、滋賀県、北陸地方の離婚数÷婚姻数の低さや、青森県の離婚数÷婚姻数の高さなどは特筆すべき事象ではないかと感じます。
 これらは2021年度のみのe-StatDataから分析したものですので、「県民性」を論ずるためには過去のデータを確認する必要はあると思います。






コメント