技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

Pandas の練習がてら、勉強会のトレンドを探ってみた

この辺の続きです。

white-azalea.hatenablog.jp

4月の勉強会の開催状況と、事前申し込みの状況を眺めてみたが正解。

勉強会情報を拾ってくる

前回の流れですが、2サイト以上でやるので、少しだけ汎用化を考えてみた。
調べてみたら、ATND と COMPASSAPI仕様がほぼ同一だった。

まずは共通の定義を用意して

import requests
import sys

class ClassRoom:
    def __init__(self, title, limit, accepted, waiting):
        def or_zero(v):
            if isinstance(v, int):
                return v
            return 0
        self.title = title
        self.limit = or_zero(limit)
        self.joins = or_zero(accepted) + or_zero(waiting)

    def __str__(self):
        return f'ClassRoom({self.title}, {self.limit}, {self.joins})'


class ClassRoomLoader:
    def load_class_rooms(self, month: str) -> list:
        pass


class AbstractCompassAtnd(ClassRoomLoader):
    def __init__(self, api_url: str, max_event_num: int):
        self.api_url = api_url
        self.max_event_num = max_event_num


    def create_request_parameter(self, target_month: str, top: int):
        return {"ym": target_month, "count": self.max_event_num, "format": "json", "start": top}


    def request_to_compass(self, target_month: str, top: int) -> requests.Response:
        params = self.create_request_parameter(target_month, top)
        query = '&'.join([f'{key}={params[key]}' for key in params.keys()])
        print(f'Request: {self.api_url}?{query}')
        return requests.get(self.api_url + '?' + query)


    def convert(self, event) -> ClassRoom:
        try:
            return ClassRoom(event['title'], event['limit'], event['accepted'], event['waiting'])
        except:
            print(f'Error: {sys.exc_info()[0]}')
            print(f'Value: {event}')
            raise Exception('Cannot convert')


    def load_request(self, target_month: str, top: int):
        class_rooms = []
        r_get = self.request_to_compass(target_month, top)
        print(r_get.status_code)

        respond_json = r_get.json()

        for ev in respond_json['events']:
            class_rooms.append(self.convert(ev))

        return (respond_json['results_returned'], class_rooms)


    def load_class_rooms(self, month: str) -> list:
        getted = self.max_event_num
        current_top = 1
        class_rooms = []
        request = 0

        while getted == self.max_event_num:  # 最大数以下が返ってきている == まだ次がある
            request += 1

            getted, tmp_rooms = self.load_request(month, current_top)
            current_top += self.max_event_num
            class_rooms.extend(tmp_rooms)

            print(
                f'Request: {request}, Return: {getted}, currentTop: {current_top}')

        return class_rooms

単純に読み込む。
尚、読み取った勉強会情報は、pickle でダンプしておく。

class AtndLoader(AbstractCompassAtnd):
    COMPASS_API = 'http://api.atnd.org/events/'
    WANT_EVENT_NUM = 100

    def __init__(self):
        super().__init__(AtndLoader.COMPASS_API, AtndLoader.WANT_EVENT_NUM)

    def convert(self, event) -> ClassRoom:
        return super().convert(event['event'])

    def create_request_parameter(self, target_month: str, top: int):
        return {"ym": target_month, "count": self.max_event_num, "format": "json", "start": top}



class CompassLoader(AbstractCompassAtnd):
    COMPASS_API = 'https://connpass.com/api/v1/event/'
    WANT_EVENT_NUM = 100

    def __init__(self):
        super().__init__(CompassLoader.COMPASS_API, CompassLoader.WANT_EVENT_NUM)

    def create_request_parameter(self, target_month: str, top: int):
        return {"ym": target_month, "count": self.max_event_num, "order": 1, "start": top}

# import pickle for backup dump.
import pickle
if __name__ == "__main__":
    class_rooms = AtndLoader().load_class_rooms("201904")
    class_rooms.extend(CompassLoader().load_class_rooms("201904"))
    with open('backup.pickle', 'wb') as f:
        pickle.dump(class_rooms, f)
    print("\n".join([str(s) for s in class_rooms]))

まずはライブラリのインポート

# Load class room dump.
import pickle

# Regex
import re

# Import class room
from class_rooms import ClassRoom

# pandas セット
import pandas as pd
from pandas import DataFrame
import numpy as np

# pip install janome
from janome.tokenizer import Tokenizer

勉強会データの読み込みと、データ加工の準備

勉強会の名称バックアップを読み込んで

# load class rooms
class_rooms = []
with open('backup.pickle', 'rb') as f:
    class_rooms.extend(pickle.load(f))

品詞分解後の格納リストを用意する

# to lists
tokenized_list = []

# Tokenized
cur_idx = 0
tokenizer = Tokenizer()

記録したく無い名前(ここでは「数字記号のみ」「テコンドー」「練習」みたいな名詞は無視+一文字はキーワードと認めない)を決め打ちする。
これだけだと、R言語とかが割を食うけど、まぁ今回は諦め。

形態素解析しながらリストを作成していく(ただし、一つの勉強会タイトル中に複数回同じ単語が出たらカウントしない)。

# ただしここで列挙されるような単語は記録しない
remove_names = ['^[0-9\/\(\)\!]+$', '[#\*]', 'テコンドー', '練習']
def is_valid(value: str):
    if len(value) <= 1:
        return False
    for r in remove_names:
        if re.match(r, value):
            return False
    return True
    

# 勉強会を形態素解析して、名詞単位の行に分割
for cr in class_rooms:
    tokens = tokenizer.tokenize(cr.title)  # 形態素解析
    already = []  # 既出名詞

    for token in tokens:
        pos = token.part_of_speech.split(',')[0]  # 品詞名取得

        if ('名詞' in pos) and (token.surface not in already) and is_valid(token.surface):
            # 新出の名詞なら
            already.append(token.surface)
            tokenized_list.append(
                [cur_idx, token.surface, cr.joins, cr.limit])
    cur_idx += 1

リスト化したら、ヘッダをつけて Pandas に食わせ、DataFrame に変換する。

# Pandas DataFrame 変換
cr_df = DataFrame(data=tokenized_list, columns=['index', 'surface', 'joins', 'limit'])
cr_df
index surface joins limit
0 0 体験 0 5
1 0 歓迎 0 5
2 0 自分 0 5
3 0 可能 0 5
4 0 東京 0 5
5 0 下北沢 0 5
6 1 パルフェ 5 120
7 1 閉館 5 120
8 1 ラスト 5 120
9 1 イベント 5 120
10 1 全館 5 120
11 1 シェア 5 120
12 1 AZITO 5 120
13 1 プレゼンツ 5 120
14 1 ファイナル 5 120
15 1 祭り 5 120
16 2 楽園 2 10
17 2 エンデューロマッドネス 2 10
18 2 体験 2 10
19 2 in 2 10
20 2 タイ 2 10
21 3 全日本 0 10
22 3 カラオケ 0 10
23 3 バトル 0 10
24 3 GP 0 10
25 3 mini 0 10
26 3 予選 0 10
27 3 兵庫 0 10
28 3 神戸 0 10
29 3 大会 0 10
... ... ... ... ...
5063 892 強化 82 55
5064 892 学習 82 55
5065 892 最適 82 55
5066 893 量子 66 55
5067 893 ゲート 66 55
5068 893 アニーリング 66 55
5069 893 プログラミング 66 55
5070 894 量子 61 55
5071 894 コンピュータ 61 55
5072 894 化学 61 55
5073 894 全般 61 55
5074 895 衛星 79 51
5075 895 画像 79 51
5076 895 地表 79 51
5077 895 物体 79 51
5078 895 認識 79 51
5079 895 分類 79 51
5080 896 年度 0 20
5081 896 オープン 0 20
5082 896 新入 0 20
5083 896 社員 0 20
5084 896 Java 0 20
5085 896 AI 0 20
5086 896 研修 0 20
5087 897 スプラウト 0 0
5088 897 rb 0 0
5089 898 関西 14 50
5090 898 日曜 14 50
5091 898 数学 14 50
5092 898 友の会 14 50

5093 rows × 4 columns

簡単にキーワード抽出

まずは際頻出キーワード集計する。
色々行なっているけど、行ごとに説明すると

  1. キーワードでグループ化+集計する。
    この時点で、「キー:件数」の pandas.Series 型に変換される。
  2. カウント数がこのままだと加工しづらいので、DataFrame に変換する。
    reset_index をしてやることで、インデックス行が自動で作成され、ちゃんと合計数に count のラベルがつく
  3. count が 10 以上の物を、逆順ソートで取得
group_sizes = cr_df.groupby('surface').size()
gs_df = DataFrame({ 'count': group_sizes }).reset_index()
gs_df[gs_df['count'] > 10].sort_values('count', ascending = False)
surface count
1319 勉強 102
746 もくもく 71
625 in 66
947 セミナー 57
1277 入門 55
1916 開催 50
1357 向け 49
1610 東京 48
1303 初心者 44
110 CoderDojo 41
21 AI 40
414 Python 40
1256 体験 37
1684 無料 36
1867 講座 35
1645 歓迎 32
723 ため 31
1226 交流 30
1086 プログラミング 30
674 vol 27
1665 活用 25
801 エンジニア 25
1402 大阪 25
1918 開発 22
1344 参加 22
1039 ビジネス 21
1863 読書 20
1017 ハンズオン 20
292 LT 20
988 デザイン 19
572 Web 19
1415 学習 19
529 Tokyo 19
321 Meetup 18
1355 名古屋 18
992 データ 17
564 Vol 17
243 IT 17
1395 大会 15
1640 機械 14
769 アプリ 14
1925 限定 13
1440 実践 13
1382 基礎 13
1790 統計 13
1534 技術 12
761 アップ 12
1204 下北沢 12
1192 ワークショップ 12
1922 関西 11
1350 可能 11
1675 渋谷 11
1631 業種 11
106 Cloud 11
427 RPA 11
1249 会場 11

この中から技術単語を拾うと

  1. AI : 40
  2. Python : 40
  3. デザイン : 19
  4. Web : 19
  5. 機械(学習) : 14
  6. 統計 : 13
  7. Clowd : 11
  8. RPA : 11

勉強会の開催頻度だけで見ると、AI(with Python)がダントツ。
どれだけ注目されているかがよくわかる。

ちなみに、「機械」に関しても以下を見ればわかるが、全て機械学習
AI と被ってる勉強会は 3 件だけなので、重複排除で見れば

  1. AI : 50
  2. Python : 40
  3. デザイン : 19
  4. Web : 19
  5. 統計 : 13
  6. Clowd : 11
  7. RPA : 11
for cr in class_rooms:
    if '機械' in cr.title:
        print(cr)
    ClassRoom(【実務で使える機械学習講座】経験豊富なデータサイエンティストが基礎から実務レベルまで教えます, 20, 0)
    ClassRoom(【初参加者向け】【少人数制】AI・機械学習と数学・プログラミングの学び方, 5, 0)
    ClassRoom(Python機械学習入門, 3, 0)
    ClassRoom(機械学習論文輪読­­会(NIPS他) by Team AI 4/10(水), 17, 4)
    ClassRoom(音 x 機械学習はどこまで実現できているか? - 最新理論とユースケース -, 25, 0)
    ClassRoom(PyData.Fukui  AI機械学習コラボでコラボ, 4, 4)
    ClassRoom(第四陣 信玄パイ「機械学習を業務で利用するのに必要なこと」, 10, 5)
    ClassRoom(【無料ワークショップ@大阪】機械学習を成功させるためのデータ前処理と特徴量エンジニアリング(再演), 66, 11)
    ClassRoom(【デモ】iPadで AI:人工知能・ML:機械学習を体験, 20, 7)
    ClassRoom([機械学習/DL/TDA]ReNom User Group (RNUG) #11, 80, 49)
    ClassRoom(第18回 機械学習超入門, 6, 4)
    ClassRoom(第17回 機械学習超入門, 6, 6)
    ClassRoom(パターン認識と機械学習(下) by Christopher M. Bishop 輪読会 #11, 12, 8)
    ClassRoom(4AI #2 - 機械学習(基礎 & 自然言語処理), 35, 5)

統計も機械学習じゃないか?と思って見てみたが、AI に関連したものは 2 件のみ。
それを移動すると

  1. AI : 52
  2. Python : 40
  3. デザイン : 19
  4. Web : 19
  5. 統計 : 11
  6. Clowd : 11
  7. RPA : 11
for cr in class_rooms:
    if '統計' in cr.title:
        print(cr)
    ClassRoom(【Facebookのデータサイエンティスト】が基礎から実務レベルまで教える統計+R講座, 20, 0)
    ClassRoom(『ベイズ統計モデリング―R,JAGS,Stanによるチュートリアル―』読書会 #16, 8, 4)
    ClassRoom(【AI】第3回 【統計・情報科学専攻】学生向け ビジネスへのAI適用勉強会 in 名古屋, 20, 0)
    ClassRoom(【AI】第1回  【統計・情報科学専攻】学生向け ビジネスへのAI適用勉強会 in 名古屋, 10, 0)
    ClassRoom(@大阪淀屋橋開催 第14回 文系のための「統計超入門セミナー」 ~目で見てわかるビジネス統計学, 6, 3)
    ClassRoom(【上級者も歓迎】ハンズオンで学ぶ実践的ベイズ統計モデリング【発展編】, 5, 2)
    ClassRoom(@大阪淀屋橋開催 第15回 文系のための「統計超入門セミナー」 ~目で見てわかるビジネス統計学, 6, 2)
    ClassRoom(@新橋回 第2回 文系のための「統計超入門セミナー」 ~目で見てわかるビジネス統計学~, 6, 3)
    ClassRoom(第211回 文系のための「統計超入門セミナー」 ~目で見てわかるビジネス統計学~, 8, 0)
    ClassRoom(第212回 文系のための「統計超入門セミナー」 ~目で見てわかるビジネス統計学~, 8, 2)
    ClassRoom(第210回 文系のための「統計超入門セミナー」 ~目で見てわかるビジネス統計学~, 8, 1)
    ClassRoom(第209回 文系のための「統計超入門セミナー」 ~目で見てわかるビジネス統計学~, 8, 0)
    ClassRoom(ゼロからまなぶ統計学(Python編), 10, 0)

勉強会のトレンドは…

機械学習(AI)で決まり というのは流石に議論の余地はなさそう。
では隠れた需要はあるのか?

つまり、勉強会自体の開催は少ないが、注目度の高いものはあるのか?

ということで考えてみる。
これは普通に考えれば、「参加したい人数/募集人数」でスコアリングしてやれば良さそうなのだけど、問題は募集人数不明の奴らである。

これはみてみると結構いる。

単純に、モールとかで開催通知だけする(何人来てもOK)もあれば、単に募集人数書いてなさそうなだけの奴もいる。

for cr in class_rooms:
    if cr.limit == 0:
        print(cr.title)
    ★第4土曜日・BACHAFIESTA NIGHT
    2019年春 M3前日飲み会
    2019年春 M3前日練習会
    ★4/27(土)28(日)29(月祝)東京ベッド『柏工場大開放セール!』
    ★4/27(土)28(日)29(月祝)フランスベッド・東京工場『ベッド・ソファセール!』
    ★4/27(土)28(日)29(月祝)カリモク家具鶴見アウトレット『理由(ワケ)ありフェア!』
    腹筋さん退職壮行会
    ★第3土曜日・FIESTAMIGOS NIGHT 
    BIT VALLEY -INSIDE- Vol.8
    ★第2土曜日・ VIENTO SALSA NIGHT
    17周年記念イベント ネットショップカンファレンス2019
    ワイワイ麻雀
    メーン会場のセルフ誕生日会 〜一斗缶ビリヤニピクニック編〜
    ★4/13(土)14(日)東京ベッド『柏工場大開放セール!』
    OSS活用勉強会 第12回(2019) 勉強会
    Arinite | Health and Safety Consultants
    アナタのための“トクベツ”なマルシェ!Dear Venus Marche VOL.5 ‐ spring ‐
    不祥事対策と「健全に儲け続けるための仕組み」の本質・課題・実効性向上策
    監査人のための職業的懐疑心・予兆把握スキルアップ講座
    「手づくりマルシェ ハルフェス2019」
    🔸4/7(日)開催!春のそろばんフェスティバル!🔸
    ★第1土曜日・ NAOBON BACHATA NIGHT
    ★4/6(土)7(日)フランスベッド・東京工場『ベッド・ソファセール!』
    ★4/6(土)7(日)カリモク家具鶴見アウトレット『理由(ワケ)ありフェア!』
    Agen Poker Online Android
    CoderDojo日進 子供向けプログラミング道場 2019/04/27
    第9回コーダー道場名護(会場:ヒューマンキャンパス高等学校・名護本校)
    第8回コーダー道場名護(会場:名護市マルチメディア館)
    BlockChain on the Cloud
    第125回オープンソースサロン
    Glodiaもくもく会 #9
    (2019/4/20PM)第71回オープンCAE勉強会@関西
    データサイエンス勉強会 第5回
    ALGYAN4周年 IoT祭り2019『IoTとAIとセキュリティ』大講演会&豪華ノベルティ抽選会!
    第16回 #hiro_it(4/14開催)
    Python for Finance読書会#7~ 第7章前半(旧fin-py読書会)
    新しい量子化学―電子構造の理論入門〈上〉輪講その12
    OpenCensus meetup vol.1
    3D CADを使いこなそう勉強会
    第16回4月ゆるもく合宿
    アジャイルコーチング読書会 第4回(外苑前)
    第12回CAE勉強会&相談会
    第2回CoderDojo小机
    【メンター、見学受付専用】第1回CoderDojo日吉
    BPLL #32
    AI・IoTを活用したい人のためのIPネットワーク入門
    もくもく執筆会☆出張版 REV.20 @ 神田神保町 〜技術系同人誌/商業誌・発表資料・ブログ〜
    第15回-Nomikai KYOTO ゲーム業界交流会
    ScratchDojo 原 …N002
    ScratchDojo 原 …N001
    第8回 CoderDojo厚木
    第39回CoderDojo浜松
    CoderDojo伊那 #001
    第86回 ProofCafe
    CoderDojo天白-N045
    CoderDojo天白-N044
    2019/4/6 CoderDojo港北ニュータウン第4回@横浜センター南駅
    Flutterもくもく自習室 in スタディプラス #2
    IBM Cloud Community Summit 2019.04 打ち合わせ #10
    IBM Cloud Community Summit 2019.04 打ち合わせ #9
    IBM Cloud Community Summit 2019.04 打ち合わせ #8
    IBM Cloud Community Summit 2019.04 打ち合わせ #7
    OSS Gate東京ミートアップ for Red Data Tools in Speee
    CoderDojo日進 子供向けプログラミング道場 2019/04/13
    ehime.rb(愛媛の地域 Ruby・Rails コミュニティ)
    Open Source UN-Conference 2019 Kawagoe 当日スタッフ集合
    第6回CoderDojoあざみ野(横浜青葉)
    プリッカソン #7 (プリリズ/プリパラ/プリチャン)
    E2F 組込みエンジニアフォーラム 第9回交流会
    【無料】第2回リスクマネジメントセミナー【恵比寿】
    AI開発カリキュラム『LAD』開講説明会
    プログラミングLT 2019
    一般社団法人PyCon JP運営会議 #29
    第22回 CoderDojo長津田
    AI実践入門!NVIDIA Jetson TX2×Azure GPU生体験ハンズオン@大阪TEQS
    IoT入門セミナー!センスウェイLoRaWANハンズオン@ひろしまCamps
    IWDD (vol.150) / アイーナ816部屋 14:00〜
    スプラウト.rb 第58回

少し乱暴だけど、平均値でも… ホワッツ!?

sum_of_limit = 0
limit_exists = 0

for cr in class_rooms:
    if cr.limit != 0:
        print(f'limit: {cr.limit},  title: {cr.title}')
        limit_exists += 1
        sum_of_limit += cr.limit

avg_limit = sum_of_limit / limit_exists
avg_limit
    limit: 5,  title: 4/30 テコンドー練習会 (体験歓迎) ~新しい自分に出会い、自分の可能性を見つけよう~ 【東京・下北沢】
    limit: 120,  title: 【4/30パルフェ閉館ラストイベント/全館シェア】寒軍AZITOプレゼンツ!ファイナル祭り!!【ありがとうございました】
中略
    limit: 10000,  title: Get the best packers and movers in India
    limit: 5,  title: ついに開催!パパが伝える!!親勉(おやべん)体験会のお知らせ
中略
    limit: 15000,  title: 2019荒木比奈生誕記念 比奈Pだらけのカラオケ大会
    limit: 7,  title: マイキャラ大戦SPRING「キラッと!マイキャラ☆ツアーズ」パート 映像出演エントリーページ
中略
    limit: 8,  title: 4/4 池袋・実践読書会 ~イケジツ読書会~ [朝活] 本を読んで実行しよう! 【東京都】
    limit: 20,  title: 現5名【4/3(水)19:30~】異業種×クリエイター交流会(吉祥寺)
    limit: 555555,  title: 4月3日(水曜)19:00~ #ナイス街 @新宿BE-WAVE 
    limit: 18,  title: 株式セミナー「立花月報(4月号)から探る活躍期待銘柄」
以下略

    739.3227771010962

どうもエンタメ系のイベントが 10000↑ (最大 55555 人)なんてアホみたいな物を拾ってる。
流石にフィルタだフィルタ。 2000 人超えたらもう IT 関係無いとみなそう。

sum_of_limit = 0
limit_exists = 0

for cr in class_rooms:
    if cr.limit != 0 and cr.limit < 2000:
        limit_exists += 1
        sum_of_limit += cr.limit

avg_limit = sum_of_limit / limit_exists
avg_limit
    32.30929095354523

OK 割と常識的になった。
では改めて募集人数に対する申し込み人数を計算してみる。

cr_list = []
for cr in class_rooms:
    limit_num = cr.limit if cr.limit > 0 else avg_limit
    cr_list.append([cr.title, float(limit_num), int(cr.joins)])

cr_df = DataFrame(data=cr_list, columns=['title', 'limit', 'joins'])

cr_df['score'] = cr_df['joins'] / cr_df['limit']
cr_df.sort_values(by='score', ascending=False).head(50)
title limit joins score
359 ALGYAN4周年 IoT祭り2019『IoTとAIとセキュリティ』大講演会&豪華ノベルティ... 32.309291 261 8.078172
655 現役社員と半日で学ぶ、開発ワークショップ!「JavaScriptテトリスを作ろう!」の会 4.000000 16 4.000000
554 濱せっく 出張版 #6 45.000000 157 3.488889
730 Vue.jsのサーバーレスアーキテクチャ /メディアサイト制作を進めるために知っておきたいこと 10.000000 30 3.000000
475 LINE Things触ってみようハンズオン 13.000000 32 2.461538
715 いま押さえておくべきJavaScriptの最新機能とは? 50.000000 104 2.080000
861 #エンジニア銭湯 26.000000 53 2.038462
744 Nerima.rb #1 10.000000 20 2.000000
788 SpringBootでマイクロサービスを作ってKubernetesにデプロイしてみる【実践編】 30.000000 58 1.933333
336 CommunitySummitTokyo #3 40.000000 75 1.875000
395 MIDIとMQTTを使ってリモート演奏する仕組みを作ってみよう 8.000000 15 1.875000
742 エンジニア向けの「ウェブ開発勉強会(HTMLから脆弱性対策まで)」@北九州開催 5.000000 9 1.800000
855 Visual Studio 2019 Launch Event in Tokyo. 90.000000 160 1.777778
271 Apache Kafka Meetup Japan #6 @Yahoo! JAPAN 91.000000 153 1.681319
716 【初心者・初学者歓迎】恵比寿で学ぶJavaScript学習会 初めて〜学び直したい人など 6.000000 10 1.666667
636 第22回 セキュリティ共有勉強会(テーマ:インシデント対応) 44.000000 69 1.568182
895 衛星画像の地表面の物体認識や二値分類機 51.000000 79 1.549020
892 ゲームで強化学習(と組合せ最適化)がんばる会5 55.000000 82 1.490909
482 【eLV勉強会】 ICTを支える「考え方」シリーズ:S00 ICTにおける学術分野統合学習の必然性 25.000000 37 1.480000
230 Docker+Python+Django WEB開発ハンズオン 12.000000 17 1.416667
880 【eLV】ITコンサルタントへの第一歩シリーズ ~セルフブランディング戦略~ 45.000000 63 1.400000
553 第16回 子どもためのプログラミング道場 - CoderDojo 立川 10.000000 14 1.400000
600 Rancher k3s もくもく勉強会 #02 10.000000 14 1.400000
220 Global AI Nights Tokyo 85.000000 118 1.388235
484 VoiceUIライトニングトーク!/ VUILT vol.8 @アイリッジ 57.000000 79 1.385965
704 Meguro.es # 20 @ Drecom 57.000000 78 1.368421
408 業務システムデザイン勉強会 25.000000 34 1.360000
756 TypeScript 勉強会 21.000000 27 1.285714
834 #20_メイプルもくもく会 18.000000 23 1.277778
740 Rakuten Commerce QA Night#1 100.000000 127 1.270000
149 爆誕!悪党同盟」プレリリースパーティ! 40.000000 50 1.250000
785 【福岡】ゆるっとIT vol.10「ソフトウェアテストの話を聞こう」 48.000000 59 1.229167
219 Global AI Nights Osaka 46.000000 56 1.217391
615 PWAハンズオン 60.000000 72 1.200000
849 [京都] テクテクテック #8 サーバ監視や負荷テストどうやってるの? 10.000000 12 1.200000
893 量子ゲートで量子アニーリングをプログラミングする 55.000000 66 1.200000
470 AI業界エンジニア向け 最短・最速でスキルアップする方法セミナー 4/9(火) 10.000000 12 1.200000
255 akiba.ex#01:Elixirもくもく会 11.000000 13 1.181818
580 LINE Developer Community : 第 2 回 ボット自慢 LT 大会 29.000000 34 1.172414
110 インデザイン正規表現 18.000000 21 1.166667
612 DIST.26 「Webサービスの個性を支えるデザイン」 155.000000 178 1.148387
868 AI実践入門!NVIDIA Jetson TX2×Azure GPU生体験ハンズオン@大阪TEQS 32.309291 37 1.145181
317 python高速化】Faster Python Meet up LT会#1 14.000000 16 1.142857
599 【初心者向け】ソフトウェアテスト・品質勉強会 Ver3.4【いまさら聞けないテスト・品質の基礎】 90.000000 102 1.133333
718 みんなで情シス!第4回 25.000000 28 1.120000
212 九州インフラ交流勉強会(Kixs) Vol.009 27.000000 30 1.111111
894 量子コンピュータ量子化学を全般的に見返す 55.000000 61 1.109091
669 Salesforce女子部 Tokyo #28 〜Salesforce管理者アプリ構築のヒント〜 50.000000 55 1.100000
810 Salesforce Saturday 日本橋#02 31.000000 34 1.096774
58 4月20日(土)ポケモンgoトレーナーバトル立川大会&交流会 32.000000 35 1.093750

先頭の奴はなんとも言えないけど、それ以外はわりかし妥当な数字が見えてるように感じる。

  • 入門 or ハンズオンが高い人気
  • JavaScript 系で新しい路線のものはまだまだ人気(サーバレス/新機能など)。
    言語としての変化が激しいから、この辺も理解できそう。
  • このリスト内では、JavaScript, Python, テスト の関係の単語の出現率がたかそう。
    Python は脇にに置いといて、JavaScript/テスト 周りは、人気があるのに講座が不足気味と言えそう。

個人的に気になったのが「量子」。
これ二つだけシレッといるのだけど全体的にはどのくらい出現してるのか

あーうん気のせいだった

cond = cr_df.title.str.contains('量子')
cr_df[cond]
title limit joins score
272 量子コンピュータハッカソン by Team AI 4/14(日) 17.000000 6 0.352941
340 量子コンピューティング勉強会(実践編) #1 12.000000 5 0.416667
387 新しい量子化学―電子構造の理論入門〈上〉輪講その12 32.309291 4 0.123803
650 基礎から応用やトレンドまで学ぶ量子コンピューティング入門セミナー #2 8.000000 4 0.500000
723 量子コンピューターについて語ろうLT大会&懇親会(2019年4月) 45.000000 34 0.755556
893 量子ゲートで量子アニーリングをプログラミングする 55.000000 66 1.200000
894 量子コンピュータ量子化学を全般的に見返す 55.000000 61 1.109091