pythonの機械学習・データ分析系の各ライブラリの人気度を調べてみる

2万4000超の開発者に聞いた、Pythonでよく使うフレームワークは? | マイナビニュース
https://www.jetbrains.com/lp/python-developers-survey-2019/
を読んで調べたこと。

Python Developers Survey 2019 Results

これは「Python Software FoundationがJetBrainsを使用して実施したPython開発者調査の報告書」らしい。
その中で、各種ライブラリを使っている人の割合(複数回答)が掲載されている。 興味があるデータサイエンス系のフレームワークを見てみよう。ディープラーニングフレームワークは、俺が全然使っていないので、下記の結果一覧から除外した。 正確を期すためにもとのデータを見ると、質問文は「What data science framework(s) do you use in addition to Python?」である。

  • Numpy 63%
  • Pandas 55%
  • Matplotlib 46%
  • Scipy 36%
  • SciKit-Learn 33%
  • Seaborn 17%

まぁ妥当だろう。個人的にはScipyを使うことがあまり多くないので、Scipyってこんなに多いの?と思うけど。
では、他の調査も見てみよう。

Stack Overflow trend検索

Stack Overflowの公式ブログで、Pythonの人気が上昇していることを取り上げた記事がある。 以下に示す2つの記事がそうだ。いずれも2017年に書かれたものである。

このうち1つ目の記事では、高所得の国ではpythonの質問の閲覧数が大きく増えていることが述べられている。 2つ目の記事では、pythonのライブラリ群に焦点を当てていて、pandasが特に急激に成長している事がわかる。(Stack Overflowの中で、該当タグの質問へのトラフィック量を調べたもの)

The Incredible Growth of Python | Stack Overflow
Why is Python Growing So Quickly? - Stack Overflow Blog

だがこれは2017年なので、改めて最新の結果を見てみよう。

まず、言語どうしを比較してみよう。Stack Overflow Trendsの機能を使って、10個の言語を比較するとこのようになる。 (こちらは月間に投稿された質問のうち、該当するタグが含まれている割合を示す)

f:id:soratokimitonoaidani:20200510115224p:plain
Stack Overflow Trends

すごい。
2017年最初には8%くらいだったけど、その後も急激に上がり続けて、JavaScriptを抜いて1位となり、2020年には14〜15%になっている。人気を集めすぎやろ。

次に、pythonの各ライブラリについて同様にグラフを作った。

f:id:soratokimitonoaidani:20200510115247p:plain
Stack Overflow Trends

1位のpandasが2.4%程度で、2位のnumpyが0.8%程度である。2位の約3倍も質問されているpandasの一人勝ちと言ってよいだろう。
Python Developers Survey」では1位がnumpy、少しの差で2位がpandasであった。両者で違う傾向になっている。

Stack Overflow 質問数

次に、Stack Overflowで各ライブラリのタグが付いた質問の数を調べた。(これはある月間ではなく、今までの累計で質問された数である)
ついでにそれらの質問の中で、最も多いvoteの数も調べた。
Highest Voted 'pandas' Questions - Stack Overflow など

  • pandas: 質問数149000、最多vote1909
  • numpy: 質問数74000, 最多vote577
  • matplotlib: 質問数47000, 最多vote1978
  • scikit-learn: 質問数19000, 最多vote213
  • scipy: 質問数16000, 最多vote406
  • seaborn: 質問数4700, 最多vote206

こちらもpandasの一強といって良さそうだ。2位のnumpyの約2倍の質問数だ。
個人的にはきれいな図が書けるseabornが好きなんだけど、質問数が少ないですね、人気がないのかなぁ……ちょっと残念。

Google トレンド

最後にGoogleトレンドを見てみよう。日本からの最近12ヶ月で検索された量を調べると以下のようになった。

https://trends.google.co.jp/trends/explore?geo=JP&q=%2Fm%2F0rphppq,%2Fm%2F021plb,%2Fm%2F08b9rm,%2Fm%2F0h97pvq,seaborn

(これは静的データであり、更新されない)

  • pandas: 81
  • numpy: 58
  • matplotlib: 34
  • scikit-learn: 22
  • seaborn: 5

(seabornのみ「トピック」が選択できなかったので「検索キーワード」で検索した。また5つまでしか選択できなかったのでscipyを除外した)

ちなみに日本からではなく、全世界に切り替えると、以下のようになった。

  • pandas: 87
  • numpy: 42
  • matplotlib: 25
  • scikit-learn: 20
  • seaborn: 8

pandasがnumpyにダブルスコアになった。日本と比べて、世界ではpandasが大人気なのか……?

調べてみた結果を受けて

Python Software Foundationの調査は「使っているか、使っていないか」というアンケートである。 したがって、Stack Overflowに質問を投稿したり、Googleで検索するのとは違った傾向になるだろう。

scikit-learnが、使用率が高いのに、Stack Overflowの質問数やGoogleトレンドだとかなり低いのは何でだろうか。

一つ考えられる仮説は、使う頻度が違うのかなー。 個人的には、pandas, numpyは頻繁に使うけど、scikit-learnはたまにしか使わない。 したがって、使うか使わないかのアンケートに答えるとしたら全て「使う」と回答するけど、 Stack Overflowを見に行く頻度はpandasやnumpyのほうが絶対に多い。
多くのユーザーが同様に、pandasやnumpyの頻度が高くscikit-learnの頻度が低いようなら、上記で見てきた結果と整合する。

もう一つ考えられる仮説は、どれだけみんなが「使い方分からん……検索しよう/人に質問しよう」と思うか、が違うということ。 つまり使う頻度じゃなくて、書いてて詰まる頻度のほうね。 scikit-learnの使い方は比較的統一されていて、基本的にはfitしてpredictしちゃえば良い(注:かなり乱暴な話だが)。 使い方がわからなくてStack Overflowに聞いたりGoogleで検索したりすることが少ない、ということかね。 ……だとすると、pandasはStack OVerflowやGoogleトレンドだと値が大きいから、みんなが「うーん、分からん」と思ってるってことだろうか?

今後自分がどの辺の記事を書けば良いのかな―と思っていたけど、人に来てもらおうと思ったらpandasで書くのが良さそうだ。
それでは。