pythonのグラフ描画ライブラリである「matplotlib」を用いて、csvファイルのグラフを作成する方法について紹介します。
csvデータを読み取る方法として、pyhonの標準モジュール「csvモジュール」を用いる方法と、データ解析支援ライブラリ「pandas」を用いる方法、2通りの方法について紹介します。
本記事では、下記の内容を紹介します。
この記事で分かること
■matplotlibでcsvファイルのグラフを作成する方法
- matplotlibとcsvモジュールで、csvファイルのグラフを作成
- matplotlibとpandasで、csvファイルのグラフを作成
【補足】pandasを用いて、csvファイルのグラフを作成
スポンサーリンク
matplotlibでcsvファイルのグラフを作成する方法
pythonのグラフ描画ライブラリである「matplotlib」を用いて、csvのグラフを作成する方法について紹介します。
csvのデータを読み取る方法として、「csvモジュール」を用いる方法、「pandas」を用いる方法、の2通りの方法を紹介します。
なお、csvファイルの読み込みについては、下記の記事で紹介しています。
matplotlibとcsvモジュールで、csvファイルのグラフを作成
はじめに、pythonの標準モジュールである「csvモジュール」でcsvデータを読み取り、matplotでグラフ化する方法について紹介します。
以下、サンプルコードです。
### matplotlibとcsvモジュールでcsvファイルのグラフを作成
import csv
import numpy as np
import matplotlib.pyplot as plt
path_csv = r'test\test.csv'
rows = []
with open(path_csv) as f:
reader = csv.reader(f)
rows = [row for row in reader]
header = rows.pop(0)
data = np.float_(np.array(rows).T)
fig, ax = plt.subplots()
ax.plot(data[0], data[1], linestyle='solid', marker='o')
ax.set_xlabel(header[0])
ax.set_ylabel(header[1])
plt.show()
出力されるグラフはこちら。
> with open(path_csv) as f :
> reader = csv.reader(f)
> rows = [row for row in reader]
csvモジュールを用いて、csvファイルのデータを読み込んでいます。
csvモジュールのcsv.readerでreaderオブジェクトを生成し、内包表記でreaderオブジェクトから行毎にデータを取り出して新たなリストを作成しています。
なお、内包表記については、下記の記事で紹介しています。
> header = rows.pop(0)
csvのデータの0番めの要素が、column名になっているので、リストのpopメソッドで削除&返り値で取得しています。
> data = np.float_(np.array(rows).T)
リストに格納されているデータを、グラフ描画可能な形に直しています。
リストのデータを、横軸用のデータ、縦軸用のデータに直すために、
np.array(rows)でnumpy型に直した後に、「.T」で転置しています。
また、このままだとデータが文字列型になっているので、「np.float_( )」で浮動小数点に直しています。
> ax.plot(data[0], data[1], linestyle='solid', marker='o')
グラフにデータを渡しています。
> ax.set_xlabel(header[0])
> ax.set_ylabel(header[1])
X軸、Y軸のラベルを指定しています。
さきほど、popメソッドで取得したcolumn名をラベルに使用しています。
スポンサーリンク
matplotlibとpandasで、csvファイルのグラフを作成
次に、「pandas」でcsvデータを読み取り、matplotlibでグラフ化する方法について紹介します。
先ほど紹介した、csvモジュールでcsvファイルを読み取る方法では、グラフ描画用にデータを整形するのに少し手間がかかりました。
pandasを用いると、文字列を数値に直す手間などが省けるため、コードを簡略化できます。
pandasでcsvファイルを読み込むために、pandas.read_csv関数を使用します。
以下、matplotlibとpandasを用いて、csvファイルからグラフを作成するサンプルコードです。
### matplotlibとpandasでcsvファイルのグラフを作成
import pandas as pd
import matplotlib.pyplot as plt
path_csv = r'test\test.csv'
df_csv = pd.read_csv(path_csv)
data_x = df_csv[df_csv.columns[0]]
data_y = df_csv[df_csv.columns[1]]
fig, ax = plt.subplots()
ax.plot(data_x, data_y, linestyle='solid', marker='o')
ax.set_xlabel(df_csv.columns[0])
ax.set_ylabel(df_csv.columns[1])
plt.show()
出力されるグラフはこちら。
> df_csv = pd.read_csv(path_csv)
csvファイルのデータを読み込んでいます。返り値はデータフレーム型になっています。
> data_x = df_csv[df_csv.columns[0]]
> data_y = df_csv[df_csv.columns[1]]
グラフで描画するX軸データ、Y軸データを抽出しています。
df_csv.columns で、データフレームのカラム名のデータを取得しています。今回の場合、['number', 'value'] というリストになります。
これを用いて、X軸、Y軸に対応するデータを、df_csv['number']のように指定して、抽出しています。
スポンサーリンク
【補足】pandasを用いて、csvファイルのグラフを作成
補足として、pandasを用いて、csvファイルからグラフを作成する方法について紹介します。
pandasにも、グラフ描画用のメソッドが用意されています。こちらを用いることで、簡潔にグラフを描画できます。
以下、サンプルコードです。
import pandas as pd
import matplotlib.pyplot as plt
path_csv = r'test\test.csv'
df_csv = pd.read_csv(path_csv)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
df_csv.plot(ax=ax, x=df_csv.columns[0], y=df_csv.columns[1], marker='o')
出力されるグラフはこちら。
> df_csv.plot(ax=ax, x=df_csv.columns[0], y=df_csv.columns[1], marker='o')
df.plot( )のメソッドでグラフを描画しています。
スポンサーリンク