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)と呼ばれる多数のライブラリが用意されています。これらの多くは、特定の目的を効率的に達成するために開発されたものです。次に紹介するライブラリは、比較的広く認知され、実際に多くの場面で利用されています。
ライブラリ名 |
分類 |
機能 |
---|---|---|
統計解析 |
統計モデリングと回帰分析をサポートするライブラリ。 |
|
数値計算 |
高速な配列操作や数値計算をサポートするライブラリ。線形代数や統計計算が可能。 |
|
科学計算 |
科学技術計算のためのライブラリ。 |
|
データ分析 |
データフレームを使った効率的なデータ操作が可能。 |
|
データ分析 |
対話型プログラム環境を提供。データ分析やプレゼンテーションに最適。 |
|
可視化 |
グラフやプロットを作成するライブラリ。基本的なデータの視覚化が可能。 |
|
可視化 |
|
|
可視化 |
インタラクティブなデータ可視化のためのライブラリ。 |
|
可視化 |
インタラクティブなデータ可視化のためのライブラリ。 |
|
ウェブ |
軽量なウェブフレームワーク。 |
|
ウェブ |
高速なウェブ API 構築を支援するフレームワーク。 |
|
ウェブ |
大規模なウェブアプリケーション構築に適したフルスタックフレームワーク。 |
|
ウェブ |
Python アプリケーションを実行するための WSGI サーバー。 |
|
ウェブ |
ウェブサイトや API と簡単に通信できるライブラリ。 |
|
画像処理 |
画像を簡単に操作するためのライブラリ。 |
|
画像処理 |
画像処理用ライブラリ。 |
|
画像処理 |
画像処理用ライブラリ。 |
|
機械学習 |
古典的な機械学習アルゴリズムを簡単に利用できるライブラリ。分類、回帰、クラスタリングに対応。 |
|
深層学習 |
Google が開発した深層学習ライブラリ。 |
|
深層学習 |
|
|
深層学習 |
深層学習ライブラリ。研究と実装の両方で広く使われる。 |
外部ライブラリは、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
Show 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
Show code cell output
Found existing installation: numpy 2.3.1
Uninstalling numpy-2.3.1:
Successfully uninstalled numpy-2.3.1