続行 → 概要
← 技術ノート一覧

エクセルで名前から性別を判定する方法:ファイル、スプレッドシート、Power Query

約6分 エクセル 性別判定 顧客リスト

Excelには、名前から性別を判定する関数はありません。「太郎」が男性で「花子」が女性だと判断するには、名前と性別の対応を集計したデータが必要で、それはExcelの中には入っていないからです。

顧客リストや会員名簿に性別の列を付けたい場合、現実的な方法は次の3つです。

方法 向いている場面 必要なもの
ファイルをアップロードする 数百〜100万行の一覧を一度に処理したい ブラウザだけ
Googleスプレッドシートのアドオン 表の中で関数のように使いたい Googleアカウント
Power QueryでAPIを呼ぶ Excelのブックの中で更新できるようにしたい Excel(Microsoft 365、Windows版を推奨)とAPIキー

どの方法でも、結果は名前ごとに課金されます。NameGenderは登録時に500クレジット、その後は毎日100クレジットを無料で使えます。

方法1:CSVまたはExcelファイルをアップロードする

いちばん手間が少ない方法です。

  1. 無料登録してダッシュボードを開き、「一括ファイル」からCSVまたはXLSXファイルをアップロードします(1ファイル最大100万行)。
  2. 名前が入っている列を選びます。
  3. 国を指定します。日本人の名簿なら JP を選んでください。国が行ごとに違う場合は、国コードの列を指定できます。
  4. 処理が終わったら、結果のファイルをダウンロードします。

元の列はそのまま残り、右側に次の列が追加されます。

列 意味
gender male / female。根拠が足りないときは空欄
probability データ上、その名前が主な性別と結びつく割合(0〜100)
sample_size 結果を支える計数の件数。日本の名前は公開統計がないため 0
source どの経路で判定したか(db、script など)
first_name, last_name フルネームを送った場合の分割結果

gender が空欄の行を、無理に男女どちらかへ寄せないでください。「不明」として残すほうが、後で集計を見直すときに正確です。

方法2:Googleスプレッドシートのアドオンを使う

表をGoogleスプレッドシートで扱えるなら、NameGenderアドオンを使うと、関数のように書けます。

=NAMEGENDER(A2:A500)

サイドバーから実行すると、性別に加えて確率やサンプルサイズの列も書き出されます。国はサイドバーで指定できます(日本人名なら Japan)。アドオンの画面は現在英語ですが、日本語の名前は問題なく処理できます。

ExcelのファイルはGoogleスプレッドシートで開いて処理し、もう一度Excel形式で保存できます。

方法3:Power QueryでAPIを呼ぶ

Excelのブックの中で結果を更新したい場合は、Power QueryからAPIを呼びます。WEBSERVICE 関数はAPIキーを送るためのヘッダーを設定できないため、この用途には使えません。

  1. 名前の表をテーブルにし、「データ」→「テーブルまたは範囲から」でPower Queryを開きます。
  2. Power Queryエディターで「ホーム」→「新しいソース」→「その他のソース」→「空のクエリ」を選び、「詳細エディター」に次の関数を貼り付けます。クエリの名前は GetGender にします。APIキーはダッシュボードの「API キー」で作成できます。
(name as text) =>
let
    Source = Json.Document(
        Web.Contents(
            "https://namegender.com/api/v1/gender",
            [
                Query = [name = name, country = "JP"],
                Headers = [Authorization = "Bearer ここにAPIキー"]
            ]
        )
    ),
    Result = [gender = Source[gender], probability = Source[probability]]
in
    Result
  1. 名前のテーブルに戻り、「列の追加」→「カスタム関数の呼び出し」で GetGender を選び、名前の列を渡します。
  2. 追加された列の展開ボタンを押すと、gender と probability が列として表示されます。初回はデータソースの認証方法を聞かれるので、「匿名」を選びます(APIキーはヘッダーで送っています)。

この方法は1行ごとに1回APIを呼ぶため、数百行程度までが目安です。それより多い場合は方法1のほうが速く、確実です。

APIキーはクエリの中に保存されます。ブックを社外へ共有する前に、キーを削除するか、キーを使わない方法(方法1)に切り替えてください。

日本人名で精度を落とさないために

国は必ず JP を指定する

漢字は中国語の名前と文字が重なるため、国を指定しないと中国語の読みで照合されることがあります。国に JP を指定すると、漢字の名前を日本語の読み(例:陽子 → ようこ)で照合し、性別は日本の名前データから決めます。

読み仮名があれば、かなで送る

同じ漢字に複数の読みがある名前(「薫」「光」など)は、漢字だけでは読みが決まりません。顧客リストにフリガナの列があるなら、そちらを送るのがいちばん確実です。

姓と名を分けて送る

「山田太郎」のように区切りのない氏名は、どこで姓と名が分かれるかを文字列から断定できません。名の列があるなら、名だけを送ってください。

精度の目安

公開している固定テスト(日本人名51件)では、正解率は94.1%でした。より近年の名前を多く含む別のテスト(明治安田生命が公開している名前ランキングの掲載名のうち、男女どちらか一方のみの2,333件)では、回答した名前の正解率が89.3%、回答できなかった名前を含む全体では74.5%です。近年の名前では、およそ6件に1件が「不明」になります。

テストの方法は公開ベンチマークの方法にまとめています。導入前に、ご自身の顧客リストから正解が分かっている数十件を選んで確認すると安心です。

使ってはいけない場面

名前から分かるのは、その名前がデータ上どちらの性別と結びつきやすいかという傾向だけです。本人の性自認や戸籍上の性別は分かりません。採用、審査、与信など、個人に影響する判断には使わないでください。集計や、敬称を付けない形での分析に使うのが適切です。

APIの詳しい仕様は日本語APIドキュメント、製品の概要は名前から性別を推定するAPIをご覧ください。

この記事の結果は、ご自身の名前リストで検証できます。小規模な確認には無料枠を利用できます。