matplotlib ライブラリ

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

pythonのグラフ描画ライブラリである「matplotlib」を用いて、csvファイルのグラフを作成する方法について紹介します。

csvデータを読み取る方法として、pyhonの標準モジュール「csvモジュール」を用いる方法と、データ解析支援ライブラリ「pandas」を用いる方法、2通りの方法について紹介します。

本記事では、下記の内容を紹介します。

この記事で分かること

■matplotlibでcsvファイルのグラフを作成する方法

  • matplotlibとcsvモジュールで、csvファイルのグラフを作成
  • matplotlibと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

csv_path = r'test\test.csv'

rows = []
with open(csv_path) as f:   
    reader = csv.reader(f)
    rows = [row for row in reader]

header = rows.pop(0)

data = np.float_(np.array(rows).T)

plt.xlabel(header[0])
plt.ylabel(header[1])

plt.plot(data[0], data[1], linestyle='solid', marker='o')
plt.show()

出力されるグラフはこちら。

出力されるグラフ

> with open(csv_path) 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_( )」で浮動小数点に直しています。

> plt.xlabel(header[0])
> plt.ylabel(header[1])

X軸、Y軸のラベルを指定しています。
さきほど、popメソッドで取得したcolumn名をラベルに使用しています。

> plt.plot(data[0], data[1], linestyle='solid', marker='o')
> plt.show()

グラフを出力しています。

スポンサーリンク

matplotlibとpandasで、csvファイルのグラフを作成

次に、「pandas」でcsvデータを読み取り、matplotでグラフ化する方法について紹介します。

先ほど紹介した、csvモジュールでcsvファイルを読み取る方法では、グラフ描画用にデータを整形するのに少し手間がかかりました。

pandasを用いると、文字列を数値に直す手間などが省けるため、コードを簡略化できます。

pandasでcsvファイルを読み込むために、pandas.read_csv関数を使用します。

以下、matplotlibとpandasを用いて、csvファイルからグラフを作成するサンプルコードです。

### matplotlibとpandasでcsvファイルのグラフを作成
import pandas as pd
import matplotlib.pyplot as plt

csv_path = r'test\test.csv'
csv_df = pd.read_csv(csv_path)

data_x = csv_df[csv_df.columns[0]]
data_y = csv_df[csv_df.columns[1]]

plt.xlabel(csv_df.columns[0])
plt.ylabel(csv_df.columns[1])

plt.plot(data_x, data_y, linestyle='solid', marker='o')
plt.show()

出力されるグラフはこちら。

出力されるグラフ

> csv_df = pd.read_csv(csv_path)

csvファイルのデータを読み込んでいます。返り値はデータフレーム型になっています。

> data_x = csv_df[csv_df.columns[0]]
> data_y = csv_df[csv_df.columns[1]]

グラフで描画するX軸データ、Y軸データを抽出しています。
csv_df.columns で、データフレームのカラム名のデータを取得しています。今回の場合、['number', 'value'] というリストになります。
これを用いて、X軸、Y軸に対応するデータを、csv_df['number']のように指定して、抽出しています。

スポンサーリンク

-matplotlib, ライブラリ
-,