検索
連載

[Python入門]モジュールの使い方Python入門(3/3 ページ)

Pythonには多くの「標準ライブラリ」や「外部ライブラリ」が「モジュール」として提供されている。それらを自分のプログラムで使う方法を説明する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

Matplotlibによるグラフの描画

 最後に、外部ライブラリの利用例としてMatplotlibを利用して簡単なグラフを描画してみよう。Matplotlibは2次元のグラフ描画に使える多様な機能を提供するものだ。本連載で使用している[Try Jupyter]ページから起動できるJupyter環境にはこれが標準でインストールされているので、import文で導入するだけで、その機能を利用できる。

 PythonのプログラムからMatplotlibを使ってグラフを描画するときには、次のようにしてインポートを行うのが一般的だ。

import matplotlib.pyplot as plt

matplotlib.pyplotモジュールのインポート

 まずはこのコードを実行しておこう。

 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入門」のインデックス

Python入門

Copyright© Digital Advantage Corp. All Rights Reserved.

前のページへ |       
[an error occurred while processing this directive]
ページトップに戻る