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をデータ分析に活用していきましょう。
