Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのXlsxWriterモジュールでExcelシートに株価チャートを描画する方法

株価チャートとは、一定期間における銘柄の価格推移をグラフ化したものであり、投資判断に役立つ以下のような重要な情報がひと目で確認できるのが特徴です。

  • 銘柄コードと取引所
  • チャート期間
  • 価格変動
  • 直近の変動幅
  • 出来高

PythonのXlsxWriterモジュールを使用すると、「高値(High)・安値(Low)・終値(Close)」を組み合わせた株価チャートをExcelファイル上に簡単に作成できます。本記事では、実際のサンプルコードを通じて、その手順を詳しく解説します。

事前準備:XlsxWriterのインストール

XlsxWriterは標準ライブラリではないため、あらかじめpipでインストールしておきましょう。

pip install XlsxWriter

サンプルコード

以下のコードでは、日付ごとの高値・安値・終値データをワークシートに書き込み、そのデータをもとに株価チャート(High-Low-Close)を生成しています。

# datetimeライブラリからdatetimeクラスをインポート
from datetime import datetime
# xlsxwriterライブラリをインポート
import xlsxwriter

# Workbook()には、作成したいファイル名という必須引数を1つ渡します
workbook = xlsxwriter.Workbook('chart_stock.xlsx')

# add_worksheet()メソッドでワークブックに新しいワークシートを追加します
worksheet = workbook.add_worksheet()

# add_format()メソッドでセルの書式を定義するFormatオブジェクトを作成します
# ここでは太字の書式オブジェクトを作成
bold = workbook.add_format({'bold': 1})
# 日付表示用の書式オブジェクトを作成
date_format = workbook.add_format({'num_format': 'dd/mm/yyyy'})

# add_chart()メソッドでワークシートに追加できるチャートオブジェクトを作成します
# ここでは株価チャート(stockタイプ)を作成
chart = workbook.add_chart({'type': 'stock'})

# チャートが参照するデータを用意します
headings = ['Date', 'High', 'Low', 'Close']
data = [
    ['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05'],
    [27.2, 25.03, 19.05, 20.34, 18.5],
    [23.49, 19.55, 15.12, 17.84, 16.34],
    [25.45, 23.05, 17.32, 20.45, 17.34],
]

# 'A1'セルを起点に見出し行を太字で書き込みます
worksheet.write_row('A1', headings, bold)

# Excelシートにデータを書き込んでいきます
for row in range(5):
    # 文字列型の日付をdatetime型に変換
    date = datetime.strptime(data[0][row], "%Y-%m-%d")
    # 該当セルに日付書式を適用して書き込み
    worksheet.write(row + 1, 0, date, date_format)
    # 高値・安値・終値のデータをそれぞれのセルに書き込み
    worksheet.write(row + 1, 1, data[1][row])
    worksheet.write(row + 1, 2, data[2][row])
    worksheet.write(row + 1, 3, data[3][row])

# A列〜D列の幅を11に設定します
worksheet.set_column('A:D', 11)

# High-Low-Closeの各列に対して系列を追加します
# 注意:「=」と「Sheet1」、「Sheet1」と「!」の間にスペースを入れないこと
# スペースが入ると警告が発生します
chart.add_series({
    'categories': '=Sheet1!$A$2:$A$6',
    'values': '=Sheet1!$B$2:$B$6',
})
chart.add_series({
    'categories': '=Sheet1!$A$2:$A$6',
    'values': '=Sheet1!$C$2:$C$6',
})
chart.add_series({
    'categories': '=Sheet1!$A$2:$A$6',
    'values': '=Sheet1!$D$2:$D$6',
})

# チャートのタイトルを設定
chart.set_title({'name': 'High-Low-Close'})
# X軸のラベルを設定
chart.set_x_axis({'name': 'Date'})
# Y軸のラベルを設定
chart.set_y_axis({'name': 'Share price'})

# チャートをワークシートに挿入します(チャートの左上隅がセルE9に固定されます)
worksheet.insert_chart('E9', chart)

# 最後にclose()メソッドでExcelファイルを閉じて保存します
workbook.close()

コードの解説

1. ワークブックとワークシートの作成

xlsxwriter.Workbook()にファイル名を渡してワークブックオブジェクトを生成し、add_worksheet()でワークシートを追加します。これがExcelファイル操作の基本となる構造です。

2. 書式オブジェクトの定義

add_format()を使うことで、見出し行を太字にしたり、日付を「dd/mm/yyyy」形式で表示したりするなど、セルごとの書式を柔軟に指定できます。

3. 株価チャートオブジェクトの生成

add_chart({'type': 'stock'})と指定することで、株価チャート専用のチャートオブジェクトを作成できます。XlsxWriterで利用可能な主なチャートタイプには、area、bar、column、line、pie、doughnut、scatter、stock、radarなどがあります。

4. 系列の追加

add_series()メソッドで、カテゴリ(日付)と値(高値・安値・終値)のセル範囲を指定して系列を登録します。ここで注意すべき点は、範囲指定の文字列「=Sheet1!$A$2:$A$6」にスペースを含めないことです。スペースが混入すると警告が発生し、チャートが正しく描画されない場合があります。

5. タイトル・軸ラベルの設定とチャートの挿入

set_title()set_x_axis()set_y_axis()でチャートのタイトルや各軸のラベルを設定し、insert_chart()でワークシートの任意の位置(ここではE9セル)にチャートを挿入します。最後にclose()を呼び出すことで、ファイルが保存され処理が完了します。

実行結果

スクリプトを実行すると、カレントディレクトリに「chart_stock.xlsx」というファイルが生成されます。ファイルを開くと、A列〜D列に日付・高値・安値・終値のデータが整理されて並んでおり、E9セルを起点として「High-Low-Close」の株価チャートが表示されていることが確認できます。

  1. PythonのXlsxWriterモジュールでExcelワークシートにグラフを挿入する方法

    Pythonには標準ライブラリ以外にも、個人開発者によって作られた優れた外部ライブラリが数多く存在し、Pythonにさまざまな追加機能をもたらしています。XlsxWriterもそのひとつで、Pythonプログラムのデータを含むExcelファイルを作成できるだけでなく、グラフ(チャート)の作成にも対応しています。 円グラフの作成手順 以下の例では、xlsxwriterを使って円グラフを作成します。処理の流れは以下のとおりです。 まずワークブックを定義し、その後にワークシートを追加します。 次にプロットするデータを定義し、Excelファイルのどの列にデータを書き込むかを指定します。 その列を参照

  2. PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】

    Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。 本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。 openpyxlのインストール方法 openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。 pip ins