Pandas の練習がてら、勉強会のトレンドを探ってみた
この辺の続きです。
4月の勉強会の開催状況と、事前申し込みの状況を眺めてみたが正解。
勉強会情報を拾ってくる
前回の流れですが、2サイト以上でやるので、少しだけ汎用化を考えてみた。
調べてみたら、ATND と COMPASS のAPI仕様がほぼ同一だった。
まずは共通の定義を用意して
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
簡単にキーワード抽出
まずは際頻出キーワード集計する。
色々行なっているけど、行ごとに説明すると
- キーワードでグループ化+集計する。
この時点で、「キー:件数」の pandas.Series 型に変換される。 - カウント数がこのままだと加工しづらいので、DataFrame に変換する。
reset_index をしてやることで、インデックス行が自動で作成され、ちゃんと合計数に count のラベルがつく - 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 |
この中から技術単語を拾うと
- AI : 40
- Python : 40
- デザイン : 19
- Web : 19
- 機械(学習) : 14
- 統計 : 13
- Clowd : 11
- RPA : 11
勉強会の開催頻度だけで見ると、AI(with Python)がダントツ。
どれだけ注目されているかがよくわかる。
ちなみに、「機械」に関しても以下を見ればわかるが、全て機械学習。
AI と被ってる勉強会は 3 件だけなので、重複排除で見れば
- AI : 50
- Python : 40
- デザイン : 19
- Web : 19
- 統計 : 13
- Clowd : 11
- 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 件のみ。
それを移動すると
- AI : 52
- Python : 40
- デザイン : 19
- Web : 19
- 統計 : 11
- Clowd : 11
- 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 |