1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

e-Statの活用例①

Posted at

e-Statのデータを分析

今回の目標:都道府県の人口データから平均よりも多い地域を抽出する

実行環境

Google Colaboratory


使うデータ

e-Statからダウンロードした

『国勢調査 令和2年国勢調査 人口等基本集計 (主な内容:男女・年齢・配偶関係,世帯の構成,住居の状態,母子・父子世帯,国籍など)』

ダウンロードの手順

スクリーンショット 2025-01-04 164853.png
e-Statのホームページに行き、「分野」をクリック

スクリーンショット 2025-01-04 165044.png

スクリーンショット 2025-01-04 165241.png

スクリーンショット 2025-01-04 165356.png

スクリーンショット 2025-01-04 165550.png

スクリーンショット 2025-01-04 165727.png

スクリーンショット 2025-01-04 165902.png
このように設定し、他はそのままにしてダウンロード

準備
Google Driveのマイドライブに「e-Stat」というフォルダを作成。
e-Statからダウンロードしたcsvデータを作成したフォルダにアップロード。
右クリックを押してGoogle Colaboratoryファイルを作成。

※以降のコードはGoogle Colaboratoryファイルにコードセルの挿入し、そのセルに書き込んでください。

sample.py
# Google Driveと接続を行う。これを行うことで、Driveにあるデータにアクセスできるようになる。
# 下記セルを実行すると、Googleアカウントのログインを求められるのでログイン。
from google.colab import drive
drive.mount('/content/drive')
sample.py
# 作業フォルダへの移動。
# 人によって作業場所がことなるので、その場合作業場所を変更してください。
import os
os.chdir('/content/drive/MyDrive/e-Stat') #ここを変更。

分析の前に用意したデータを加工します。

sample.py
#csvファイルの読み込み
#csvファイルの名前は必要に応じて自分のフォルダにある名前に修正してください。
import pandas as pd
population = pd.read_csv('FEH_00200521_250104143601.csv')
population.head()

結果
スクリーンショット 2025-01-05 111720.png

実はこのデータは様々な区分で集計した人口をまとめているため、分析がしづらいです。今回は都道府県別の人口データを扱うことにし、抽出していきます。

sample.py
area = population['Unnamed: 1'].str.endswith(('','','',''))
zenkoku = population[area]
zenkoku.head()

結果
スクリーンショット 2025-01-05 112611.png
文字列が「都道府県」のどれかで終了する行を抽出する命令を実行しました。
変数areaに「都道府県」のどれかで終了するかどうかという情報が各行について記録されています。

分析において都道府県名、総人口そして男女別の人口があれば十分なため、さらに加工します。

sample.py
#areaが都道府県,sumが総人口,manが男性人口,womanが女性人口
zenkoku_pop = pd.DataFrame(columns=['area','sum','man','woman'])
zenkoku_pop['area'] = zenkoku['Unnamed: 1']
zenkoku_pop['sum'] = zenkoku['人口【人】']
zenkoku_pop['man'] = zenkoku['人口【人】.1']
zenkoku_pop['woman'] = zenkoku['人口【人】.2']
zenkoku_pop.head()

スクリーンショット 2025-01-05 113423.png
列名が分かりにくかったため修正しました。次が最後のデータ加工です。

sample.py
zenkoku_pop['sum'] = zenkoku_pop['sum'].str.replace(',', '')
zenkoku_pop['sum'] = pd.to_numeric(zenkoku_pop['sum'], errors='coerce')
zenkoku_pop['man'] = zenkoku_pop['man'].str.replace(',', '')
zenkoku_pop['man'] = pd.to_numeric(zenkoku_pop['man'], errors='coerce')
zenkoku_pop['woman'] = zenkoku_pop['woman'].str.replace(',', '')
zenkoku_pop['woman'] = pd.to_numeric(zenkoku_pop['woman'], errors='coerce')
zenkoku_pop.head()

結果
スクリーンショット 2025-01-05 114103.png
e-Statからダウンロードしたデータはオブジェクト型であるため、数値型に変換する必要があります。その際カンマが邪魔になるため、それを消す操作も一緒に行います。
分析
今回の目標は「都道府県の人口データから平均よりも多い地域を抽出する」ことであるため

  • 平均値を求める
  • 各行について平均値と比較する
    といった操作が必要です。
sample.py
mean_sum = zenkoku_pop['sum'].mean()
result = zenkoku_pop[zenkoku_pop['sum'] > mean_sum]
print(result)

結果
スクリーンショット 2025-01-05 115237.png
抽出された地域を見ると、やはり都市圏にある都道府県が平均値よりも人口が多いことがわかります。

今回の目標はとりあえず達成できました。男性人口や女性人口でも同じように分析することができます。ぜひやってみてください!

サンプルコードについて不備やより良い書き方を知っている方はコメントしていただけると助かります!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?