Pythonを使った定型的なExcel業務、特にレポート作成の自動化は、日々の作業効率を劇的に改善します。中でもグラフ作成は、手作業では意外と手間がかかる部分です。もしPythonスクリプトを実行するだけで、データ抽出からグラフ描画まで一気通貫で完了できたら素晴らしいと思いませんか?
この記事では、Pythonのopenpyxlライブラリを使い、Excelのドーナツチャート(Doughnut Chart)作成を自動化する方法を、基本的な使い方に絞って徹底的に解説します。
この記事を最後まで読めば、以下のスキルが身につきます。
- PythonコードでExcelにドーナツチャートを描画する一連の流れを理解できる
- グラフの元となるデータ範囲を正しく指定する方法がわかる
- 作成したチャートをExcelシートの好きな位置に配置できる
手作業によるグラフ作成から解放され、よりクリエイティブな業務に時間を使いましょう!
はじめに:なぜopenpyxlでグラフ作成を自動化するのか
まず、openpyxlとドーナツチャートについて簡単におさらいします。
openpyxlは、PythonでExcelファイル(.xlsx形式)を自在に操るための定番ライブラリです。セルの読み書きだけでなく、グラフ作成機能も備わっており、レポート作成の完全自動化を目指す上で欠かせないツールです。
ドーナツチャートは、全体における各要素の割合を示すのに適したグラフです。円グラフと似ていますが、中央に穴が空いているのが特徴で、そのスペースに総数などの補足情報を記載することも可能です。視覚的に構成比を伝えたい場合に非常に有効です。
準備:グラフ作成のための環境構築とデータ用意
早速、グラフ作成の準備を始めましょう。
Step 1: openpyxlをインストールする
openpyxlがPCにインストールされていない場合、まずはインストールが必要です。お使いのターミナルやコマンドプロンプトで、以下のコマンドを実行してください。
pip install openpyxlpipコマンドはPythonのパッケージ管理ツールです。これにより、openpyxlライブラリが利用可能になります。
Step 2: グラフの元データを作成する
次に、ドーナツチャートで可視化するためのサンプルデータを準備します。 今回は「Webサイトの流入経路別セッション数」というシナリオでデータを作成し、それをExcelファイルに書き込むPythonコードを実行します。
import openpyxl
# 1. 新しいExcelワークブックとシートを作成
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "アクセス解析"
# 2. グラフの元になるデータを準備
# - ヘッダー: ["流入経路", "セッション数"]
# - データ: 各流入経路とそのセッション数
chart_data = [
["流入経路", "セッション数"],
["オーガニック検索", 1200],
["SNS", 750],
["リファラル", 450],
["広告", 980],
["ダイレクト", 320],
]
# 3. データをシートのセルに書き込む
for row in chart_data:
ws.append(row)
# 4. データを書き込んだファイルを一度保存する
wb.save("access_data.xlsx")
print("サンプルデータを含むExcelファイルを作成しました。")このコードを実行すると、スクリプトと同じ階層にaccess_data.xlsxというファイルが生成されます。ファイルを開くと、以下のようなデータが入力されていることが確認できます。
| A | B |
| 流入経路 | セッション数 |
| オーガニック検索 | 1200 |
| SNS | 750 |
| リファラル | 450 |
| 広告 | 980 |
| ダイレクト | 320 |
これで、グラフ作成の土台が整いました。
【実践】DoughnutChartを作成する基本コード
ここからが本番です。先ほど作成したデータを用いて、ドーナツチャートを作成し、Excelファイルに挿入するまでの一連のコードを解説します。
手順1: 必要なモジュールをインポートする
openpyxlから、グラフ作成に必須のDoughnutChart(ドーナツチャート本体)とReference(データ範囲指定用)をインポートします。
import openpyxl
from openpyxl.chart import DoughnutChart, Reference手順2: ワークブックを読み込み、チャートオブジェクトを生成する
まず、先ほど作成したデータ入りのExcelファイルを読み込みます。その後、DoughnutChart()を呼び出して、空のチャートオブジェクトを作成します。
# データを書き込んだExcelファイルを読み込む
wb = openpyxl.load_workbook("access_data.xlsx")
ws = wb.active # もしくは wb["アクセス解析"]
# ドーナツチャートのインスタンスを作成
chart = DoughnutChart()手順3: グラフ化するデータの範囲をReferenceで指定する
openpyxlでグラフを作る上で最も重要なのが、このデータ範囲の指定です。Referenceオブジェクトを使って、「シートのどの範囲をグラフのデータとして使うか」を明示的に定義します。
今回は、2つの範囲を指定します。
- ラベル(カテゴリ):A2セルからA6セル(”オーガニック検索” など)
- データ(値):B2セルからB6セル(”1200″ など)
# ラベルの範囲を指定 (A2セルからA6セル)
labels = Reference(ws, min_col=1, min_row=2, max_row=6)
# データの範囲を指定 (B2セルからB6セル)
data = Reference(ws, min_col=2, min_row=2, max_row=6)min_colは開始列番号(A列=1)、min_rowは開始行番号、max_rowは終了行番号を指します。ヘッダー行(1行目)は含めないのがポイントです。
手順4: チャートにデータとラベルを設定する
次に、作成した範囲オブジェクト(labelsとdata)を、チャートオブジェクトにセットします。 add_data()メソッドで数値データを、set_categories()メソッドでラベルデータを設定します。
# 数値データをチャートに追加
# title_from_data=True とすると、B1セルの値を系列名として使用する
chart.add_data(data, titles_from_data=True)
# ラベルデータをチャートに設定
chart.set_categories(labels)手順5: チャートのタイトルを設定する
グラフが何を示しているか一目でわかるように、タイトルを設定しましょう。
# グラフのタイトルを設定
chart.title = "流入経路別セッション数"手順6: ワークシートにチャートを追加して保存する
最後に、完成したチャートオブジェクトをワークシートに追加します。ws.add_chart()の第2引数に、チャートの左上角を配置したいセルの番地(例: D2)を指定します。
# チャートをD2セルの位置に追加
ws.add_chart(chart, "D2")
# 変更を保存
wb.save("access_report_with_chart.xlsx")
print("ドーナツチャートが追加されたExcelファイルを保存しました。")これで全ての工程が完了です。access_report_with_chart.xlsxを開いてみてください。指定した位置にドーナツチャートが描画されているはずです!
まとめ:Excelグラフ作成自動化の第一歩
今回は、Pythonのopenpyxlライブラリを使って、Excelにドーナツチャートを作成する基本的な手順を解説しました。
DoughnutChartとReferenceをインポートする- グラフの元となるデータをExcelファイルに準備する
Referenceでグラフの「ラベル」と「データ」の範囲を正確に指定するadd_dataとset_categoriesでチャートにデータを設定するadd_chartでシートの指定した位置にグラフを配置する
この基本フローをマスターすれば、棒グラフ(BarChart)や折れ線グラフ(LineChart)など、他の種類のグラフにも応用できます。 openpyxlには、今回紹介しきれなかったグラフのスタイル変更や、凡例の操作など、さらに豊富なカスタマイズ機能も用意されています。
日々のレポート作成業務にopenpyxlを取り入れ、面倒な手作業をPythonに任せてしまいましょう。ぜひ、この自動化の第一歩を踏み出してみてください。


コメント