3.4. ライブラリ#

3.4.1. モジュール#

モジュールmodule)は、たくさんの関数が詰まったツールボックスのようなものです。Python には多くの便利なモジュールが用意されています。例えば、すでに紹介した数値計算を行う math モジュールや、平均・分散などの統計量を計算する statistics モジュールがあります。これらの既存モジュールを活用することで、ゼロからプログラムを書く手間が省けるだけでなく、計算精度の向上や計算コストの削減も図れます。

自作関数とモジュールで用意された関数を比べてみましょう。たとえば、平方根を計算する関数を自作してみよう。

def sqrt(x):
    a = 0
    b = x
    while abs(a - b) > 1e-15:
        m = (a + b) / 2
        if m * m > x:
            b = m
        else:
            a = m
    return m

この関数で \(\sqrt{2}\) を計算し、実行速度を測定してみます。なお、Jupyter Notebook では、%time を使うことで関数の実行時間を計測できます。

%time sqrt(2)
CPU times: user 22 μs, sys: 1 μs, total: 23 μs
Wall time: 26 μs
1.414213562373095

次に、math モジュールの平方根計算関数 sqrt を使って同じことを試します。math モジュールを利用するために、import 文で math モジュールの機能を読み込みます。続いて、math モジュールにある sqrt 関数を利用するために math.sqrt のようにモジュール名と関数名の間を . 繋ぎます。これで特定のモジュールの中にある関数を利用できるようになります。

import math
%time math.sqrt(2)
CPU times: user 4 μs, sys: 0 ns, total: 4 μs
Wall time: 6.2 μs
1.4142135623730951

計算結果を比較すると、math モジュールの関数の方が圧倒的に高速で、計算精度も高いことが分かります。Python のモジュールは、効率的なアルゴリズムと最適化されたコードで構成されているため、同じ処理を自作したものよりも性能が高いのです。

モジュールを使えば、車輪を再発明せずに済みます。再発明はワクワクかもしれません。でも、メンテナンスで徹夜した翌朝に気づくんです。最初から import しておけばよかったって。

3.4.2. ライブラリ#

ライブラリlibrary)は、複数のモジュールをまとめたもので、特定の分野のプログラム開発を助けるツールボックスです。例えば、プログラムを書く上でよく使われている機能を提供する数値計算(math、statistics など)、文字データ処理(string、re、readline など)、日付処理(datetime、zoneinfo など)、ファイル操作(pathlib、glob、shutil など)など多数のモジュールを集めたものを Python の標準ライブラリstandard library)とよびます。

Python には標準ライブラリに加えて、外部ライブラリexternal library)と呼ばれる多数のライブラリが用意されています。これらの多くは、特定の目的を効率的に達成するために開発されたものです。次に紹介するライブラリは、比較的広く認知され、実際に多くの場面で利用されています。

ライブラリ名

分類

機能

Statsmodels

統計解析

統計モデリングと回帰分析をサポートするライブラリ。

NumPy

数値計算

高速な配列操作や数値計算をサポートするライブラリ。線形代数や統計計算が可能。

SciPy

科学計算

科学技術計算のためのライブラリ。

Pandas

データ分析

データフレームを使った効率的なデータ操作が可能。

Jupyter

データ分析

対話型プログラム環境を提供。データ分析やプレゼンテーションに最適。

Matplotlib

可視化

グラフやプロットを作成するライブラリ。基本的なデータの視覚化が可能。

Seaborn

可視化

Matplotlib をベースにした高レベルのデータ可視化ライブラリ。

Plotly

可視化

インタラクティブなデータ可視化のためのライブラリ。

Bokeh

可視化

インタラクティブなデータ可視化のためのライブラリ。

Flask

ウェブ

軽量なウェブフレームワーク。

FastAPI

ウェブ

高速なウェブ API 構築を支援するフレームワーク。

Django

ウェブ

大規模なウェブアプリケーション構築に適したフルスタックフレームワーク。

Gunicorn

ウェブ

Python アプリケーションを実行するための WSGI サーバー。

Requests

ウェブ

ウェブサイトや API と簡単に通信できるライブラリ。

Pillow

画像処理

画像を簡単に操作するためのライブラリ。

OpenCV

画像処理

画像処理用ライブラリ。

Scikit-image

画像処理

画像処理用ライブラリ。

Scikit-learn

機械学習

古典的な機械学習アルゴリズムを簡単に利用できるライブラリ。分類、回帰、クラスタリングに対応。

TensorFlow

深層学習

Google が開発した深層学習ライブラリ。

Keras

深層学習

TensorFlow 上に構築された高レベルの深層学習ライブラリ。簡単な記述でモデル構築が可能。

PyTorch

深層学習

深層学習ライブラリ。研究と実装の両方で広く使われる。

外部ライブラリは、Python をインストールした直後の状態では利用できません。これらを使用するには、Python をインストールした後に、必要なライブラリを個別にインストールする必要があります。たとえば、NumPy がインストールされていない環境で import numpy を実行しようとすると、次のような ModuleNotFoundError が発生します。

import numpy
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[5], line 1
----> 1 import numpy

ModuleNotFoundError: No module named 'numpy'

外部ライブラリをインストールする際には、通常、公式ウェブサイトの指示に従い、pip などのコマンドを利用します。以下に、NumPy をインストールする例を示します。Jupyter Notebook 上でインストールを行う場合は、pip コマンドの前に ! をつけて実行します。

!pip install numpy
Hide code cell output
Collecting numpy
  Using cached numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl.metadata (62 kB)
Using cached numpy-2.3.1-cp311-cp311-macosx_14_0_arm64.whl (5.4 MB)
Installing collected packages: numpy
Successfully installed numpy-2.3.1

Jupyter Notebook を使っていない場合は、Python を起動する前にターミナルで次のように実行します。

pip install numpy

pip コマンドを使えば、必要なライブラリを簡単に追加できます。インストール時にはインターネット接続が必要である点に注意してください。

なお、pip を使うと、指定されたライブラリが PyPI からダウンロードされてインストールされます。PyPI には、誰でも制限なくライブラリを登録できるため、悪意あるライブラリが公開されていることもあります。ライブラリをインストールする際には、ライブラリ名のスペルミスに十分注意してください。よく似た名前の別のライブラリを誤ってインストールしてしまうおそれがあります。

既存のライブラリをアップグレードする場合は --upgrade オプションを添えて、install を実行します。

!pip install --upgrade numpy

また、インストールしたライブラリを削除する場合は、uninstall を実行します。

!pip uninstall --yes numpy
Hide code cell output
Found existing installation: numpy 2.3.1
Uninstalling numpy-2.3.1:
  Successfully uninstalled numpy-2.3.1