tropicbirdのブログ

備忘録です。

KaggleのランキングTOP1000(2021年10月4日時点)を調べてみた

はじめに

KaggleのCompetition ランキングのユーザーの属性が気になって調べてみたら、5年前の分析結果(Top-100 Kaggle users by Country)しか見つからなかったので、2021年10月4日時点のCompetitionランキングのTOP1000のユーザーデータをスクレイピングしました。抽出したデータはKaggleのDataset(https://www.kaggle.com/hdsk38/comp-top-1000-data)として公開しています。

⚠️ 注意点
データは2021年10月4日時点のTOP1000ですので、Grandmasterでもコンペがご無沙汰のユーザーは圏外になっています。逆を言うと、「今」のKaggle情勢を示すデータです。

結果(概略)

TOP100ユーザーの国別上位

1位.日本(21名)
2位.アメリカ(14名)
3位.インド、中国、ベトナム(6名、同率)

TOP100ユーザーの数の上位企業

1位.H2O.AI、NVIDIA(8名、同率)
3位.Rist 、Nodalpoint systems、DeNA(2名、同率)

TOP1000ユーザーの国別上位

1位.日本(232名、23.2%)
2位.アメリカ(123名、12.3%)
3位.中国(101名、10.1%)

TOP1000の日本在住ユーザー232名の都道府県の上位

1位.東京(144名、62 %)
2位.神奈川(31名、13 %)
3位.大阪(8名、3 %)

TOP1000の日本在住ユーザー232名の所属組織の上位

1位.DeNA(12名)
2位.Preferred Networks(10名)
3位.Rist(5名)
※なお所属組織非公開ユーザーは半数以上の125名

TOP1000の日本在住ユーザー232名の金メダル数の上位企業

1位.Preferred Networks(43個)
2位.DeNA(39個)
3位.Rist(19個)

TOP1000の日本在住ユーザー232名のポイント数の上位企業

1位.DeNA(293,626 pt)
2位.Preferred Networks(198,779 pt)
3位.Rist(171,641 pt)

結果(詳細)

ライブラリの読み込み

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
from plotly.offline import init_notebook_mode, iplot, plot
import plotly as py
init_notebook_mode(connected=True)
import plotly.graph_objs as go
import matplotlib.pyplot as plt

データの読み込み

df=pd.read_csv('../input/comp-top-1000-data/top_1000_comp_data.csv')

作図する関数の作成

def bar_plotting(x,y,title):
    trace1 = go.Bar(
                x = x,
                y = y,
                marker = dict(color = 'rgba(255, 174, 255, 0.5)',
                             line=dict(color='rgb(0,0,0)',width=0.5)),
                text = y,)
    layout = go.Layout(barmode = "group")
    fig = go.Figure(data = trace1, layout = layout)
    fig.update_traces(textposition='outside')
    fig.update_layout(
        margin=dict(l=20, r=20, t=40, b=20),
        paper_bgcolor="LightSteelBlue",
        title_text= title,
        title_font_size=20
    )
    fig.update_xaxes(
        tickangle = 90)
    iplot(fig)

国別TOP100

bar_plotting(df[:100].country.value_counts().index,
             df[:100].country.value_counts().values,
             "Countries of top 100 competitors (as of October 4, 2021)")

f:id:tropicbird:20211007210726p:plain

国別TOP1,000

bar_plotting(df.country.value_counts().index,
             df.country.value_counts().values,
             "Countries of top 1000 competitors (as of October 4, 2021)")

f:id:tropicbird:20211007210738p:plain

都道府県別(※TOP1,000に入っている日本在住ユーザー)

bar_plotting(df[df['country']=='Japan'].region.value_counts().index,
             df[df['country']=='Japan'].region.value_counts().values,
             f"Regions in Japan of those who are in top 1000 (n={len(df[df['country']=='Japan'])}, as of October 4, 2021)")

f:id:tropicbird:20211007210803p:plain

所属組織別(※TOP1,000に入っている日本在住ユーザー)

TOP1,000に入っている日本在住ユーザーの所属組織について整理しました。表記ゆれがあるので、まずはユニークな組織を確認します。

print(set(df[df['country']=='Japan'].organization))
{'Recruit Co. Ltd', 'EBILAB', 'kgs go server', 'Operating Room', 'nssol', 'GMO Research, Inc.', 'a JTC', 'ad agency', ' MC Digital, Inc.', 'Microsoft', 'HIOKI E.E.Corporation', 'Yachiyo Engineering Co., Ltd.', 'Astellas  Pharma', 'Rist', 'Hewlett-Packard Japan', 'Research & Technologies company', 'Rist. Z by HP & NVIDIA Data Science Global Ambassador', 'a consulting firm', 'Kyushu', 'Hiroshima Univ.', 'DeNA/Mobility Technologies', 'Keio University', ' Cat cafe', 'XXX', 'DataRobot Japan', 'my home', 'CARTA HOLDINGS', 'University', 'CG production company', 'Consulting company', 'Spectra-Pyisics', '.', 'Fixstars Corp.', 'MNES', 'mixi, Inc', 'Jananese company', 'HOME', 'Kyushu University', ' ', 'ExaWizards', 'Canon Inc.', 'Tokyo Tech', 'general hospital', 'Panasonic Information Systems', '...', 'AXA Life Japan', 'Yahoo! Japan', 'an EC company', 'justforfun', 'Japan Research Institute, Limited', 'GMO Internet', 'Japanese Tech Company', 'GiXo', 'Osaka University', 'japanese company', 'Kyoto', 'Pharmaceutical Company', 'SYS', 'Automaker', 'DMM.com', 'AWS Japan', 'IIT corp', 'DeNA', 'quantum', 'Mitsubishi Electric', 'Mobility Technologies Co., Ltd.', 'Preferred Networks, Inc.', 'UCIrvine', 'Acroquest Technology Co. Ltd.', 'UNKOWN', 'Preferred Networks', 'Japanese Company', 'Technology company', 'consumer electronics company', 'DeNA / Mobility Technologies', 'LINE corp.', 'DentsuDigital', '-----', 'Financial Company', 'astamuse', 'home', 'Kyoto University', 'a', '\u3000', 'EC Service', 'the University of Tokyo', 'hoge', 'VFA', 'Preferred Networks, inc.', ' IT company', 'Automotive Components Manufacturer ', '---', 'Tokyo', 'Aillis Inc.', 'a media company', 'Archaic', 'data-refinement', 'Japanese company', 'Bank', 'Universal Knowledge Inc.', 'Rist Inc.', 'Waseda University', ' Hitachi Ltd.', 'sole proprietorship', 'NVIDIA', 'Recruit', 'human being', 'University of Tsukuba', 'Araya Inc.', 'BioInformatics', 'graduate school', 'Life Insurance Company', 'DeNA Co., Ltd', 'Tech company', 'Mobility Technologies', 'Amazon Web Services', 'NTT DATA', 'Japan', 'Japanese Traditional Company', 'General companies', 'fuga', 'KLTD', 'National Diet Library(国立国会図書館)', 'JTC', 'University of Tokyo', 'a company', ' In the stomach of mom', 'MC Digital, Mitsubishi Group', 'NSSOL', 'Automotive Industry', 'KIOXIA', 'Udacity', 'BrainPad', 'AI Shift', 'THIRD INC.', 'manufacturing company'}

表記ゆれについては、一意の名称に変更し、組織名不明な場合はUNKWONに置き換えます。下記の置換対応は完璧ではないと思うので、漏れや誤りがあればご指摘ください。Kaggle上は組織名不明でもLinkedInのプロフィール等を調べられば組織名が分かるユーザーもいますが、そこまでは対応できていません。

dic_replace={' ':'UNKOWN',
 ' Cat cafe':'UNKOWN',
 ' IT company':'UNKOWN',
 ' In the stomach of mom':'UNKOWN',
 '---':'UNKOWN',
 '-----':'UNKOWN',
 '.':'UNKOWN',
 '...':'UNKOWN',
 'Automaker':'UNKOWN',
 'Automotive Components Manufacturer ':'UNKOWN',
 'Automotive Industry':'UNKOWN',
 'Bank':'UNKOWN',
 'BioInformatics':'UNKOWN',
 'DeNA':'DeNA Co., Ltd',
 'DeNA / Mobility Technologies':'DeNA Co., Ltd',
 'DeNA/Mobility Technologies':'DeNA Co., Ltd',
 'EC Service':'UNKOWN',
 'Financial Company':'UNKOWN',
 'GMO Internet':'GMO Internet Group',
 'GMO Research, Inc.':'GMO Internet Group',
 'General companies':'UNKOWN',
 'HOME':'UNKOWN',
 'JTC':'UNKOWN',
 'Jananese company':'UNKOWN',
 'Japan':'UNKOWN',
 'Japanese Company':'UNKOWN',
 'Japanese Tech Company':'UNKOWN',
 'Japanese Traditional Company':'UNKOWN',
 'Japanese company':'UNKOWN',
 'Kyoto':'Kyoto University',
 'Kyushu':'Kyushu University',
 'Life Insurance Company':'UNKOWN',
 'Mobility Technologies':'DeNA Co., Ltd',
 'Mobility Technologies Co., Ltd.':'DeNA Co., Ltd',
 'Operating Room':'UNKOWN',
 'Pharmaceutical Company':'UNKOWN',
 'Preferred Networks':'Preferred Networks, Inc.',
 'Preferred Networks, inc.':'Preferred Networks, Inc.',
 'Recruit':'Recruit Co. Ltd',
 'Research & Technologies company':'UNKOWN',
 'Rist':'Rist Inc.',
 'Rist. Z by HP & NVIDIA Data Science Global Ambassador':'Rist Inc.',
 'Tech company':'UNKOWN',
 'Technology company':'UNKOWN',
 'Tokyo':'UNKOWN',
 'University':'UNKOWN',
 'a':'UNKOWN',
 'a JTC':'UNKOWN',
 'a company':'UNKOWN',
 'a consulting firm':'UNKOWN',
 'a media company':'UNKOWN',
 'ad agency':'UNKOWN',
 'an EC company':'UNKOWN',
 'consumer electronics company':'UNKOWN',
 'fuga':'UNKOWN',
 'general hospital':'UNKOWN',
 'graduate school':'UNKOWN',
 'hoge':'UNKOWN',
 'home':'UNKOWN',
 'human being':'UNKOWN',
 'japanese company':'UNKOWN',
 'justforfun':'UNKOWN',
 'manufacturing company':'UNKOWN',
 'my home':'UNKOWN',
 'the University of Tokyo':'University of Tokyo',
 '\u3000':'UNKOWN'
}
df['organization']=df['organization'].replace(dic_replace)
data=df[df['country']=='Japan'].organization.value_counts()
data=data.append(pd.Series([len(data[data==1])],index=['Others (one person per organization)']))
data=data[data>1]
bar_plotting(data.index,
             data.values,
             f"Organizations in Japan of those who are in top 1000 (n={len(df[df['country']=='Japan'])},as of October 4, 2021)")

f:id:tropicbird:20211007211331p:plain
TOP1000に2名以上いる組織をプロットしました。所属組織非公開(UNKWON)のユーザーが125名(対象232名の54%)もいるので、実は他にも多くのKgglerがいる組織もあるかもしれません。ちなみに、ランクイン1名の組織はOthersはまとめています。

所属組織別メダル数&ポイント数(※TOP1000の日本在住ユーザー)

TOP1000の日本在住ユーザーの所属組織別のメダル数の上位10位を見てみます。金メダル数ではPreferred Networks、ポイント数ではDeNAが1位でした。

display(df[df['country']=='Japan'].groupby('organization').sum()\
        [['gold','silver','bronze','points']].sort_values(by='gold',ascending=False)\
        .drop(labels='UNKOWN')[:10])
display(df[df['country']=='Japan'].groupby('organization').sum()\
        [['gold','silver','bronze','points']].sort_values(by='points',ascending=False)\
        .drop(labels='UNKOWN')[:10])

金メダル数TOP10
f:id:tropicbird:20211008214019p:plain

ポイント数TOP10
f:id:tropicbird:20211008214032p:plain

最後にTOP100ユーザーの所属組織を見てみます。

df['organization']=df['organization'].str.upper()
#TOP100ユーザーの組織一覧の表示
print(set(df[:100].organization))
#表記ゆれを修正
org_replace_top100={
 'H2O':'H2O.AI',
 'H2O AI':'H2O.AI',
 'KAGGLE':'UNKOWN',
}
df['organization']=df['organization'].replace(org_replace_top100)
data=df[:100].organization.value_counts()
data=data.append(pd.Series([len(data[data==1])],index=['Others (one person per organization)']))
data=data[data>1]
bar_plotting(data.index,
             data.values,
             f"Organizations of those who are in top 100 (as of October 4, 2021)")
{'H2O AI', nan, 'HA NOI UNIVERSITY OF SCIENCE AND TECHNOLOGY', 'TOPCON POSITIONING SYSTEMS', 'MOSCOW STATE UNIVERSITY', "BRIGHAM & WOMEN'S HOSPITAL", 'MAPBOX', '403', 'STEALTH STARTUP', 'DENA CO., LTD', 'H2O', 'KAGGLE', 'O', '-', 'ACROQUEST TECHNOLOGY CO. LTD.', 'YUAN', 'NSSOL', 'NODALPOINT SYSTEMS', 'AACHEN', 'KYOTO UNIVERSITY', 'O.O', 'DAMAE MEDICAL', 'QUANTUM', 'AILLIS INC.', 'DSC ENERGY ANALYTICS', 'VECXOZLAB', 'LINE CORP.', 'IAG', 'AGODA', 'MIPT', 'BAIDU', 'ZALO', 'INTELECY', 'NETAJI SUBASH UNIVERSITY OF TECHNOLOGY, DELHI', 'PREFERRED NETWORKS, INC.', ' HOME', 'TIETO LATVIA', 'RIST INC.', 'UPSTAGE AI', 'PREVISION.IO', 'DIDI', 'STEALTH', 'HOGWARTS', 'UMICH', 'CANON INC.', 'PRAXIS PIONEERING', 'INT', 'MYSELF', 'KHUMBU.AI', 'UNIVERSAL KNOWLEDGE INC.', 'XXX', 'EMBIBE', 'VINGROUP BIG DATA', 'JIO SAAVN', 'CLAIRVOYANT.AI', 'IPPM RAS', 'HIOKI E.E.CORPORATION', 'WASEDA UNIVERSITY', 'NVIDIA', 'UNKOWN', 'SAMSUNG ELECTRONICS', 'SEOUL NATIONAL UNIVERSITY', 'OKCREDIT', 'GRUPO AIA', 'H2O.AI'}

f:id:tropicbird:20211008215132p:plain
予想通りといいますか、NVIDIAとH2O.aiは強いですね。

おわり