SciPy入門:NumPyとの違いを理解しよう

SciPy入門:NumPyとの違いを理解しよう

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 尖度(データの山の鋭さ) -0.94(なだらかな分布)

たった数行のコードで、データの特徴を一度に把握できるのがSciPyの魅力です。

 

まとめ

この記事のポイントを振り返りましょう。

  • SciPy は、科学技術計算のためのPythonライブラリ
  • NumPyが基礎 で、SciPyはその上に構築された専門ツール
  • SciPyには目的別のモジュールがあり、特に scipy.stats(統計)scipy.optimize(最適化) がデータサイエンスで重要
  • pip install scipy で簡単にインストールできる
  • stats.describe() を使えば、基本統計量を一発で計算できる

次回は、scipy.stats をさらに深掘りし、データの基本統計量をもっと詳しく分析する方法 を紹介します。