matplotlib ライブラリ

【matplotlib】Excelからグラフを作成【openpyxl、pandasと組合せ】

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

excelデータを読み取る方法として、excel操作用の外部ライブラリである「openpyxl」を用いる方法、データ解析支援ライブラリ「pandas」を用いる方法、2通りの方法について紹介します。

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

この記事で分かること

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

  • matplotlibとopenpyxlで、excelファイルのグラフを作成
  • matplotlibとpandasで、excelファイルのグラフを作成

なお、本記事で紹介しているサンプルコードでは、下記のExcelファイルを読み込んでいます。

サンプルコードで使用するExcelデータ

スポンサーリンク

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

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

excelのデータを読み取る方法として、「openpyxl」を用いる方法「pandas」を用いる方法、の2通りの方法を紹介します。

matplotlibとopenpyxlで、excelファイルのグラフを作成

はじめに、Excel操作用ライブラリの「openpyxl」でexcelデータを読み取り、matplotでグラフ化する方法について紹介します。

以下、サンプルコードです。

### matplotlibとopenpyxlで、excelファイルのグラフ作成
import openpyxl
import numpy as np
import pprint
import matplotlib.pyplot as plt


def get_value_list(t_2d):
    return([[cell.value for cell in row] for row in t_2d])

def get_list_2d(sheet, start_row, end_row, start_col, end_col):
    return get_value_list(sheet.iter_rows(min_row=start_row,max_row=end_row,min_col=start_col,max_col=end_col))


path_excel = r'test\test.xlsx'

wb = openpyxl.load_workbook(path_excel, data_only=True)    
sh = wb['Sheet1']

data_excel = get_list_2d(sh, 1, 11, 1, 2)
wb.close

header = data_excel.pop(0)

data = np.float_(np.array(data_excel).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()

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

matplotlibでcsvファイルからグラフを作成
出力されるグラフ

> def get_value_list(t_2d):
> return([[cell.value for cell in row] for row in t_2d])
>
>def get_list_2d(sheet, start_row, end_row, start_col, end_col):
> return get_value_list(sheet.iter_rows(min_row=start_row,max_row=end_row,min_col=start_col,max_col=end_col))

excelからデータを読み込むための関数を定義しています。
openpyxlの「Worksheet」と、開始行、終了行、開始列、終了列を引数にとり、リストでexcelデータを返します。

> wb = openpyxl.load_workbook(path_excel, data_only=True)
> sh = wb['Sheet1']
> data_excel = get_list_2d(sh, 1, 11, 1, 2)
> wb.close

先ほど定義した関数を用いて、excelのデータを読み込んでいます。
openpyxlで開いたワークブックは、使用後は忘れず閉じるようにしましょう。

> header = data_excel.pop(0)

data_excelデータの0番目の要素が、column名になっているので、popメソッドでリストから要素削除&返り値として取得しています。

> data = np.float_( np.array( data_excel ) ).T )

リストに格納されているデータを、グラフ描画可能な形に直しています。

リストのデータを、横軸用のデータ、縦軸用のデータに直すために、
np.array(data_excel))で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で、excelファイルのグラフを作成

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

pandasでExcelファイルを読み込むために、pandas.read_excel関数を使用します。
以下、サンプルコードです。

### matplotlibとpandasで、excelファイルのグラフ作成
import pandas as pd
import numpy as np
import pprint
import matplotlib.pyplot as plt


path_excel = r'test\test.xlsx'

df_excel = pd.read_excel(path_excel)

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


fig, ax = plt.subplots()

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

ax.set_xlabel(df_excel.columns[0])
ax.set_ylabel(df_excel.columns[1])

plt.show()

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

matplotlibでcsvファイルからグラフを作成
出力されるグラフ

> df_excel = pd.read_excel(path_excel)

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

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

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

スポンサーリンク

まとめ

matplotlibを用いて、Excelファイルからグラフを作成する方法について紹介しました。

csvファイルからグラフを作成する方法についても紹介していますので、参考にしてみてください。

matplotlibでcsvファイルからグラフを作成

スポンサーリンク

-matplotlib, ライブラリ
-,