openpyxl条件付き書式:DataBarRuleで数値を直感的に可視化する

openpyxl

はじめに:数字の羅列から「直感的」な理解へ

PythonとopenpyxlでExcel帳票を自動生成する際、我々はしばしば数値データのリストを扱います。しかし、数字がただ並んでいるだけでは、そのデータが持つストーリー、例えば「どの項目が突出しているのか」「全体のばらつきはどの程度か」を瞬時に理解することは困難です。

この課題を解決し、数値を直感的に把握できる形に変換するための強力な手法が、条件付き書式の一機能である「データバー」です。

この記事では、openpyxlDataBarRuleクラスに焦点を当て、プログラムで数値をセル内グラフとして可視化し、レポートの価値を飛躍的に高める方法を解説します。

DataBarRule:数値可視化のルールエンジン

openpygxlにおいて、データバーのすべての振る舞いはopenpyxl.formatting.ruleモジュールに含まれるDataBarRuleクラスによって制御されます。これは、どのセル範囲の数値を、どのようなルールに基づいて視覚的なバーに変換するかを定義する、まさに「可視化のルールエンジン」です。

このDataBarRuleで定義したルールを、対象のワークシートのconditional_formatting.add()メソッドに渡すことで、データバーが適用されます。

DataBarRuleを構成する主要パラメータ

このルールエンジンを操るための主要なパラメータは以下の通りです。

  • start_type, end_type: バーの長さの最小値と最大値を、何に基づいて決定するかを指定します。通常は範囲内の最小/最大値を示す'min'/'max'が使われますが、'num''percent'も指定可能です。
  • color: 可視化に使用するバーの色をAARRGGBB形式の16進数文字列で指定します。データの性質に合わせて色を選ぶことが重要です。
  • showValue: True (デフォルト) または False を指定し、元の数値を表示するかどうかを制御します。
  • start_value, end_value: start_typeend_type'num'を指定した場合に、バーの0%と100%に相当する具体的な数値を設定します。

実践:DataBarRuleで売上データを可視化する

それでは、具体的なコードでDataBarRuleの使い方を見ていきましょう。

Step 1: 可視化対象のデータを用意する

まず、openpyxlで製品別の売上データが記載されたExcelファイルを作成します。

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "SalesData"

ws.append(["製品カテゴリ", "売上(百万円)"])
sales_data = [
    ("ガジェット", 125), ("アパレル", 88), ("書籍", 52),
    ("家電", 189), ("食品", 110)
]
for row in sales_data:
    ws.append(row)

wb.save("product_sales.xlsx")
print("可視化対象のデータファイルを作成しました。")

Step 2: DataBarRuleを定義して適用する

次に、この売上データ(B2:B6)にデータバーを適用し、数値を直感的に比較できるようにします。

from openpyxl import load_workbook
from openpyxl.formatting.rule import DataBarRule

wb = load_workbook("product_sales.xlsx")
ws = wb.active

# 可視化ルールを定義
# 範囲内の最小値と最大値に基づいて、青色のデータバーを表示
rule = DataBarRule(
    start_type='min', 
    end_type='max', 
    color="FF638EC6"  # 落ち着いた青色
)

# B2:B6の範囲にルールを適用
ws.conditional_formatting.add('B2:B6', rule)

wb.save("product_sales_visualized.xlsx")
print("データを可視化したファイルを保存しました。")

生成されたproduct_sales_visualized.xlsxを開くと、売上数値の横にその大きさを表すバーが表示されます。これにより、「家電」が最も売上が高く、「書籍」が最も低いことが、数字を一つ一つ比べなくても一瞬で理解できます。

可視化ルールをカスタマイズする

DataBarRuleのパラメータを変更することで、より意図に沿った可視化が可能です。

ケース1:進捗率を0%〜100%の基準で可視化

プロジェクトの進捗率など、絶対的な基準(0%から100%)でバーの長さを表現したい場合があります。この場合はstart_typenumに設定します。

# 0から100を基準とするルール
progress_rule = DataBarRule(
    start_type='num', start_value=0,
    end_type='num', end_value=100,
    color="FF63BE7B" # 進捗が良いことを示す緑色
)

# ws.conditional_formatting.add('C2:C10', progress_rule)

ケース2:グラフに特化させて数値を非表示に

時には、数値情報を隠してグラフとしての側面に特化させたいこともあるでしょう。showValue=Falseはそのための設定です。

Python

# 数値を非表示にし、バーだけを見せるルール
graph_only_rule = DataBarRule(
    start_type='min', 
    end_type='max', 
    color="FF638EC6",
    showValue=False
)
Code language: PHP (php)

まとめ:DataBarRuleは数値と人間の間の「翻訳者」

openpyxlDataBarRuleは、単にセルに色を付ける機能ではありません。それは、コンピュータが扱う無機質な数値を、人間が直感的に理解できる視覚情報へと「翻訳」するための強力なツールです。

  • **DataBarRule**で、数値の可視化(翻訳)ルールを定義する。
  • **start/end_typevalue**で、翻訳の基準(文脈)を定める。
  • **colorshowValue**で、翻訳結果の表現方法を調整する。

この「翻訳者」をあなたの自動化スクリプトに組み込むことで、生成されるExcelレポートは格段に分かりやすくなり、データから次のアクションへと繋がるスピードを加速させることができるでしょう。

コメント

タイトルとURLをコピーしました