食事の最適化:最小限の食材で1日の必要栄養素を満たすには
みなさんは健康的な食事を摂れていますか。健康的な食事の基準として、1日の必要栄養摂取量を満たしているかがあります。しかし、そのためにはいろいろな食材を摂る必要があり、忙しい人にとってはなかなか実現が難しいですよね。
そこで今回は、数理最適化というものを使って、1日の栄養素を満たせる最低限の食材を算出してみます。
データ
1日の栄養素を満たす食品を算出するには、1日に必要な栄養素の量と、食材毎の栄養素のデータが必要になります。
1日の栄養摂取量
1日に必要な栄養素の量は、厚生労働省が定める「日本人の食事摂取基準」を使用します。


この表から以下のことが分かります。
- 性別と年齢によって、摂取量は異なる。
- 摂取量としては推定平均必要量・推奨量・目安量・目標量が存在する。
- ビタミンA(右図)のように耐用上限量が決まっている栄養素もある。
また、栄養素は全部で31種類存在します。
食材毎の栄養素
食材毎の栄養素は文部科学省が作成している「日本食品標準成分表」を使用します。

こちらには2478品目の食材の各栄養素の量が記載されています。
数理最適化
以上2つのデータを使って数理最適化により、1日の栄養素を満たせる最低限の食材を算出するわけですが、そもそも数理最適化とは何かを簡単に説明します。
数理最適化とは
数理最適化とは、「制約が与えられた中で、ある関数を最小化(または最大化)する解を見つけること」です。最小化したい関数のことを目的関数といいます。
言葉だけでは分かりにくいので、例を見てみましょう。
(例)
xが0から2の範囲で、関数y=x*2が最小値をとるxの値を見つけたいとします。

求めたい変数:x
制約:0<x<2
目的関数:y=x*2
これを解くと、解はx=1.115になります。
数理最適化の解き方のアルゴリズムとしては、シンプレックス法や分枝限定法等がありますが、脱線するので今回は割愛します。
栄養問題を数理最適化に当てはめる
では、今回の目的である「1日の栄養素を満たせる最低限の食材を算出する」を数理最適化に当てはめてみます。今回求めたいのは食材なので、各食材の摂取量をxとし、栄養素が1日の推奨量を超えているという条件のもと、食材の合計摂取量を最小化します。
求めたい変数:各食材の摂取量(g)
制約式:ある栄養素の摂取量(g)>1日の推奨量(g)
目的関数:食材の合計摂取量(g)
数式で表すと以下になります。

実装
pythonの数理最適化ライブラリであるpulpを使って実装します。
必要摂取量は性別や年齢によって異なるので、ひとまずは20代男性の数値で算出します。
from pulp import * problem = LpProblem(sense=LpMinimize) P = df.index.to_list() x = LpVariable.dicts('x', P, cat='Continuous', lowBound=0, upBound=200) for t in target['栄養素'].to_list(): if target.loc[target['栄養素']==t,'以上以下'].values[0] == '以上': problem += lpSum([df.loc[p,t]*x[p] for p in P])>=target.loc[target['栄養素']==t,'男20上限'].values[0] if target.loc[target['栄養素']==t,'以上以下'].values[0] == '以下': problem += lpSum([df.loc[p,t]*x[p] for p in P])<=target.loc[target['栄養素']==t,'男20上限'].values[0] if target.loc[target['栄養素']==t,'男20上限'].values[0] != 0: problem += lpSum([df.loc[p,t]*x[p] for p in P])<=target.loc[target['栄養素']==t,'男20上限'].values[0] problem += lpSum([1*x[p] for p in P]) status = problem.solve() pulp.value(problem.objective)LpVariable.dicts('x', P, cat='Continuous', lowBound=0, upBound=200)
のlowBoundとupBoundで変数xの下限と上限を設定しています。摂取量がマイナスになることはないので下限は0を、1つの食材を大量に摂取することは避けたいため上限は200gを設定しています。
![]()
栄養素に関して上限量が存在するものは、上限量を越えないように制約式を追加しています。
![]()
結果
結果①
上記コードを実行して、結果を確認してみます。

いろいろと出力されていますが、大事なのは赤枠の部分になります。「Optimal」というのは最適解が見つかったという意味です。制約式によっては、「解なし」となる場合もあります。
次の「objective value」というのは最適解の時の目的関数の値になります。565グラム分の食材を摂取すれば、必要な栄養素が満たせるようです。
ではどの食材がそれぞれ何グラム選ばれたのかを見てみましょう。
| 食品 | 摂取量(g) |
|---|---|
| (砂糖類) 加工糖 角砂糖 | 200.0 |
| (植物油脂類) ひまわり油 ハイリノール | 60.3 |
| りょくとう 全粒 乾 | 58.8 |
| ごま いり | 46.6 |
| らっかせい 大粒種 いり | 39.8 |
| まいたけ 乾 | 39.6 |
| だいず [全粒・全粒製品] きな粉 黄大豆 全粒大豆 | 34.3 |
| (砂糖類) 加工糖 氷砂糖 | 29.4 |
| アーモンド いり 無塩 | 12.9 |
| <茶類> (緑茶類) せん茶 茶 | 12.0 |
| レンズまめ 全粒 乾 | 7.8 |
| (動物油脂類) たらのあぶら | 6.8 |
| こめ [その他] 米ぬか | 5.0 |
| <畜肉類> うし [副生物] 肝臓 生 | 4.5 |
| アセロラ 酸味種 生 | 3.9 |
| らっかせい 大粒種 乾 | 2.5 |
| <調味料類> (だし類) 昆布だし 煮出し | 0.9 |
...角砂糖200g?...ひまわり油60g?
こんなの食べたら死んでしまいます。
摂取量を最小化したため、少ない量でカロリー摂取量を一気に稼げる角砂糖が選ばれたのだと思います。
いくら栄養素を満たしていても、現実的に食べれない量では困ります。
修正
ではどのように修正すれば良いでしょうか?
各食材の摂取量上限を200gとしていたので、これを20gとかに減らすべきでしょうか?そうすれば角砂糖が200gも選ばれることはなくなりますが、一方で200gぐらい余裕で食べれる食材(ご飯等)も20gまでしか食べれない制約をかけてしまうことになります。
また、1つの食材の上限量を減らすことは、必要な食材数を増やすことになるので、今回の目的である最低限の食材という部分が満たされません。
食材毎に現実的に食べれる量のデータがあればいいのですが、残念ながらそのようなデータは見つかりませんでした。
今回は制約はこのままで、実行結果から食べれない量の食材が含まれていたら、その食材自体を手動で除外することにします。食べれない量の食材がなくなるまで、除外して実行してを繰り返します。
結果、以下のワードが含まれる食品を除外しました。
'植物油脂類|動物油脂類|香辛料類|節|煮干し|カゼイン|たたみいわし|茶|酵母|さめ類|てんぐさ|めふん|粉乳類|グァバ|加工品|粉末|精粉|からすみ|くさや|はと|とうがらし|ホエー|うるか|パセリ|マジェランあいなめ|あらげきくらげ|ドライトマト|あまに|心臓|調味料類|ココア|いなご|フォアグラ|ごま|らっきょう|かや|ゆず|すいか|おおむぎ|かぼちゃ いり|すだち|ライむぎ|つるにんじん|どじょう|あずき|ココナッツ|凍みこんにゃく|テンペ|きな粉|やぶまめ|ひまわり|なずな|ささげ|あめ煮|らいまめ|アメリカほどいも|おから|そば粉|ショートニング|マーガリン|ケーキ|でん粉|砂糖類|和干菓子類|アルコール飲料類|あわもち|ぎんなん 生|セレベス|キャンデー類|まつ 生|乳児用|コーングリッツ|コーンフラワー|和生菓子|メープルシロップ|ガム|たにし|ドリアン|あけび|アーモンド 乾|アーモンド フライ 味付け|素干し|大豆はいが|りょくとう|黄大豆|2等|けし'
- 調味料系
- マイナーな食材:たたみいわし、めふん
- 高級食材:フォアグラ
- 食べたくない食材:くさや、ドリアン、乳児用食材
結果②
上記の食品を除外すると、以下の結果となりました。
これが最強の食事です!
| 食品 | 摂取量 (g) |
|---|---|
| こむぎ [小麦粉] 薄力粉 1等 | 200.00 |
| いんげんまめ 全粒 乾 | 200.00 |
| レンズまめ 全粒 乾 | 185.68 |
| モロヘイヤ 茎葉 生 | 72.76 |
| まいたけ 油いため | 67.88 |
| らっかせい 小粒種 いり | 48.67 |
| マンゴー ドライマンゴー | 36.04 |
| アーモンド いり 無塩 | 30.00 |
| まいたけ 乾 | 16.37 |
| なつめやし 乾 | 15.63 |
| チアシード 乾 | 10.00 |
| <畜肉類> うし [副生物] 肝臓 生 | 4.53 |
| アセロラ 酸味種 生 | 1.44 |
| (こんぶ類) 刻み昆布 | 0.05 |
※アーモンドとチアシードのみ上限をそれぞれ30g,10gとしています。
この食事による各栄養素の摂取量は以下の通りです。
| 栄養素 | 必要摂取量 | 上限量 | この食事での摂取量 |
|---|---|---|---|
| カロリー | 2650.0 | - | 2650.0 |
| タンパク質 | 65.0 | - | 136.0 |
| 脂質 | 58.9 | - | 58.9 |
| 炭水化物 | 331.3 | - | 457.4 |
| 食物繊維 | 21.0 | - | 103.3 |
| ビタミンA | 850.0 | 2700.0 | 850.0 |
| ビタミンD | 8.5 | 100.0 | 8.5 |
| ビタミンE | 6.0 | 850.0 | 24.2 |
| ビタミンK | 150.0 | - | 523.0 |
| ビタミンB1 | 1.4 | - | 3.2 |
| ビタミンB2 | 1.6 | - | 2.1 |
| ビタミンB6 | 1.4 | 55.0 | 2.7 |
| ビタミンB12 | 2.4 | - | 2.4 |
| ナイアシン | 15.0 | 300.0 | 37.8 |
| 葉酸 | 240.0 | 900.0 | 784.7 |
| パントテン酸 | 5.0 | - | 9.6 |
| ビオチン | 50.0 | - | 121.3 |
| ビタミンC | 100.0 | - | 100.0 |
| ナトリウム | 7.5 | - | 7.5 |
| カリウム | 2500.0 | - | 7050.3 |
| カルシウム | 800.0 | 2500.0 | 800.0 |
| マグネシウム | 340.0 | - | 825.9 |
| リン | 1000.0 | 3000.0 | 2371.3 |
| 鉄 | 7.5 | 50.0 | 34.0 |
| 亜鉛 | 11.0 | 40.0 | 20.2 |
| 銅 | 0.9 | 7.0 | 5.4 |
| マンガン | 4.0 | 11.0 | 10.2 |
| ヨウ素 | 130.0 | 3000.0 | 130.0 |
| セレン | 30.0 | 450.0 | 117.4 |
| クロム | 10.0 | 500.0 | 16.7 |
| モリブデン | 30.0 | 600.0 | 600.0 |
当然ですが全ての必要摂取量を満たしており、上限量がある栄養素は上限量を越えないようになっています。多くの栄養素は必要摂取量に近い量を摂取していますが、葉酸・カリウム・モリブデンなど必要以上に摂取している栄養素も見られます。
日本のアーティスト名は英語と日本語どちらが多いのか
日本のアーティスト名は、SMAP・B'zのようなアルファベットのパターン、嵐・米津玄師のような漢字のパターン、AKB48のようなアルファベットと数字が混ざったパターンなど、様々なパターンが存在します。
ではどのパターンが最も多いのでしょうか?
日本人アーティスト名のパターンを分析してみましょう。
データ
日本人アーティストの一覧データはこちらのサイトから抽出します。記載されている3653組のアーティストを今回の分析対象とします。
抽出方法はこちらのサイトを参考にしました。
前処理
上記サイトのコードを使用すると、以下のデータが抽出できるので、ここから名前のパターンを判別したいと思います。

文字列の種類としては、アルファベット・漢字・カタカナ・ひらがな・数字があり得るので、これらの内どれが使われているかを判別します。
2種類以上使われている場合は「漢字+ひらがな」のように+で繋いで表現します。
↓文字列パターンを作成するコード
def get_character_type(input_string):
# 正規表現パターンを定義
kanji_pattern = '[\u4E00-\u9FFF]+' # 漢字
katakana_pattern = '[\u30A0-\u30FF]+' # カタカナ
hiragana_pattern = '[\u3040-\u309F]+' # ひらがな
alphabet_pattern = '[a-zA-Z]+' # アルファベット
numeric_pattern = '[0-9]+' # 数字
# 文字列が特定の文字種か判定
if re.fullmatch(kanji_pattern, input_string):
return "漢字"
elif re.fullmatch(katakana_pattern, input_string):
return "カタカナ"
elif re.fullmatch(hiragana_pattern, input_string):
return "ひらがな"
elif re.fullmatch(alphabet_pattern, input_string):
return "アルファベット"
elif re.fullmatch(numeric_pattern, input_string):
return "数字"
else:
# 複合の場合、どの文字種が混じっているか判定
combinations = []
if re.search(kanji_pattern, input_string):
combinations.append("漢字")
if re.search(katakana_pattern, input_string):
combinations.append("カタカナ")
if re.search(hiragana_pattern, input_string):
combinations.append("ひらがな")
if re.search(alphabet_pattern, input_string):
combinations.append("アルファベット")
if re.search(numeric_pattern, input_string):
combinations.append("数字")
return " + ".join(combinations)
df['pattern'] = df['name'].apply(get_character_type)
無事以下のようにパターンが判別できました。

可視化
日本語vs英語
まずは、英語(アルファベット)と日本語(漢字、ひらがな、カタカナ)ではどちらが多いのかを確認します。
※数字を含む場合は、「アルファベット+数字」なら「英語」に、「日本語+数字」でなら「日本語」に分類します。

日本語より英語の方が多いようです。
また、「日本語+英語」のパターンも3%だけ存在します。
日本語の中でも、漢字・カタカナ・ひらがな・それらの組み合わせ等のパターンが存在するので、各パターンの数を可視化してみます。

最も多いのは「アルファベットのみ」のパターンで、2番目に多いのは「漢字のみ」のパターンのようです。
(アルファベットのみ) SMAP、B'z、X Japanなど
(漢字のみ) 嵐、米津玄師、安室奈美恵など
3番目以下のパターンも見てましょう。
宇多田ヒカル vs 浜崎あゆみ
「宇多田ヒカル」のような「漢字+カタカナ」のパターンと、「浜崎あゆみ」のような「漢字+ひらがな」のパターンはほぼ同数のようです。

ゆず vs コブクロ
「ゆず」のような「ひらがなのみ」のパターンと、「コブクロ」のような「カタカナのみ」のパターンでは、「カタカナのみ」のパターンの方が圧倒的に多いようです。

数字
次に「AKB48」のような名前に数字を含むアーティストについて見てみます。

数字を含むアーティストは僅か3%のようです。
中でも「ひらがな+数字」のパターンは「かりゆし58」のみでした。

また、「5050」や「345」のような数字だけのアーティストも存在するようです。

まとめ
今回はアーティスト名のパターンを分析しました。男女別や、ソロorグループで名前のパターンに傾向があるのかを深掘りするのも面白そうですね。
- 英語と日本語では英語の方が多い
- パターンとしては多い順に、アルファベット・漢字・カタカナである
- 数字を含むアーティストは3%のみ
サッカー代表ユニフォームは何色が多いのか
日本代表のユニフォームは「サムライブルー」と呼ばれる青色を基調としています。他に青色のユニフォームの国としてはフランスやイタリアがあります。一方で、これらの国以外に青色のユニフォームの国は思い浮かびますでしょうか?私は思い浮かびませんでした。
「もしかするとユニフォームが青色の国は少ないのでは?」
「最も多く使われているのは何色なのだろう?」
という疑問を持ったので、世界各国のサッカー代表ユニフォームの色について分析してみることにしました。
データ
各国の最新の代表ユニフォームは以下のサイトに掲載されています。しかし、ユニフォーム情報はテキストではなく画像データのため、色の分析を行うのには向いていません。画像データから画像処理で色を抽出して、テキストデータに変換する方法もありますが、時間がかかるため他のデータを探してみます。
soccer-uniform-11.blogspot.com
ユニフォームの色をテキストデータとして持っている以下のサイトを見つけました。最新更新日が2016年と少し古いですが、データの扱いやすさから、今回はこちらのサイトのデータを使用することにします。
可視化
地図を用いた可視化を行いため、今回はTableauを使用します。
まずは、どの色が多いのかを可視化してみます。

赤が突出して多いようです。
(赤色の国) スペイン、ベルギー、スイス、デンマーク、中国、カナダ、チリ
この他にも、社会主義の国は全て赤色ですね。
また、当初は少ないかもと思っていた青色ですが、意外にも2番目に多いことが分かりました。
(青色の国) アイスランド、エストニア、ギリシャ、カンボジア、コンゴ民主共和国
マニアックな色としてはターコイズと灰色がそれぞれ1カ国だけ存在します。
(ターコイズの国) タークス・カイコス諸島
(灰色の国) ニューカレドニア

次に、大陸別に色の傾向はあるのかを見てみましょう。

- アジア:赤が多い。
- アフリカ:緑が多い。
- 南アメリカ:黄色が多い
大陸によってはよく使われている色があるようです。
最後に、世界地図上で可視化してみます。

全体的に赤色が多く、アフリカでは緑色が多いことが地図からも見て取れますね。
まとめ
今回はサッカーの代表ユニフォームの色について分析しました。
- 赤色が最も多い
- 日本と同じ青色は2番目に多い
- 大陸によっては、よく使われる色がある
色ごとに使われている頻度や大陸の傾向があることが分かったので、次は各国のクラブチームのユニフォームに関して分析するのも面白そうですね。
Wingspan攻略記~捕食の成功率~
私がよくプレイする鳥の一つにハイイロチュウヒがいます。

同様の効果を持つ鳥は他にも
がいます。
引いたカードが75cm未満なら1点入り、割と成功確率が高い印象なのですが、実際の成功率はどれくらいなのかを算出してみることにしました。
まずは翼長の分布図を見てみます。

翼長は左に偏りがある分布となっています。翼長の大きい猛禽類よりも、小鳥の方が多いことからも納得できるかと思います。
次に具体的な75cm未満の鳥の枚数を算出してみます。
75cm未満の枚数:318枚(446枚中)
成功率:71%(317/445) ※自分自身は除くため
成功確率は7割以上!
どうりでよく成功するなと思いました。
捕食効果を持つ鳥は75cm未満以外にもいるので、それらの成功率も合わせて算出してみます。
| 名称 | 翼長 | 枚数 | 成功率 |
|---|---|---|---|
| ハイイロモズガラス | 40cm未満 | 206 | 46% |
| オオミチバシリ | 50cm未満 | 249 | 56% |
| ハイイロチュウヒ等 | 75cm未満 | 318 | 71% |
| イヌワシ等 | 100cm未満 | 355 | 80% |
| オナガイヌワシ | 66cm以上 | 154 | 34% |
50cm未満となると、成功率は一気に下がりますね。
一方、100cm未満の鳥は餌コストが3で大きい割に、成功率は10%程度しか増えないようです。
ハイイロチュウヒの偉大さが証明できました!
各都道府県の出身者数を算出してみた
皆さんは自分の都道府県の出身者数が何人くらいなのかを知っていますでしょうか?
都道府県別の人口は見たことあっても、出身者数となると意外と知らないのではないのでしょうか?
実はそれもその筈で、都道府県別の人口はe-Statでもデータが公開されているのですが、出身者数に関してはデータがないのです。

Googleで「都道府県別 出身者数」「〇〇県 出身者数」と検索してみても、ヒットするのは芸能人やスポーツ選手の都道府県別出身者数です。
そこで今回は、都道府県別の出身者数を算出してみようと思います。
使用データ
出身者数を直接表すデータはないので、別のデータを使って出身者数を間接的に推測します。出身者数に関連するデータとしては、出生数があります。e-Statでは都道府県毎の年度別出生数データが公開されているので、こちらを使用します。

算出方法
出身者数を算出するには、年度毎の出生数を合計した後、年度毎の死亡者数を引くのが理論的には正しいです。一方で、各年度の出生者が現在も生存しているのか、死亡しているのかのデータは存在しません。そこで今回は死亡者数の代わりに、平均寿命を用います。日本人の平均寿命は約84歳なので、「84年以内に生まれた人は今も全員生きていて、84年以上前に生まれた人は全員死んでいる」と仮定して、84年以内の出生数のみを合計します。
※現時点の平均寿命は84歳ですが、昔は平均寿命がもう少し低かったことを考慮して、実際には84年以内ではなく81年以内に生まれた人だけを合計することにします。
データ前処理
出生数を調査する「人口動態調査」は毎年ではなく、5年毎に行われるため、人口動態調査が実施されない都市の出生数は欠損しています。
5年では出生数は大きく変化しないと仮定して、欠損している年度は直近の年度の値で補完することにします。

また、沖縄県のみ日本に変換される前である1972年以前のデータは記載されていません。こちらは1975年の値で補完することにします。

可視化
前処理したデータの年度を合計して、出身者数を算出します。
123768672人
でした。日本の人口が1億2397万人なので、ほぼ近い数字になっています。
次に今回の目的である都道府県毎の出身者数を算出します。
| 都道府県 | 人口 | 出身者数 |
|---|---|---|
| 北海道 | 5320000 | 5974744 |
| 青森県 | 1230000 | 1765814 |
| 岩手県 | 1210000 | 1655992 |
| 宮城県 | 2330000 | 2343121 |
| 秋田県 | 950000 | 1400236 |
| 山形県 | 1090000 | 1415965 |
| 福島県 | 1790000 | 2480052 |
| 茨城県 | 2890000 | 2839731 |
| 栃木県 | 1970000 | 2064616 |
| 群馬県 | 1910000 | 2052675 |
| 埼玉県 | 7260000 | 5341592 |
| 千葉県 | 6220000 | 4575807 |
| 東京都 | 13900000 | 11281947 |
| 神奈川県 | 9270000 | 6665917 |
| 新潟県 | 2210000 | 2800642 |
| 富山県 | 1040000 | 1216163 |
| 石川県 | 1130000 | 1260091 |
| 福井県 | 760000 | 915397 |
| 山梨県 | 820000 | 918284 |
| 長野県 | 2050000 | 2268384 |
| 岐阜県 | 1960000 | 2107309 |
| 静岡県 | 3700000 | 3729934 |
| 愛知県 | 7550000 | 6631648 |
| 三重県 | 1810000 | 1821668 |
| 滋賀県 | 1420000 | 1240195 |
| 京都府 | 2580000 | 2430549 |
| 大阪府 | 8830000 | 8064408 |
| 兵庫県 | 5530000 | 5222556 |
| 奈良県 | 1370000 | 1153375 |
| 和歌山県 | 930000 | 1119506 |
| 鳥取県 | 550000 | 670134 |
| 島根県 | 670000 | 916427 |
| 岡山県 | 1910000 | 2009593 |
| 広島県 | 2800000 | 2884048 |
| 山口県 | 1350000 | 1682398 |
| 徳島県 | 730000 | 944408 |
| 香川県 | 970000 | 1092837 |
| 愛媛県 | 1340000 | 1715578 |
| 高知県 | 680000 | 878116 |
| 福岡県 | 5100000 | 5068072 |
| 佐賀県 | 820000 | 1100188 |
| 長崎県 | 1320000 | 1986559 |
| 熊本県 | 1740000 | 2161311 |
| 大分県 | 1160000 | 1399532 |
| 宮崎県 | 1070000 | 1396178 |
| 鹿児島県 | 1360000 | 2164226 |
| 沖縄県 | 1440000 | 1589508 |
数値だけでは分かりにくいので、人口と出身者数の差も可視化してみます。

青色は人口より出身者が少ない県を、赤色は人口より出身者が多い県を表しています。
首都圏は人口と出身者数に大きく乖離があることがわかりますね。また、宮城・静岡・三重のように出身者数と人口が大体同じくらいの都道府県も存在します。
まとめ
今回は出生数を用いて、各都道府県の出身者数を算出しました。
次はもう少し深掘りして、「自分の県にはどの県の出身者が多いのか」、「東京在住者の内、東京出身者はどれくらいいるのか」を分析してみるのも面白そうですね。
ピン芸人とコンビはどちらが多いのか?
ある日お笑い番組を見ていると、ふとこんな疑問が湧きました。
「ピン芸人とコンビはどちらが多いんだろうか?」
テレビを見ている限りではピン芸人よりもコンビの方が圧倒的に多い印象です。
一方で、コンビは相方を探す必要があるのに対して、ピン芸人は一人で出来るため、芸人になるハードルが低いのも事実です。
テレビに出ていないから知られてないだけで、もしかしたらピン芸人もかなりの数がいるのでしょうか?
そこで、データを分析してピン芸人とコンビの数を分析してみることにしました。
まずは入手しやすいデータとして、漫才の大会であるM1と、ピン芸の大会であるR1の出場者数を比較してみましょう。
2023年のエントリー数
M1:8540組
R1:3537名
M1の方が倍以上多いですね。
一方で、「M1(or R1)のエントリー数 = 芸人の数」という訳でもありません。
- 芸歴制限があるため、ベテラン芸人は出場していない
- 誰でも出れるため、本業が芸人じゃない人も出場している(例) Youtuber,ホリエモンなど
M1やR1の参加者数ではなく、芸人のデータはないか探してみると、以下のサイトが見つかりました。
そこで今回はこちらのデータを使用して、ピン芸人とコンビの数を数えたいと思います。
こちらのサイトに掲載されている芸人の数は
2362組
となっていました。R1の参加者数よりも少ないですね。本業が芸人の人に絞ると、これくらいの数字なのでしょうか。
次に、2362組の内、ピンとコンビの割合を可視化してみます。

なんと、僅かながらピン芸人の方が多いです。
また、ピンとコンビ以外にはトリオも存在しますが、トリオは全体の5%しかいません。テレビではトリオはよく見かけますが、数としては思ったよりも少ないんですね。
次に、芸人の所属事務所の割合も見てみましょう。

1番多いのはやはり吉本興業ですね。
一方で、25%は未所属となっています。
事務所に所属しているか未所属なのかを切り分けて、ピンとコンビの割合を算出し直してみましょう。

先ほどと割合が変わりました。
事務所所属の芸人だけで見ると、ピンよりもコンビの方が多いようです。
テレビで見かける割合に近いですね(それでもまだピン芸人の割合が多い気がしますが)。
一方で、未所属の芸人はピンの割合が71%と大多数を占めています。
最後に、事務所別で見た時に、ピン・コンビ・トリオの割合の違いはあるのかを見てみましょう。


ピン芸人の割合が最も多く、コンビの割合が少ないのは「太田プロダクション」のようです。
太田プロ所属のピン芸人:有吉弘行、劇団ひとり、土田晃之

トリオはそもそも全芸人の5%と少ないのですが、「プロダクション人力舎」はトリオの割合が10%と突出して多いです。
これは人力舎が「コントの人力舎」と呼ばれるように、コントを中心とする芸人が集まる事務所だからです。コントの性質上必然的にトリオの割合が他事務所より多いと考えられます。
※余談ですが私の弟もコントをやりたくて人力舎の養成所に入っていました(トリオではなくコンビでしたが)。
まとめ
