ふくふくHukuhuku Inc.
EP.06STEM対象: 全学年 14分公開: 2026-05-10

自分の研究テーマでデータ分析:探究学習を Python で

公開データを使って、自分が立てた仮説を検証する。総合学習・探究学習で評価される研究を、Python で進める手順。

#中高生#データ分析#探究学習#統計
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

高校の探究学習や、大学入試の総合型選抜で、「自分でテーマを立てて、データで検証する」力が求められる時代になりました。今回は Python とオープンデータを使って、本格的な研究プロセスを最後まで通します。

研究の5ステップ

1. 問いを立てる気になることを2. 仮説を立てるこうじゃないか?3. データ収集公開データ4. 分析・検証Pythonで5. 発表グラフ・考察
探究学習の流れ

テーマ例:気温と熱中症搬送数の関係

「気温が高い日ほど熱中症で搬送される人が多い」という仮説を検証してみよう。

  1. 1問い: 気温が何度を超えたら熱中症が急増するのか?
  2. 2仮説: 30度を超えるあたりから指数関数的に増える
  3. 3データ: 気象庁の気温データ + 消防庁の熱中症搬送データ
  4. 4分析: 散布図 + 回帰分析
  5. 5発表: グラフ + 考察 + 提案
気温と搬送数の散布図(サンプルデータ)
Python
import numpy as npimport matplotlib.pyplot as pltimport pandas as pd
# サンプルデータ(実際は気象庁・消防庁から取得)data = {    "max_temp": [25, 26, 28, 30, 31, 33, 35, 36, 37, 38, 39],    "heatstroke_count": [5, 8, 12, 25, 40, 80, 150, 220, 350, 500, 720],}df = pd.DataFrame(data)
# 散布図 + 回帰plt.figure(figsize=(10, 6))plt.scatter(df["max_temp"], df["heatstroke_count"], s=80, alpha=0.7)
# 二次回帰coef = np.polyfit(df["max_temp"], df["heatstroke_count"], 2)x_smooth = np.linspace(25, 39, 100)y_smooth = coef[0] * x_smooth**2 + coef[1] * x_smooth + coef[2]plt.plot(x_smooth, y_smooth, "r--", label=f"二次フィット: y = {coef[0]:.1f}x² + {coef[1]:.1f}x + {coef[2]:.1f}")
plt.xlabel("最高気温 (°C)")plt.ylabel("熱中症搬送数")plt.title("気温と熱中症搬送数の関係")plt.legend()plt.grid(True, alpha=0.3)plt.show()
print(f"相関係数: {np.corrcoef(df['max_temp'], df['heatstroke_count'])[0,1]:.3f}")
気温と熱中症搬送数の散布図と二次関数フィット
サンプルデータで二次関数フィット。気温30度から急増している

公開データの入手先

分野サイト取得形式
気象気象庁データダウンロードサービス
人口・統計(政府統計) / CSV
地域経済API
医療・健康厚生労働省 オープンデータCSV / Excel
環境国立環境研究所 データバンクCSV
天文NASA Exoplanet ArchiveCSV / VOTable

を「研究の助手」として使う

prompt:研究の方針相談
高校2年生で、探究学習のテーマに「うちの市の通学路の信号機の効率」を選びました。

ガジェットや特別な機材なしに、Pythonとオープンデータでできる分析プランを5つ提案してください。
それぞれについて:
- 使うデータソース
- 分析手法
- 想定される結論
- 発表のスライド構成案

を出してください。論文未満・自由研究以上のレベル感でお願いします。
想定される実行結果(例示)
素晴らしいテーマです!5案を提案します。

## 案1: 信号待ち時間の分布分析
- データ: 自分で計測した(スマホで時間を測る、最低200回)
- 分析: ヒストグラム、平均、中央値、95%tile
- 結論候補: 「平均は40秒だが95%tileは120秒、最悪が突出」
- スライド: 計測方法 / グラフ / 考察 / 改善提案

## 案2: 交通量と信号サイクルの整合性
- データ: 国土交通省「道路交通センサス」
- 分析: 時間帯別交通量 vs 信号青時間の比較
- 結論候補: 「朝7-8時の交通量に対し青時間が短すぎる」
- スライド: データソース / 比較表 / 提案

## 案3: 気象と歩行者待ちの関係
- データ: 気象庁データ + 自分の観察ログ
- 分析: 雨の日と晴れの日で待ち時間体感が違うか
- 結論候補: 「雨でも待ち時間は同じだが、体感的には2倍」
- スライド: 主観 vs 客観

## 案4: 信号タイミング最適化シミュレーション
- データ: 自分の観察 + 仮想シナリオ
- 分析: Python シミュレーションで「サイクルを変えたら平均待ち時間がどう変わるか」
- 結論候補: 「現行60秒サイクルを75秒にすると平均が15%減」
- スライド: シミュレーションコード / 結果 / 提案

## 案5: 他都市との比較
- データ: e-Stat(人口)+ 自分の観察 + 他市役所への問合せ
- 分析: 人口あたり信号機数の比較
- 結論候補: 「うちの市は隣市より信号機が30%多い」
- スライド: データ表 / 散布図 / 政策提案

→ 案4がコード重視で、案2が政策提案として強いです!

発表のコツ

  • 最初に結論を1行で(「気温30度を超えると熱中症は指数関数的に増える」)
  • 1スライド1メッセージ
  • 散布図 + 回帰直線は最強の説得材料
  • 生データの一部を必ず見せる(透明性の確保)
  • 「もし〜だったら」のシミュレーションで実用性を訴える

次回予告

EP.07 から、より発展的なテーマへ。まずは入門。scikit-learn でアヤメの品種を分類する古典的タスクから。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp