ポケモン剣盾のランクバトルで1人しか使ってなさそうなポケモンを探す。

こういう記事を書きました。
ポケモン剣盾のランクバトルのバトルデータをMetabaseで可視化する。 - Qiita
JSONからだとアプリから参照できないポケモンの情報も参照できるので、1人しか使ってなさそうなポケモンもいくつか検索にひっかかります。
ダブルバトルでコロモリとか何に使うのかめちゃくちゃ興味があります。他にもそういうポケモンがいそうでわくわくしたので、Metabaseで検索してみることにしました。

JSONを加工してCSVにする

わざ・とくせい・もちもののデータをそれぞれ別のテーブルに保存するため、それぞれを別々のCSVに変換します。
Python3を使っています。

import json

pokedex = ""
#  https://resource.pokemon-home.com/battledata/js/bundle.js の図鑑と持ち物情報を抜き出してjsonにしたものを読み込む
with open("./bundle.json", "r") as json_open:
    pokedex = json.load(json_open)

pdetail = ""
# https://resource.pokemon-home.com/battledata/ranking/{シングル or ダブルのID}/{rstの値}/{ts2の値}/pdetail-{1から5} をcatで全部連結させたjsonを読み込む
# 私はダブルバトルのプレイヤーなので、ダブルバトルのJSONだけ使っています。
with open("./pdetail-1-5.json", "r") as json_open:
    pdetail = json.load(json_open)

waza_str = ""
item_str = ""
tokusei_str = ""
for pokenum in pdetail.keys():
    for p_detail_id in pdetail[pokenum].keys():
        name = pokedex["poke"][int(pokenum) -1]
        if p_detail_id != "0": # 0以外はフォルム・性別・リージョンetc違いなので分けて扱う。わざをみればどのフォームか分かるので数字だけでも特に問題ない。
            name = name + p_detail_id
        for pokewaza in pdetail[pokenum][p_detail_id]["temoti"]["waza"]:
            waza_str = waza_str + name + "," + pokedex["waza"][pokewaza["id"]] + "," + pokewaza["val"] + "\n"
        for pokeitem in pdetail[pokenum][p_detail_id]["temoti"]["motimono"]:
            item_str = item_str + name + "," + pokedex["item"][pokeitem["id"]] + "," + pokeitem["val"] + "\n"
        for poketokusei in pdetail[pokenum][p_detail_id]["temoti"]["tokusei"]:
            tokusei_str = tokusei_str + name + "," + pokedex["tokusei"][poketokusei["id"]] + "," + poketokusei["val"] + "\n"

with open("waza.csv", mode='w') as f:
    f.write(waza_str)
with open("item.csv", mode='w') as f:
    f.write(item_str)
with open("tokusei.csv", mode='w') as f:
    f.write(tokusei_str)

CSVをSQLite3に変換

$ sqlite3 double_move.db
sqlite> create table move(name text, move text, adoption_rate real); # わざテーブルの作成
sqlite> .mode csv
.import ./waza.csv move
# item, tokuseiも同様のテーブルを作成してインポートする

作ったDBをmetabaseに読み込む

Qiitaの記事と同じなので割愛。

1人しか使ってなさそうなポケモンを探す

推理が雑ですが、とくせいともちものの採用率が100%、かつ、使われてるわざの数が4から6なら、使ってる人が1人(もしくはその人のレンタルパ)と言えそうです。
3つのテーブルをjoinして検索します。

metabaseのjoin
metabaseのjoin

全部joinしてフィルターをかけるとこんな感じ。

たまもちのコイキングとかいう気が狂ってるとしか思えないのがいますね。どういう構築なんだこれ。
このワンリキーはカ・エールさん究極激可愛運勝ビートのワンリキーですね。すごい。

6/12のデータを検索したところ、ダブルバトルで1人しかつかってなさそうなポケモンは以下であることがわかりました。
(型が1つしかなさそうなポケモンもいるので、実際は1人かどうかはわからないです)
ロコンはアローラで、ダルマッカはガラルですね。バスラオはJSONの中を見ないとどっちがどっちかわかんねえな。
ホエルコは究極激可愛運勝ビートのホエルコですね。
みんな個性的で面白いなと思います。

ポケモンの名前	とくせい	とくせいの採用率	もちもの	もちものの採用率	わざ	わざの採用率
フシギソウ	ようりょくそ	100	しんかのきせき	100	てだすけ	100
フシギソウ	ようりょくそ	100	しんかのきせき	100	ねむりごな	100
フシギソウ	ようりょくそ	100	しんかのきせき	100	まもる	100
フシギソウ	ようりょくそ	100	しんかのきせき	100	やどりぎのタネ	47.1
フシギソウ	ようりょくそ	100	しんかのきせき	100	ギガドレイン	52.9
ロコン1	ゆきふらし	100	しんかのきせき	100	こおりのつぶて	100
ロコン1	ゆきふらし	100	しんかのきせき	100	つぶらなひとみ	100
ロコン1	ゆきふらし	100	しんかのきせき	100	オーロラベール	100
ロコン1	ゆきふらし	100	しんかのきせき	100	フリーズドライ	100
クサイハナ	ようりょくそ	100	しんかのきせき	100	あまえる	87.5
クサイハナ	ようりょくそ	100	しんかのきせき	100	ちからをすいとる	12.5
クサイハナ	ようりょくそ	100	しんかのきせき	100	ねむりごな	100
クサイハナ	ようりょくそ	100	しんかのきせき	100	ギガドレイン	100
クサイハナ	ようりょくそ	100	しんかのきせき	100	ヘドロばくだん	100
ワンリキー	ノーガード	100	しんかのきせき	100	はたきおとす	100
ワンリキー	ノーガード	100	しんかのきせき	100	ばくれつパンチ	100
ワンリキー	ノーガード	100	しんかのきせき	100	れいとうパンチ	100
ワンリキー	ノーガード	100	しんかのきせき	100	バレットパンチ	100
コイキング	びびり	100	いのちのたま	100	じたばた	100
コイキング	びびり	100	いのちのたま	100	たいあたり	100
コイキング	びびり	100	いのちのたま	100	とびはねる	100
コイキング	びびり	100	いのちのたま	100	ハイドロポンプ	100
ピチュー	ひらいしん	100	きあいのタスキ	100	てだすけ	100
ピチュー	ひらいしん	100	きあいのタスキ	100	ねこだまし	100
ピチュー	ひらいしん	100	きあいのタスキ	100	ほっぺすりすり	100
ピチュー	ひらいしん	100	きあいのタスキ	100	リフレクター	100
イノムー	あついしぼう	100	こだわりハチマキ	100	いわなだれ	100
イノムー	あついしぼう	100	こだわりハチマキ	100	こおりのつぶて	100
イノムー	あついしぼう	100	こだわりハチマキ	100	つららおとし	100
イノムー	あついしぼう	100	こだわりハチマキ	100	10まんばりき	100
ホエルコ	みずのベール	100	こだわりメガネ	100	しおふき	100
ホエルコ	みずのベール	100	こだわりメガネ	100	れいとうビーム	100
ホエルコ	みずのベール	100	こだわりメガネ	100	ハイドロポンプ	100
ホエルコ	みずのベール	100	こだわりメガネ	100	ハイパーボイス	100
ヒンバス	どんかん	100	きあいのタスキ	100	さいみんじゅつ	100
ヒンバス	どんかん	100	きあいのタスキ	100	ひかりのかべ	100
ヒンバス	どんかん	100	きあいのタスキ	100	ふぶき	100
ヒンバス	どんかん	100	きあいのタスキ	100	れいとうビーム	100
ヨマワル	おみとおし	100	しんかのきせき	100	かげうち	100
ヨマワル	おみとおし	100	しんかのきせき	100	てだすけ	100
ヨマワル	おみとおし	100	しんかのきせき	100	サイドチェンジ	78.6
ヨマワル	おみとおし	100	しんかのきせき	100	トリックルーム	100
ヨマワル	おみとおし	100	しんかのきせき	100	ナイトヘッド	21.4
ビークイン	きんちょうかん	100	バンジのみ	100	とどめばり	100
ビークイン	きんちょうかん	100	バンジのみ	100	とんぼがえり	100
ビークイン	きんちょうかん	100	バンジのみ	100	まもる	100
ビークイン	きんちょうかん	100	バンジのみ	100	クロスポイズン	100
ゴンベ	あついしぼう	100	しんかのきせき	100	じばく	100
ゴンベ	あついしぼう	100	しんかのきせき	100	のしかかり	100
ゴンベ	あついしぼう	100	しんかのきせき	100	ばかぢから	100
ゴンベ	あついしぼう	100	しんかのきせき	100	れいとうパンチ	100
ガントル	くだけるよろい	100	じゃくてんほけん	100	いわなだれ	100
ガントル	くだけるよろい	100	じゃくてんほけん	100	じだんだ	100
ガントル	くだけるよろい	100	じゃくてんほけん	100	だいばくはつ	100
ガントル	くだけるよろい	100	じゃくてんほけん	100	まもる	100
コロモリ	てんねん	100	しんかのきせき	100	ふういん	100
コロモリ	てんねん	100	しんかのきせき	100	まもる	100
コロモリ	てんねん	100	しんかのきせき	100	サイドチェンジ	100
コロモリ	てんねん	100	しんかのきせき	100	トリックルーム	100
モンメン	いたずらごころ	100	ねらいのまと	100	おきみやげ	100
モンメン	いたずらごころ	100	ねらいのまと	100	すいとる	20
モンメン	いたずらごころ	100	ねらいのまと	100	すりかえ	100
モンメン	いたずらごころ	100	ねらいのまと	100	てだすけ	100
モンメン	いたずらごころ	100	ねらいのまと	100	グラスフィールド	80
バスラオ	てきおうりょく	100	しんぴのしずく	100	あばれる	100
バスラオ	てきおうりょく	100	しんぴのしずく	100	いのちがけ	100
バスラオ	てきおうりょく	100	しんぴのしずく	100	アクアジェット	100
バスラオ	てきおうりょく	100	しんぴのしずく	100	アクアブレイク	100
バスラオ1	てきおうりょく	100	きあいのタスキ	100	しっぽをふる	100
バスラオ1	てきおうりょく	100	きあいのタスキ	100	だくりゅう	100
バスラオ1	てきおうりょく	100	きあいのタスキ	100	みずびたし	100
バスラオ1	てきおうりょく	100	きあいのタスキ	100	アクアジェット	100
ダルマッカ1	はりきり	100	しろいハーブ	100	ばかぢから	100
ダルマッカ1	はりきり	100	しろいハーブ	100	まもる	100
ダルマッカ1	はりきり	100	しろいハーブ	100	れいとうパンチ	100
ダルマッカ1	はりきり	100	しろいハーブ	100	フレアドライブ	100
バチュル	ふくがん	100	きあいのタスキ	100	いとをはく	100
バチュル	ふくがん	100	きあいのタスキ	100	いやなおと	100
バチュル	ふくがん	100	きあいのタスキ	100	ふいうち	100
バチュル	ふくがん	100	きあいのタスキ	100	むしのていこう	100
テッシード	てつのトゲ	100	しんかのきせき	100	てっぺき	100
テッシード	てつのトゲ	100	しんかのきせき	100	はたきおとす	100
テッシード	てつのトゲ	100	しんかのきせき	100	まもる	100
テッシード	てつのトゲ	100	しんかのきせき	100	やどりぎのタネ	100
ジヘッド	はりきり	100	しんかのきせき	100	かみくだく	100
ジヘッド	はりきり	100	しんかのきせき	100	げきりん	100
ジヘッド	はりきり	100	しんかのきせき	100	こおりのキバ	83.3
ジヘッド	はりきり	100	しんかのきせき	100	ばかぢから	100
ジヘッド	はりきり	100	しんかのきせき	100	ほのおのキバ	16.7
ヤンチャム	きもったま	100	しんかのきせき	100	ともえなげ	100
ヤンチャム	きもったま	100	しんかのきせき	100	まもる	100
ヤンチャム	きもったま	100	しんかのきせき	100	ドレインパンチ	100
ヤンチャム	きもったま	100	しんかのきせき	100	ビルドアップ	100
シルヴァディ5	ARシステム	100	ロックメモリ	100	つるぎのまい	100
シルヴァディ5	ARシステム	100	ロックメモリ	100	アイアンヘッド	100
シルヴァディ5	ARシステム	100	ロックメモリ	100	サイコファング	100
シルヴァディ5	ARシステム	100	ロックメモリ	100	マルチアタック	100
シルヴァディ15	ARシステム	100	ドラゴンメモリ	100	くさのちかい	100
シルヴァディ15	ARシステム	100	ドラゴンメモリ	100	だいばくはつ	100
シルヴァディ15	ARシステム	100	ドラゴンメモリ	100	つるぎのまい	100
シルヴァディ15	ARシステム	100	ドラゴンメモリ	100	まもる	100
ジャランゴ	ぼうおん	100	しんかのきせき	100	まもる	100
ジャランゴ	ぼうおん	100	しんかのきせき	100	アイアンヘッド	93.8
ジャランゴ	ぼうおん	100	しんかのきせき	100	ドラゴンクロー	6.3
ジャランゴ	ぼうおん	100	しんかのきせき	100	ドレインパンチ	100
ジャランゴ	ぼうおん	100	しんかのきせき	100	ビルドアップ	100
ヒバニー	リベロ	100	こだわりハチマキ	100	たいあたり	14.3
ヒバニー	リベロ	100	こだわりハチマキ	100	とびはねる	85.7
ヒバニー	リベロ	100	こだわりハチマキ	100	とびひざげり	98.4
ヒバニー	リベロ	100	こだわりハチマキ	100	なきごえ	14.3
ヒバニー	リベロ	100	こだわりハチマキ	100	ふいうち	98.4
ヒバニー	リベロ	100	こだわりハチマキ	100	ブレイズキック	85.7
ラビフット	リベロ	100	いのちのたま	100	すてみタックル	83.3
ラビフット	リベロ	100	いのちのたま	100	とびひざげり	83.3
ラビフット	リベロ	100	いのちのたま	100	とんぼがえり	16.7
ラビフット	リベロ	100	いのちのたま	100	ふいうち	16.7
ラビフット	リベロ	100	いのちのたま	100	ダストシュート	100
ラビフット	リベロ	100	いのちのたま	100	フレアドライブ	100

今回はSQL書いたほうが早そうでしたが、こういうデータが簡単にとれるのでMetabaseは便利ですね。

追記

とくせい(もしくはもちもの)だけ途中で変えてわざは同じってパターンもありそうなので、フィルターを追加した方が良さそうですね。
ドラメシヤはこんな感じなので、使ってる人が同じに見えました。

ドラメシヤ	92.3	のろわれボディ	100	きあいのタスキ	100	てだすけ
ドラメシヤ	92.3	のろわれボディ	100	きあいのタスキ	100	でんこうせっか
ドラメシヤ	92.3	のろわれボディ	100	きあいのタスキ	100	でんじは
ドラメシヤ	92.3	のろわれボディ	100	きあいのタスキ	100	まとわりつく
ドラメシヤ	7.7	すりぬけ	100	きあいのタスキ	100	てだすけ
ドラメシヤ	7.7	すりぬけ	100	きあいのタスキ	100	でんこうせっか
ドラメシヤ	7.7	すりぬけ	100	きあいのタスキ	100	でんじは
ドラメシヤ	7.7	すりぬけ	100	きあいのタスキ	100	まとわりつく