LoginSignup
2
1

More than 3 years have passed since last update.

pythonでgbizinfoを介して法人番号を一気に取得

Last updated at Posted at 2020-11-17

はじめに

こんなことはありませんか?
toBの企業情報は取得しているけどCRMには法人番号はない。
あるのは、法人名と設立年度などの基本情報。
こんな時に他のリストのデータセットと結合する際に、何を結合keyにすればいいのか?
悩むと思います。

行政の定める法人番号さえあれば、あらゆる企業情報を結合し、1つの情報にすることができます。
例えば,以下のように、テーブルAとテーブルBを結合したい時がありうるとします。

テーブルA(企業情報)

会社名 設立年 都道府県
hoge fuga 3

テーブルB(コンタクト情報)

会社名 見込み金額 受注状況
hoge 3000 初回接続

gbizinfoを使ってみる

sqlなどデータベース言語に触れることがある人ならわかると思います。
文字列同士の結合はDB負荷がかかるという事に。
法人番号さえあれば共通の結合Keyとして使用できます。
法人番号を取得する場合に、便利なのが、経産省のgbizinfoです
なんとこのサービスREST APIを備えているのです。
なので、とっても法人番号の取得が簡単です。
https://info.gbiz.go.jp/api/index.html

のちにheadersの情報でX-hojinInfo-api-tokenが必要になるので
あらかじめAPIの利用申請が必要です。

pythonで呼んでみる

サンプルデータ

以下のように、会社名と設立年度だけが入ったデータがあるとします。
このデータに法人番号を入れたいです。
リクエストの際のメソッドはGETです

会社名 設立年
楽天モバイル株式会社 2018
株式会社松屋フーズ 2018

リクエストしてみる

request.py
import json
import pandas as pd
import requests

class CorporateNumbers:
    def __init__(self):
        self.headers = {
            "Accept": "application/json",
            "X-hojinInfo-api-token": "###token###"
        }
        self.endpoint_url = 'https://info.gbiz.go.jp/hojin/v1/hojin'
    def _create_taeger_company_dataframe(self):
        df = pd.read_clipboard()
        return df
    def _get_corporate_number(self,df):
        #df = self._create_taeger_company_dataframe()
        name = df.name
        founded_year = df.founded
        results = []
        for name,founded in zip(name,founded_year):
            data = {
                'name':name,
                'founded':founded
            }
            res = requests.get(
                url = self.endpoint_url,
                headers = self.headers,
                params = data
            )
            json = res.json()['hojin-infos']
            results.extend(json)
            df = pd.io.json.json_normalize(results)
        return df
    def _merge_dataframe(self):
        df1 = self._create_taeger_company_dataframe()
        df2 = self._get_corporate_number(df = df1)
        df3 = pd.merge(df1,df2,on='name',how='left')
        return df3

結果

スクリーンショット 2020-11-17 23.13.45.png

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