[Python入門]モジュールの使い方:Python入門(3/3 ページ)
Pythonには多くの「標準ライブラリ」や「外部ライブラリ」が「モジュール」として提供されている。それらを自分のプログラムで使う方法を説明する。
Matplotlibによるグラフの描画
最後に、外部ライブラリの利用例としてMatplotlibを利用して簡単なグラフを描画してみよう。Matplotlibは2次元のグラフ描画に使える多様な機能を提供するものだ。本連載で使用している[Try Jupyter]ページから起動できるJupyter環境にはこれが標準でインストールされているので、import文で導入するだけで、その機能を利用できる。
PythonのプログラムからMatplotlibを使ってグラフを描画するときには、次のようにしてインポートを行うのが一般的だ。
import matplotlib.pyplot as plt
まずはこのコードを実行しておこう。
Matplotlibは多数のモジュールを集めたモジュールとなっていて*1、pyplotモジュールはMatplotlibが提供するモジュール(サブモジュール)の一つであり、コマンド形式でグラフを描画可能な関数群を提供している。
*1 このように複数のモジュールをまとめたものを「パッケージ」と呼ぶ。ただし、Python公式サイトのドキュメントによれば「すべてのパッケージはモジュール」でもあり、パッケージの配布元でもパッケージとモジュールを厳密に区別していないことも多い。
上のコードにある「matplotlib.pyplot」というのは、Matplotlibが提供する多数のモジュールの中からpyplotモジュールだけをインポートすることを指示するものだ。「パッケージ.モジュール」あるいは「モジュール.サブモジュール」という書き方で、特定のモジュールだけをインポートできることも覚えておこう(パッケージについては、後続の回で取り上げる)。「as plt」とあるので、この後は「plt」という名前を介して、matplotlib.pyplotモジュールにアクセスする。
このモジュールには多数の関数が含まれているが、ここではplot関数とshow関数だけを使用する。詳細な構文はここでは省略するので、気になる方は「matplotlib.pyplot」ページから該当の関数を検索してほしい。
簡単には、X座標を格納するリストとY座標を格納するリストをplot関数に渡して、グラフを描画して、最後にshow関数でそれを実際に表示するという使い方をする。
実際に何かを描画するに当たっては、本連載の第1回「Pythonってどんな言語なの?」の「Pythonの外部ライブラリを使えば、単回帰分析を行うコードも数行に」で作成したコードに再登場してもらうことにする。それが以下のコードだ。ただし、最後の行だけは、変数aとbに傾きと切片を代入するように変更してある。
def fit(x, y):
x_mean = sum(x) / len(x)
y_mean = sum(y) / len(y)
x_centered = [item - x_mean for item in x]
y_centered = [item - y_mean for item in y]
xy = [item_x * item_y for item_x, item_y in zip(x_centered, y_centered)]
xx = [item * item for item in x_centered]
sum_xy = sum(xy)
sum_xx = sum(xx)
a = sum_xy / sum_xx
b = y_mean - a * x_mean
return (a, b)
# サンプルデータ
x = [-0.03, 0.78, 2.07, 2.77, 4.10, 5.38, 5.99, 6.84, 8.12, 8.89, 9.43]
y = [0.88, 2.45, 2.43, 4.07, 5.49, 6.46, 7.02, 8.27, 8.70, 10.23, 10.65]
# 一次関数の推測を行う
a, b = fit(x, y)
これはサンプルデータとしてX座標を含んだリストと、Y座標を含んだリストが用意されている。これをfit関数に渡してサンプルデータに最も合致する一次関数の傾きと切片を求めるものだ。
まずは、サンプルデータを基にグラフを描画してみよう。これには以下のコードを実行すればよい。第3引数に指定した文字列'o'はドットを描画することを指示するものだ。
plt.plot(x, y, 'o')
これによって次のようにグラフが描画される。
描画されないときには、以下のコードを実行しよう*2。
plt.show()
*2 環境やJupyterのバージョンによっては、セルに「%matplotlib inline」を入力、実行しておく必要があるかもしれない。詳細についてはMatplotlib公式サイトのドキュメント「Startup Commands」などを参照のこと。
今度はこれに推測した結果を基に作成したグラフを描画してみる。X座標は既に分かっているので、「X座標×傾き(a)+切片(b)」を計算した「もう一つのY座標を格納したリスト」を作成すればいいだろう。
y2 = [num * a + b for num in x]
plt.plot(x, y2)
plt.plot(x, y, 'o') # 元のドットも同時に描画しておく
plt.show()
これを実行すると、次のようになるはずだ。
実は第1回では、これと同じ手順でグラフを描画していた。また、第1回ではNumPyと呼ばれるパッケージも使用しているが、それを使う際にもimport文を使っている。
今回までに説明した知識を持った上で、第1回あるいは上記のfit関数のコードを読み直してみてほしい。「なんだ、カンタンじゃん!」と思えれば、Pythonの知識がそれなりに付いたということだ。
まとめ
今回はPythonのモジュールを「使う」という観点から取り上げた。次回は、自分でモジュールを作成してみることにしよう。
今回のまとめ:モジュールの使い方
- 「モジュール」とは、関連性のある「プログラム部品」を1つのファイルにまとめたもの
- モジュールは「py」という拡張子が付けられたテキストファイルで、そこにPythonで書かれたプログラムを保存する
- 複数のモジュールをまとめた「パッケージ」もある
- モジュールにはPythonと一緒に配布される標準ライブラリや、言語とは別に配布されている外部ライブラリや外部パッケージなどがある
- 標準ライブラリはimport文を使って「インポート」するだけで、すぐにその機能を使える
- 外部ライブラリはインポートの前にインストールが必要になることがある
- モジュールをインポートするには3つの代表的な方法がある
- import module_name:「module_name」で指定されるモジュールをインポートする
- import module_name as identifier:「module_name」で指定されるモジュールを、「identifier」で指定される名前としてインポートする
- from module_name import identifier:「module_name」で指定されるモジュールから、「identifier」で指定される関数(だけ)をインポートする
- 3つ目の形式で「from module_name import *」とすると、そのモジュールで公開されている全ての名前がインポートされる。ただし、使用はあまり推奨されていない
「Python入門」
Copyright© Digital Advantage Corp. All Rights Reserved.

