どのライブラリを使えば良いんだろう……
Pythonにはいろんなライブラリがあるので、これらを使えば簡単で効率的なプログラミングができるようになります。
こんにちは!侍エンジニアライターのフクロウです。機械学習のインストラクターをやっています。
この記事では、Python初心者(クラスまで勉強したよ!あたりの人)に使ってほしい、便利なライブラリを10個紹介します!
Pythonでは様々な用途のプログラムが作れますが、特に機械学習とWebが強いので、機械学習、Web、その他の3つに分けてPythonのおすすめライブラリを紹介していきます。
なお、本記事を読む前にそもそもPythonとはどんなプログラミング言語なのか、その特徴をおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
ライブラリってなんだろう
Pythonのライブラリとは、クラスや関数などがまとめられたものです。Pythonで使うことができるライブラリは、主にPyPIにまとめられています。
[https://pypi.org/]
ライブラリを使うことで、一から自分で実装しなくても、簡単に様々なプログラムを使うことができます。例えばWebサイトの構築や、機械学習プログラムの利用などが可能です。
PyPIからのライブラリインストールは簡単です。ターミナル(Windowsだとコマンドプロンプト)で以下のようにします。
pip install ライブラリ名
また、PyPIに登録されていないPythonコードもあります。多くのプログラマは自分のプログラムをGithubで公開しているので、こちらでも探してみてください。
便利なライブラリ10選!
Python入門者の皆さんに是非使ってみて欲しいライブラリを10個選んでみました。この章ではそれらを紹介するので、ぜひインストールして使ってみてください。
機械学習
NumPy
インストール方法
pip install numpy
NumPyは科学計算・数値計算を行う際によく使われる、行列計算を高速に行うためのライブラリです。
実はPython自体はかなり実行速度が遅いことが知られています。そこでNumPyでは、よく使う行列計算をCやFortranで実装することで手軽に高速な行列演算ができるようにできています。
Scikit-learn
インストール方法
pip install scikit-learn
Scikit-learnは様々な機械学習手法が実装されているライブラリです。
Scikit-learn(sklearnとも書かれることがあります)の実装にはNumPy/SciPy(科学計算向けのライブラリです)が使われているため、比較的高速に動作します。
あまりにも膨大な量の手法が実装されているため、適切な手法を選ぶにはScikit-learnのドキュメントに公開されているチートシートなどを参考にしてみてくださいね。
[Scikit-learnのチートシート 参考:https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html]
Matplotlib/Seaborn
Matplotlib
Seaborn
インストール方法
pip install matplotlib pip install seaborn
MatplotlibとSeabornはPythonのグラフ作成ライブラリです。
基本的にはMatplotlibを使えば大抵のグラフ作成が可能です。棒グラフや折れ線グラフ、等高線などから複数のプロットをまとめてアニメーションを作ることも可能です。
例えば以下のようなグラフが簡単に作れます。
[Matplotlibを使ったグラフの例]
また、SeabornはMatplotlibのグラフを更にかっこよくしたり、PamdasというライブラリのDataFrameクラスをきれいに可視化したりなどができるライブラリです。
[Seabornを使ったグラフの例]
Pythonを使ってグラフを作る場合、メインでMatplotlibを使うのがオススメです。見た目を気にしたり、もっと複雑なグラフを作りたくなったときにSeabornを検討してください。
Web
Flask
[http://flask.pocoo.org/static/logo/flask.png より]
インストール方法
pip install Flask
FlaskはPythonで簡単にWebアプリケーションやWebサイトを作る事ができる、Webマイクロフレームワークです。PythonのWebフレームワークにはDjangoという有名なものがありますが、Flaskはもっと手軽に使うことができて初心者に最適です!
Flaskを使って最も基本的なWebページ表示をしてみましょう。
[サンプルコードは 【Python】フレームワークFlaskの基本をマスター より]
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): hello = "Hello world" return hello if __name__ == "__main__": app.run()
このコードを実行すると、Hello worldと表示されたWebページを見ることができます。
@app.routeのようなデコレータを関数につけるだけで、簡単にWebサイトを作る事ができます。
大規模なWebアプリケーションを作る場合はDjangoの利用を考えるべきですが、個人でぱぱっとWebアプリを試してみたいなら、Flaskは非常に有向です。ぜひ試してみてください。
Requests
インストール方法
pip install requests
Requestsは、PythonでHTTPリクエストを行うためのライブラリです。
Pythonにはコレ以外にもHTTPリクエストのライブラリがありますが、現状では最もシンプルで使いやすい選択肢の一つだと思います。
Selenium
[https://www.seleniumhq.org/より]
インストール方法
pip install selenium
また、これ以外にWebdriverというものが必要になります。Chrome driverをインストールするには、以下のページからドライバーをダウンロードして実行してください。
ChromeDriver – WebDriver for Chrome
Seleniumはウェブブラウザを使ったプログラムのテストを自動化するツールです。Python以外にも様々な言語から使うことができますが、Pythonから使うためのライブラリがPyPIにあるので、コレを使うことをおすすめします。
WebアプリケーションやWebサイトを作ったあとに、
- 実際にちゃんと動くのかをテストしたい
- Webページからスクレイピングしたい
などの要望があったとき、Seleniumは有効です。
実際にWeb Browserを動かしたときにしかわからないような操作を、Pythonのコードから設定することができます。
その他
collections
このモジュールは標準ライブラリに含まれるものなので、インストールは不要です。
collectionsは様々なコンテナデータ型を持ったライブラリです。特によく使われているのを見るのはCounter型でしょう。これは与えられたリストなどのそれぞれの要素の要素数を数え上げてくれます。
from collections import Counter x = "QWERTYUIOPQWERTSDFGUIKJH" y= Counter(x) y.most_common() # 出力結果 [('Q', 2), ('W', 2), ('E', 2), ('R', 2), ('T', 2), ('U', 2), ('I', 2), ('Y', 1), ('O', 1), ('P', 1), ('S', 1), ('D', 1), ('F', 1), ('G', 1), ('K', 1), ('J', 1), ('H', 1)]
自分で実装することも容易ですが、標準ライブラリにすでに用意されているこのような機能を使うことで、車輪の再発明をしないで済みます。
tqdm
インストール方法
pip install tqdm
tqdmはプログレスバーを表示するためのライブラリです。
重い処理をするforループがあったときに、これがあとどのくらいで終わるのか、気になりませんか?そんなときは、tqdmを以下のように使うと進捗状態を監視できます。
L = [] for i in tqdm.tqdm(range(100)): L.append(i**i**i) # 出力結果 8%|▊ | 8/100 [00:21<00:01, 52.99it/s]
プログレスバーはfor文がどこまで進んだかを表しているので、この表示を見て待ち時間にコーヒーを飲んだりできますね。自分で機械学習モデルを実装して、学習状況を監視するときなどにぜひ使ってみてください。
timeit
このモジュールは標準ライブラリに含まれるものなので、インストールは不要です。
timeitはPythonコードの実行時間を計測するモジュールです。Jupyter Notebook/ Labでも同名のコマンドがあるので、こちらのほうが有名ですね。
例えば、testという関数の実行速度を計測するには以下のようにします。
In [1]: def test(): ...: """Stupid test function""" ...: L = [] ...: for i in range(100): ...: L.append(i) ...: ...: if __name__ == '__main__': ...: import timeit ...: print(timeit.timeit("test()", ...: setup="from __main__ import test")) ...: ...: ...: # 実行結果 7.615369319000003
また、Jupyter上で同じことをする場合は以下のようになります。
# In[1] def test(): """テスト関数""" L = [] for i in range(100): L.append(i)
# In[2] %timeit test()
# 実行結果 100000 loops, best of 3: 10.5 µs per loop
timeitはJupyter上で使った方が簡単ですが、普通にモジュールの中に書くとしても、大した手間ではありません。コードの実行速度が気になるときには手軽に使える優秀な機能です。
まとめ
この記事では、Python初心者・初学者に使ってもらいたいおすすめライブラリ10選を紹介しました。
- NumPy
- Scikit-learn
- Matplotlib
- Seaborn
- Flask
- Requests
- Selenium
- Collections
- tqdm
- timeit
どれも面倒なプログラムを手軽に使うことができる、強力なライブラリです。ぜひ使い方を覚えて、Pythonを使ったプログラミングを楽しんでください!