Pythonでデータ分析や科学技術計算を学び始めると、必ず出会うのが SciPy(サイパイ) というライブラリです。
「NumPyは聞いたことあるけど、SciPyって何が違うの?」と感じている方も多いのではないでしょうか。
SciPy(Scientific Python の略) は、科学技術計算のためのPythonライブラリです。
統計分析、最適化、信号処理、線形代数など、高度な数学的処理を簡単に行うための関数がたくさん詰まっています。
ひとことで言えば、SciPyは 「科学や分析のための高機能ツールボックス」 です。
今回は、SciPyとは何か、NumPyとの関係や違い、そしてSciPyに含まれる主要なモジュール(機能のまとまり)について簡単に解説します。
NumPyとSciPyの関係
NumPyとSciPyは、よく一緒に使われますが、役割が異なります。
NumPy(ナムパイ)の役割
NumPyは、数値計算の「土台」 となるライブラリです。主な機能は以下のとおりです。
- 多次元配列(ndarray)の作成と操作
- 基本的な数学演算(足し算、掛け算、平均など)
- 配列同士の高速な計算
たとえるなら、NumPyは 「基本的な工具セット(ドライバー、ペンチ、ハンマーなど)」 です。
SciPyの役割
SciPyは、NumPyの上に構築された 「専門的な道具」 です。NumPyだけではカバーしきれない、より高度で専門的な計算機能を提供します。
たとえるなら、SciPyは 「専門工具セット(電動ドリル、レーザー水準器、精密測定器など)」 です。
つまり、SciPyを使うにはNumPyも必要 です。
SciPyのインストール方法
SciPyのインストールはとても簡単です。
ターミナル(コマンドを入力する画面)で以下のコマンドを実行するだけです。
pip install scipy
pip とは、Pythonのライブラリをインストールするためのツールです。このコマンドを実行すると、SciPyだけでなく、NumPyもインストールされます。
Anaconda(アナコンダ)という環境を使っている方は、最初からSciPyがインストールされているので、追加作業は不要です。
SciPyの主要モジュール一覧
SciPyには、目的ごとに整理された モジュール(機能のまとまり) がたくさんあります。
ここでは、データサイエンティストを目指す方がよく使う代表的なモジュールを紹介します。
| モジュール名 | 何ができるか | |
|---|---|---|
scipy.stats |
統計処理(検定、確率分布など) | 「AとBに差があるか」を検定する |
scipy.optimize |
最適化(最良の値を見つける) | コスト関数を最小化する |
scipy.interpolate |
補間(データの隙間を埋める) | 欠損した時系列データを補完する |
scipy.spatial |
空間データの処理(距離計算など) | 2つのデータ間の距離を計算する |
scipy.linalg |
線形代数(行列計算) | 連立方程式を解く |
scipy.signal |
信号処理 | ノイズを除去する |
scipy.integrate |
積分計算 | 関数の面積を求める |
最初のうちは、すべてを覚える必要はありません。
特に scipy.stats(統計処理)と scipy.optimize(最適化)は、データサイエンスで頻繁に使う ので、この2つから覚えていくのがおすすめです。
実際にSciPyを使ってみよう
最後に、SciPyの雰囲気をつかむために、簡単なコードを実行してみましょう。
ここでは、scipy.stats モジュールを使って、データの基本統計量(データの特徴を表す数値)を一度に計算します。
以下、コードです。
from scipy import stats # テストの点数データ(5人分) scores = [65, 78, 82, 90, 73] # 基本統計量をまとめて計算 result = stats.describe(scores) print(result)
このコードの意味を1行ずつ説明します。
from scipy import stats:SciPyの中から、統計処理用のstatsモジュールだけを読み込みますscores = [65, 78, 82, 90, 73]:分析したいデータ(テストの点数)をリストとして用意しますresult = stats.describe(scores):describe関数を使い、データの統計量をまとめて計算しますprint(result):計算結果を表示します
以下、実行結果です。
DescribeResult( nobs=5, minmax=(65, 90), mean=77.6, variance=88.3, skewness=-0.03565363310017411, kurtosis=-1.0092440703921697 )
それぞれの項目の意味は以下のとおりです。
| 項目 | 意味 | この例での値 |
|---|---|---|
nobs |
データの個数 | 5(5人分) |
minmax |
最小値と最大値 | 65点〜90点 |
mean |
平均値 | 77.6点 |
variance |
分散(データのばらつき具合) | 85.3 |
skewness |
歪度(データの左右の偏り) | 0.23(ほぼ左右対称) |
kurtosis |
尖度(データの山の鋭さ) |
たった数行のコードで、データの特徴を一度に把握できるのがSciPyの魅力です。
まとめ
この記事のポイントを振り返りましょう。
- SciPy は、科学技術計算のためのPythonライブラリ
- NumPyが基礎 で、SciPyはその上に構築された専門ツール
- SciPyには目的別のモジュールがあり、特に
scipy.stats(統計) とscipy.optimize(最適化) がデータサイエンスで重要 pip install scipyで簡単にインストールできるstats.describe()を使えば、基本統計量を一発で計算できる
次回は、scipy.stats をさらに深掘りし、データの基本統計量をもっと詳しく分析する方法 を紹介します。

