matplotlib ライブラリ

【matplotlib】csvファイルからグラフを作成【pandas、csvモジュールと組合せ】

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ファイルの読み込みについては、下記の記事で紹介しています。

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( )のメソッドでグラフを描画しています。

スポンサーリンク

-matplotlib, ライブラリ
-,