はじめに
最近、データ分析の勉強を始めました。これまではSIGNATEなどのプラットフォームで練習問題を解いていたのですが、ふと「用意されたお題だけではなく、もっと身近な本物のデータで分析してみたい」と思うようになりました。
そこで、日本の公的統計の宝庫であるe-Statのデータに挑戦してみることに。
せっかくなら、地元である「愛知県」のデータを深堀りして、世の中のイメージと実際の数字がどれくらい一致しているのか確かめてみたかったのが、今回の分析のきっかけです。
今回やったこと
- データの読み込みと整理:1万行を超えるデータから必要な項目を抽出し、計算ができるように型変換を行いました
- 人口ランキングの作成:都道府県ごとの人口を算出し、上位・下位ランキングを作成しました
- 円グラフによる可視化:日本全体の人口における上位都道府県の占める割合を可視化しました
- 男女比の分析:都道府県ごとの男女比を計算し、人口構成の違いを比較しました
- 地元の深掘り:愛知県と東京都にフォーカスを当て、全国平均との違いを分析しました
実行環境
- OS:Windows 11
- Editor:Cursor(2.5.25)
- Pthon:3.13.7
1. CSVファイルをダウンロード
まず初めに政府統計の総合窓口(e-Stat)から国勢調査のデータ、今回は令和2年度の都道府県・市町村の男女別人口のデータをダウンロードしました。
出典:政府統計の総合窓口(e-Stat)
2. データの読み込み
ダウンロードしたCSVファイルはPandasで読み込みました。
e-Statのデータはヘッダー部分が長いので'skiprows'で行を調整するのがポイントです。
3. 分析用のDataFrameを作成
今回は「都道府県別の分析」をメインに進めていきたかったので、必要な情報だけをピックアップして新しいDataFrameを作成しました。
あらかじめ抽出したい列名を'use_cols'というリストにまとめておくことで、後から見返したときにも、どの項目を使用しているのか人目で分かるように工夫しています。
4. 文字列型から数値型への変換
今のままでも表として見ることはできますが、抽出したデータを確認してみると、「総数」「男」「女」の列が計算できない文字列型(object)になっていることが分かります。この後の分析でグラフを作成したり、計算したりするために、Pythonで計算ができる数値型に変換する作業を行います。

数値の中にカンマ(,)などが混ざっているとうまく変換できないので、それらを取り除く作業も一緒に行いました。
''' 実行結果

最後に'df_use.dtypes'で型を確認して、数値型に変わっていれば変換成功です。
5. 行数の絞り込み
元データには市区町村などの細かいデータも含まれており、1万行以上あります。今回は都道府県別の分析を行うため、47都道府県のデータだけを抽出します。
地域コードが「000」で終わるものを探し、全国総数(00000)を除外することで、47都道府県のみのDataFrameを作成しました。
''' 実行結果

実行結果を確認してみると、無事47行(47都道府県分)に絞り込むことができました。これで、分析の準備は整いました!
6. データ分析開始
47都道府県のデータが揃ったので、いよいよ人口が多い順に並び替えて、ランキングを確認してみます。
その前に、元の列名(「全国、都道府県…」)が少し長くて扱いづらかったので、今後の作業がしやすいように「都道府県コード」「都道府県名」という名前に変更しました。

抽出したデータを「総数」の列で降順(大きい順)に並び替え、上位10位と下位10位を表示させてみます。
''' 実行結果

こうして実際にランキングにしてみると、改めて日本の人口の偏りを数字で実感することができました。
上位と下位の10位を見て、皆さんはどう感じましたか?自分の感覚と実際のデータを照らし合わせてみると、「おっ」と驚くような結果もあったのではないでしょうか。
7. 日本の人口に占める上位10都府県の割合
ランキングで上位と下位の差がかなりあったので、次は「上位10都府県だけで、日本全体のどれくらいの人口を占めているのか」を円グラフにして可視化してみました。

''' 実行結果

グラフにしてみると、たった10の都府県だけで日本全体の人口の半分以上を占めていることが一目で分かります。数字で見るよりも、人口の偏りがよりリアルに実感できました。
8. 日本の人口に占める東京都の割合
上位10都府県だけで人口の半分以上を占めていることが分かりましたが、その中でも「東京都」がどれだけの割合を占めているのか、さらに詳しく分けてみることにしました。
「東京都」「東京都を除いた上位9府県」「残り37県」の3つのグループで比較してみます。また、東京都の割合が目立つように、グラフから少し飛び出させる工夫(explode)も取り入れてみました。
''' 実行結果

東京都だけで日本の約1割以上を占めていることが円グラフで可視化できました。
「1都3県」や「三大都市圏」という言葉はよく耳にしますが、こうしてグラフにしてみると東京都への一極集中をより強く実感できました。
9. 都道府県別の男女比を比較してみる
これまでは「人口の多さ」に注目してきましたが、今度は、都道府県ごとに男女の割合に差があるのかを調べてみました。
今回は、女性100人に対する男性の人数を「男女比」として計算し、男性の割合が高い県と、逆に女性の割合が高い県をそれぞれ抽出してみます。
'''実行結果

計算してみて驚いたのが、男性の割合が高いTOP5でも、数値が全て100を下回っていたことです。
この数値は「女性100人に対する男性の人数」なので、100を切っているということは、どの県でも女性の数の方が多いということを意味します。
「日本全体では女性の方が多い」というのは耳にしたことがありますが、男性比率が高いイメージのある工業地帯を含めても、全ての県で女性の数が多いというのは、実際に分析してみて初めて知った事実でした。
10. 日本の人口に占める愛知県の割合
私の地元である「愛知県」に注目して分析してみます。先ほどの東京都と同じように、日本全体の人口の中で愛知県がどのくらいの割合を占めているのか可視化してみました。
''' 実行結果

グラフを見てみると、愛知県は日本全体の約6%を占めていることが分かりました。東京の約11%と比べると小さく見えますが、47都道府県でこれだけの割合を占めているのは、やはり大都市であることを実感します。
最後に、全国平均、東京都、愛知県の男女比の数値を比較してみました。
''' 実行結果

日本全国の平均は94.7に対し、東京は96.5、愛知は99.5という結果に。
どの地域も100を切っているので「女性の方が多い」という事実は変わりませんが、地域ごとに少しずつ差があることが分かります。
愛知県といえば、トヨタ自動車をはじめとする製造業が非常に盛んな地域です。こうした産業の力強さが、働く男性の多さにもつながり、この99.5という数値に反映されているのだと感じました。
おわりに
今回、初めてe-Statの公的統計データを使用して、Pythonのデータ分析に挑戦してみました。
最初は1万行を超えるデータを扱うことに不安もありましたが、Pandasを使用して一歩ずつ整理していくことで、自分の手で「日本の今の姿」を数字として描き出せたことが、大きな自信に繋がりました。
特に「男性が多いイメージの県でも、実は女性の方が多い」といった発見は、実際に自分で計算してみなければ気づけなかったリアルな学びでした。
今回の経験を活かして、違うデータセットを使用した分析にも挑戦していきたいと思います。
ここまで読んでいただき、本当にありがとうございました!









