Pythonはデータ分析に使用できます。しかし、実際に見てみないと、何ができるのか分かりません。
データ分析の一例として、各種グラフを描けます。この記事では、折れ線グラフ、棒グラフ、円グラフの描き方のコードを示し、それぞれの表示結果を紹介します。
matplotlib
Pythonでグラフを描くライブラリは、matplotlibです。
まずはmatplotlibをインストールします。
pip install matplotlib
Jupyter Notebookを使ってグラフを描くこともできますが、この記事では、Python環境さえあればできる方法を紹介します。
グラフを描くPythonコードは、以下のようなひな型になります。
import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt …グラフを描く処理… plt.savefig("出力ファイル名.png")
まず、
mpl.use('Agg')
はおまじないだと思ってください。
plt.savefig()
でグラフをファイルに保存し、そのファイルを開いて描いたグラフを確かめます。出力形式はPNG形式です。
では、実際にグラフを描いてみます。
折れ線グラフを描いてみる
import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [10, 25, 30, 50, 100] #折れ線グラフを描画 plt.plot(x, y) #グラフのタイトル plt.title('title') #x軸の名前 plt.xlabel('x') #y軸の名前 plt.ylabel('y') #グリッド線を描く plt.grid(True) #Jupyter Notebookなら以下で表示される #plt.show() plt.savefig("折れ線グラフ.png")
plt.plot(x,y)
で折れ線グラフが描けます。x、yは配列でデータを指定します。
- グラフのタイトル
- x軸の名前
- y軸の名前
- グリッド線の有無
などが指定できます。
棒グラフを描いてみる
import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] labels = ['A', 'B', 'C', 'D', 'E'] h = [10, 25, 30, 50, 100] #棒グラフを描画 plt.bar(x, h, tick_label = labels, color="g") #グラフのタイトル plt.title("title") #x軸の名前 plt.xlabel("x") #y軸の名前 plt.ylabel("y") #グリッド線を描く plt.grid(True) #Jupyter Notebookなら以下で表示される #plt.show() plt.savefig("棒グラフ.png")
plt.bar(x,h)
で棒グラフが描けます。
ここで指定しているオプションは以下です。
tick_label:x軸の各棒に付けるラベル。文字列の配列で指定。
color:棒の色。ここでは緑。
その下の指定は、折れ線グラフと変わりません。
円グラフを描いてみる
import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt labels = ['A', 'B', 'C', 'D', 'E'] x = [10, 25, 30, 50, 100] #円グラフを描画 plt.pie(x, labels = labels, autopct="%1.0f%%") #グラフのタイトル plt.title("title") #Jupyter Notebookなら以下で表示される #plt.show() plt.savefig("円グラフ.png")
データをxの配列に代入して、
plt.pie(x)
で自動的に円グラフが描けます。
ここで指定しているオプションは以下です。
labels:各データのラベル。文字列の配列で指定。
autopct:割合を表示。書式指定文字列(ここでは小数点以下0桁)
- グラフのタイトル
は折れ線グラフと変わりません。
応用編:立体グラフ
最後に応用編として、立体グラフを描いてみます。
import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt import numpy as np from scipy.interpolate import griddata fig = plt.figure() ax = fig.add_subplot(111, projection='3d') x = [] y = [] z = [] for i in range(10): for j in range(10): x.append(i) y.append(j) z.append(i**3 + j**3) x_new, y_new = np.meshgrid(np.unique(x), np.unique(y)) z_new = griddata((x, y), z, (x_new, y_new)) ax.plot_wireframe(x_new, y_new, z_new) plt.savefig("立体グラフ.png")
難しいので、コードの説明は割愛します。でも、これだけのコード量で立体グラフが描けるというのは素晴らしいと思いませんか?Pythonの面目躍如です。
まとめ
ここまで見てきたグラフの描き方、オプションについて詳しくは、matplotlibの公式サイト
を参照してください。英語ですが、読みやすい英語です。
Pythonでは手軽にグラフが描けることが分かりました。
Pythonをデータ分析に活用していきましょう。