選挙結果データ

対象: 国政選挙 / 統一地方選挙(準備中)

👀 ざっくり言うと

衆議院・参議院選挙(小選挙区・比例代表)の結果を、総務省の公式発表やWikipediaから自動収集しています。 候補者・得票数・当選有無を政治家データと紐付けて記録しており、議員の選挙での歩みを追跡できます。 地方統一選挙については順次データセットを拡充していく予定です。

🔄 データの流れ

graph TD
    A["総務省 選挙結果発表
Excel / PDF"]:::source B["Wikipedia
歴代選挙記事(第1〜44回)"]:::source M["管理画面からの手動入力
Streamlit 当選者管理"]:::source P1["XLSダウンロード
選挙回ごとの発表ファイルを取得"]:::process P2["XLS/PDFパース
シート構造を解析し候補者行を抽出"]:::process P3["Wikitextパース
選挙テーブル/テンプレートから当選者を抽出"]:::process P4["候補者正規化
氏名・選挙区・政党を正規化"]:::process P5["政治家とのマッチング
既存Politicianに紐付け(新規なら作成)"]:::process P6["ElectionMember投入
得票数・順位・結果を記録"]:::process P7["当選者の手動編集
結果・所属の訂正と追加登録"]:::process T_EL["elections
テーブル(選挙)"]:::table T_EM["election_members
テーブル(当選者)"]:::table V["dbt Data Vault層
hub / sat / link モデル"]:::process H["BigQuery公開
sagebase スキーマ"]:::public A --> P1 P1 --> P2 B --> P3 P2 --> P4 P3 --> P4 P4 --> P5 P5 --> P6 P6 --> T_EL P6 --> T_EM M --> P7 P7 --> T_EL P7 --> T_EM T_EL --> V T_EM --> V V --> H classDef source fill:#ffffff,stroke:#1a1a1a,stroke-width:2.5px,color:#1a1a1a classDef process fill:#ffffff,stroke:#737373,stroke-width:1px,color:#1a1a1a classDef table fill:#ffffff,stroke:#1a1a1a,stroke-width:1.5px,stroke-dasharray: 6 3,color:#1a1a1a classDef public fill:#1a1a1a,stroke:#1a1a1a,stroke-width:2.5px,color:#ffffff
元データ 加工 DB 公開
📂 技術的な詳細(開発者向け)

スクレイパー・インポーター

データソーススクリプト主要ロジック
総務省(衆院小選挙区)
https://www.soumu.go.jp/senkyo/senkyo_s/data/
scripts/import_soumu_election.py + soumu_election_scraper / soumu_xls_parser総務省の市区町村別得票数XLSをダウンロードし、シート構造を解析して候補者・得票数を抽出。既存Politicianとマッチングして当選情報を記録
総務省(衆院比例代表)scripts/import_soumu_proportional.py + soumu_proportional_pdf_extractor比例代表名簿PDFからブロック・名簿順位を抽出し、候補者をPolitician・ElectionMemberに登録
総務省(参院選挙区・比例代表)scripts/import_soumu_sangiin_election.py / import_soumu_sangiin_proportional.py参議院の選挙区・比例代表それぞれのXLSを解析し候補者と結果を投入
Wikipedia(歴代選挙)scripts/import_wikipedia_election.py / import_wikipedia_sangiin_election.py / import_wikipedia_local_election.py第1〜44回衆院選など総務省に無い古い選挙について、Wikitextの当選者テーブル/テンプレートから候補者情報を抽出
管理画面からの手動入力(Streamlit)src/interfaces/web/streamlit/views/election_members_view.pyスクレイプで取り切れない候補者や結果の訂正を手動で行う。当選者一覧から個別レコードを編集・追加

DBテーブル(PostgreSQL)

テーブル説明
elections選挙イベント(選挙日・選挙種別)
election_members選挙ごとの候補者・結果・得票数

dbtモデル(Data Vault層)

モデル役割
hub_election選挙のハブ
sat_election選挙の属性サテライト
link_election_member選挙 ↔ 政治家 のリンク
sat_election_member候補者結果(得票数・当落)のサテライト

BigQuery公開テーブル

テーブルデータセット
electionssagebase
election_memberssagebase