1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【学習記録】BigQueryオープンデータを用いたアメリカの赤ちゃんの名前ランキング分析【1/4】

Last updated at Posted at 2025-11-20

BigQueryのオープンデータを用いたデータ分析の学習記録です。書き進めるうちに内容が膨らみ、Qiita初投稿にして全4本になりました。

0. 学習の前に

簡単に私のスペックを紹介しておきます。

  • アラサー
  • SE歴合計4年弱(複数社でSEとして勤務歴あり、直近の仕事は非IT)
  • SE歴=バックエンドエンジニア(主な開発言語:Java、VBA、C#)
  • BigQuery:実務経験なし
  • SQL:実務経験あり(MySQL、SQLServer、PostgreSQL)
  • Python:実務経験なし(独学中)

0-1. 全体のゴール

  • BigQueryのオープンデータから、自分が欲しいデータを抽出する
  • 抽出したデータを分析する

0-2. 技術

  • BigQuery
  • Colaboratory
  • Google Cloud Platform
  • Google Gemini
  • Python3
  • SQL

0-3. この記事で扱う範囲

● 1. データセットの選択
● 2. 集計データの内容
● 3. 結果の事前予想
● 4. データ抽出
  * 4-1. アメリカで人気の名前年間トップ10(表)
  * 4-2. アメリカで人気の名前年間トップ5の推移(折れ線グラフ)
    ・4-2-1. Googleアカウント認証
    ・4-2-2. SQLクエリ定義
    ・4-2-3. BigQueryからPandasへ読み込み
    ・4-2-4. データの集計と折れ線グラフ化
  * 4-3. アメリカ年間出生者数に占めるトップ10の割合の推移(帯グラフ)
    ・4-3-1. データセットからデータ抽出
    ・4-3-2. SQLクエリ定義
    ・4-3-3. BigQueryからPandasへ読み込み
    ・4-3-4. データの集計と帯グラフ化
● 5. データ分析
  * 5-1. 登録者数に占めるトップ10の割合の減少
    ・5-1-1. 女の子
    ・5-1-2. 男の子
  * 5-2. ボーダーレスな名前の増加
  * 5-3. ユニセックス・男女ペアの名前の増加
    ・5-3-1. ユニセックスな名前
    ・5-3-2. 男女ペアの名前
  * 5-4. 1910年と2021年のトップ10比較
    ・5-4-1. 女の子
    ・5-4-2. 男の子
  * 5-5. トップ5入りする名前の変遷
    ・5-5-1. 女の子
    ・5-5-2. 男の子
  * 5-6. その他
    ・5-6-1. 2022年以降のデータ

1. データセットの選択

何でもよかったのですが、今回はUSA Name Dataを選択。ざっくりデータの中身を説明すると、以下の通りです。

  • アメリカ社会保障局が作成
  • 以下をすべて満たす人の名前を記載(2015年2月末時点)
    • 1879年以降にアメリカで生まれた人
    • 社会保障カードを申請した人
    • 記録に出生地の記載がある人
  • データベース
    • state(String):出生州
    • gender(String):性別(男:M、女:F)
    • year(Integer):出生年(1910~2021)
    • name(String):名前(given name)
    • number(Integer):人数

ちなみにプライバシー保護の観点から、number<5の名前は登録されていません。

state gender year name number
AK F 1910 Lucy 6
WY M 2021 Sebastian 7

たとえば上記データの場合、以下のように読み取れます。

  • 1910年、アラスカ州(AK)でLucyという女の子が6人生まれた
  • 2021年、ワイオミング州(WY)でSebastianという男の子が7人生まれた

2. 集計データの内容

USA Name Dataから、以下のデータを抽出します。すべて男女別です。

  • アメリカで人気の名前年間トップ10(表)
  • アメリカで人気の名前年間トップ5の推移(折れ線グラフ)
  • アメリカ年間出生者数に占めるトップ10の割合の推移(帯グラフ)

3. 結果の事前予想

集計したデータから見える傾向の分析だけでなく、事前予想との比較もします。

  1. 移民の増加によって名前が多様化し、各年・性別ごとの登録者数に占めるトップ10の割合は、現代に近づくほど低下する
  2. 現代に近づくにつれ、国籍に限定しない名前が上位に入りやすくなる(例:ハナコは日本的、アンはボーダーレス)
  3. 現代に近づくにつれ、ユニセックスな名前(例:Alex、Taylor)や、男性名と女性名で対になる名前(例:Gabriel/Gabrielle、Jonathan/Johanna)が増える
  4. 1910年のトップ10と2021年のトップ10は、ほぼ完全に入れ替わる(古風な名前が減り、現代的な名前が増える)
  5. 移民の増加によって名前が多様化し、現代に近づくほどトップ5の入れ替わりが激しくなる

思うがまま書き出しました。2.と3.は「全体として予想通りの傾向があるものの、トップ10圏外のデータからはその傾向を確認できない」が起こり得ます。個人的には追及したいですが、トップ10圏外のデータは深追いしません。また、4.の「ほぼ」は、1、2個程度は残っていると予想しました。

4. データ抽出

今回はGCPのクエリとGoogle Colabを使いました。本来はVertex AI Workbenchも利用予定でしたが、インスタンスを起動すると料金が発生するので取りやめました。

4-1. アメリカで人気の名前年間トップ10(表)

早速データを抽出していきます。まずはGCPのクエリで次のSQLを叩きました。

4-1. SQL
SELECT
	name,
	year,
	gender,
	sumNumber,
	rank
FROM (
	SELECT
		name,
		year,
		gender,
		SUM(number) AS sumNumber,      -- 全米の登録者数
		ROW_NUMBER() OVER(
			PARTITION BY year, gender  -- 各「年」と「性別」で順位をリセット
			ORDER BY SUM(number) DESC
		) AS rank
	FROM
		`bigquery-public-data.usa_names.usa_1910_current`
	GROUP BY
		name, year, gender
) AS RankedData
WHERE
	rank <= 10
ORDER BY
	year DESC,
	gender ASC,
	rank ASC;

抽出したデータを CSV として出力したところ、以下の内容が得られました。内訳は「トップ10×男女×1910~2021年(112年分)+ヘッダー」で、合計2,241行です。

4-1. 抽出結果.csv
name,year,gender,sumNumber,rank
Olivia,2021,F,17728,1
Emma,2021,F,15433,2
Charlotte,2021,F,13285,3
--- 中略 ---
Frank,1910,M,3761,8
Edward,1910,M,3402,9
Henry,1910,M,2884,10

ベースとなるデータを抽出したばかりですが

このまま続けると長編になりすぎるため、当初の予定だった「1記事で全部まとめる」を断念し、区切って進めることにします。次回は折れ線グラフを作ります!

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?