楽天モバイル全国の5G集計

import urllib.parse

import pandas as pd
import requests

rakuten = {
    # 1:免許情報検索  2: 登録情報検索
    "ST": 1,
    # 詳細情報付加 0:なし 1:あり
    "DA": 0,
    # スタートカウント
    "SC": 1,
    # 取得件数
    "DC": 3,
    # 出力形式 1:CSV 2:JSON 3:XML
    "OF": 2,
    # 無線局の種別
    "OW": "FB",
    # 免許人名称/登録人名称
    "NA": "楽天モバイル",
}


def musen_api(d):

    parm = urllib.parse.urlencode(d, encoding="shift-jis")
    r = requests.get("https://www.tele.soumu.go.jp/musen/list", parm)

    return r.json()


def band_select(d, start, end, unit):

    d["FF"] = start
    d["TF"] = end
    d["HZ"] = unit

    data = musen_api(d)

    df = pd.json_normalize(data, "musen").rename(columns={"listInfo.tdfkCd": "name"})

    se = df.value_counts("name")

    return se


# ミリ波

se_milli = band_select(rakuten, 26.5, 29.5, 3)
se_milli

# Sub6

se_sub6 = band_select(rakuten, 3300, 4200, 2)
se_sub6

# 結合

df0 = (
    pd.concat([se_milli.rename("ミリ波"), se_sub6.rename("sub6")], axis=1)
    .rename_axis("場所")
    .reset_index()
)
df0

df_code = pd.read_csv(
    "https://docs.google.com/spreadsheets/d/e/2PACX-1vSseDxB5f3nS-YQ1NOkuFKZ7rTNfPLHqTKaSag-qaK25EWLcSL0klbFBZm1b6JDKGtHTk6iMUxsXpxt/pub?gid=0&single=true&output=csv",
    dtype={"団体コード": int, "都道府県名": str, "郡名": str, "市区町村名": str},
)

df_code["市区町村名"] = df_code["郡名"].fillna("") + df_code["市区町村名"]
df_code.drop("郡名", axis=1, inplace=True)

df_code["場所"] = df_code["都道府県名"] + df_code["市区町村名"]

df1 = pd.merge(df0, df_code, on=["場所"], how="left")
df1["団体コード"] = df1["団体コード"].astype("Int64")

df1["団体コード"].isna().sum()

df1.set_index("団体コード", inplace=True)
df1.sort_index(inplace=True)

df1["ミリ波"] = df1["ミリ波"].fillna(0).astype(int)
df1["sub6"] = df1["sub6"].fillna(0).astype(int)

df1

df2 = df1.reindex(columns=["都道府県名", "市区町村名", "ミリ波", "sub6"])

df2.to_csv("all.csv")