「Python × 公開データ分析 30選 — 日本の年収・睡眠時間・物価・実データで答える30のレシピ」(森川 陽介 著)のサンプルコード集です。
本書の全 30 レシピで使う Python コードを、そのまま動かせる形で収録しています。日本や世界の公開データ(気象庁・e-Stat・World Bank・World Happiness Report・NPB・厚生労働省など)を扱い、問い → データ取得 → 前処理 → 分析 → 可視化 → 結論の流れで完結します。
各章のディレクトリ(chapters/chNN/)に、その章のレシピのコードと分析結果が入っています。
- Recipe 01 桜の開花日は早まっているか
- Recipe 02 台風の上陸数は増えているか
- Recipe 03 東京の夏は暑くなっているか
- Recipe 04 ゲリラ豪雨は増えているか
- Recipe 05 平均年収は30年上がっていないか
- Recipe 06 日本の労働時間は世界何位か
- Recipe 07 IT業界の平均年収は本当に高いか
- Recipe 08 ビッグマック指数で購買力を比較する
- Recipe 09 都道府県別の物価差はどのくらいか
- Recipe 10 円安で日本の輸出は増えたか
- Recipe 11 人口ピラミッドの変化を可視化する
- Recipe 12 少子化と婚姻率、どっちが原因か
- Recipe 13 出生率と何が相関するか
- Recipe 14 消滅可能性都市を自分で特定する
- Recipe 15 日本人の睡眠時間は本当に短いか
- Recipe 16 平均寿命と何が相関するか
- Recipe 17 コンビニの数と人口の関係
- Recipe 18 通勤時間と睡眠時間の関係
- Recipe 19 日本の犯罪は本当に減っているか
- Recipe 20 特殊詐欺の被害額は増えているか
- Recipe 21 ビットコインと日経平均は連動しているか
- Recipe 22 日経平均は米大統領選の年に上がるか
- Recipe 23 大学を出ると生涯年収はどれだけ変わるか
- Recipe 24 プログラミング言語の人気はどう移り変わったか
- Recipe 25 年収と幸福度は比例するか
- Recipe 26 経済規模が大きい国は幸せか
- Recipe 27 都道府県幸福度ランキングを自分で作る
- Recipe 28 再生回数が多いのは長い動画か、短い動画か
- Recipe 29 プロ野球の打率は「3割で一流」か
- Recipe 30 外国人労働者はどの都道府県に多いか
各章ディレクトリには次が含まれます。
recipeNN_*.py— 各レシピの実行スクリプト(単独で動作)jp_font.py— 日本語フォント設定ヘルパー(matplotlib の文字化け防止)images/— 出力されたグラフ(スクリプト実行で再生成されます)data/— 取得した実データのキャッシュ(再現性確保のため同梱)README.md— その章の各レシピの説明と分析結果
ほとんどのレシピは API キーなしで動きます。キーが必要なのは次のレシピだけです。
Recipe 05・07(第2章)、Recipe 09(第3章)、Recipe 11-14(第4章)、Recipe 16-18(第5章)、Recipe 19(第6章)、Recipe 23(第8章)、Recipe 27(第9章)は、政府統計の総合窓口 e-Stat の API を使います。無料のアプリケーション ID(appId)を発行し、その章のディレクトリの .env に ESTAT_APP_ID=... を書きます(発行手順は各章 README 参照)。
Recipe 28(第10章)は YouTube Data API v3 を使います。Google Cloud Console で無料の API キーを発行し、chapters/ch10/.env に YOUTUBE_API_KEY=... を書きます(手順は chapters/ch10/README.md 参照)。同梱の取得済みキャッシュをそのまま使えば、キーなしでも書籍の数値を再現できます。
上記以外はすべてキー不要で、公開データを直接取得します。気象庁(第1章)、The Economist の GitHub CSV(Recipe 08)、FRED / World Bank(Recipe 10・21・22・25・26)、OECD(Recipe 15)、警察庁 CSV(Recipe 20)、Stack Exchange API(Recipe 24)、World Happiness Report の GitHub CSV(Recipe 25・26)、NPB.jp(Recipe 29)、厚生労働省の Excel(Recipe 30)などです。
.env ファイルはいずれも .gitignore 済みで、リポジトリにはコミットされません。
Python 3.10 以上を推奨します。
git clone https://github.com/forest6511/python-data-recipes-samples.git
cd python-data-recipes-samples
pip install -r requirements.txt
cd chapters/ch01
python recipe01_sakura_trend.py各スクリプトは初回にデータを取得して data/ にキャッシュし、2 回目以降はキャッシュを使うため、ネットワークがなくても再実行できます(最新データで取り直したい場合は data/ の該当 CSV を削除して再実行します)。
本書のグラフは jp_font.py で日本語フォントを設定します。japanize-matplotlib は Python 3.12 以降では動作しないため、本リポジトリでは OS 標準の日本語フォント(macOS は Hiragino、Windows は Yu Gothic / Meiryo、Linux は Noto / IPAex)を順に探して設定する方式を採っています。フォントが見つからない場合は警告が出ます。
なお本書のグラフは白黒印刷でも判別できるよう、色だけに頼らず線種・マーカー・ハッチング(網掛け)で系列を区別しています。
各レシピが扱うデータは、気象庁・e-Stat・World Bank・World Happiness Report・NPB・厚生労働省などが公開しているものです。データそのものの利用条件は各機関の利用規約に従ってください。data/ のキャッシュは再現性確保のために同梱した取得時点のスナップショットで、最新値とは異なる場合があります。本リポジトリのコードは書籍購入者の学習用サンプルです。
コード(*.py)は MIT License で公開します。出力グラフ・キャッシュデータは各データ提供機関の利用規約に従います。