0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python を使って Excel ワークシートにグラフを作成する方法

Posted at

現代の企業において、データに基づく意思決定の重要性はますます高まっています。販売分析から市場動向の追跡、プロジェクトのパフォーマンス評価に至るまで、分かりやすく視覚化されたデータは、分析効率を高めるだけでなく、経営層の意思決定にも自信を与えます。Excel は企業で最も一般的に使われるデータ分析ツールとして、表やグラフの機能が日常業務に欠かせません。しかし、数百件、数千件のデータを扱ったり、定期的なレポートを作成する場合、手作業でグラフを作るのは時間がかかり、ミスも起こりやすくなります。そこで Python の豊富なライブラリと強力なデータ処理能力を活用し、Excel グラフを自動生成することで、データの正確性を保ちながら作業効率を大幅に向上させることができます。

本記事では Free Spire.XLS for Python を使用して、Excel 上で棒グラフ、折れ線グラフ、円グラフ、バブルチャートを作成する方法を紹介します。実際の業務データを例に、自動化された可視化スキルを素早く習得できるように解説します。


1. 環境準備とライブラリのインストール

まずは Free Spire.XLS for Python をインストールします。

pip install spire.xls.free

インストールが完了したら、Excel ワークブックを作成し、データの準備を行います。以下は簡単な Excel ファイル作成の例です。

from spire.xls import Workbook

# 新しいワークブックを作成
wb = Workbook()
sheet = wb.Worksheets[0]
sheet.Name = "販売データ"

# 初期ファイルを保存
wb.SaveToFile("SalesData.xlsx")
wb.Dispose()
print("Excel ファイルを作成しました:SalesData.xlsx")

補足
Workbook オブジェクトは Excel ファイル全体を表し、Worksheets[0] は最初のワークシートを取得します。ここでは「販売データ」というワークシートを作成し、後続のデータ入力やグラフ作成の準備をしています。

なお、新規作成したワークブックにはデフォルトで Sheet1、Sheet2、Sheet3 が存在します。必要に応じて編集したり、削除して再作成することも可能です。


2. Excel に業務データを書き込む

ここでは、ある四半期における地域別の販売額を分析すると仮定します。コード内で直接データを生成してみます。

from spire.xls import Workbook

wb = Workbook()
sheet = wb.Worksheets[0]
sheet.Name = "販売データ"

# ヘッダーを書き込む
headers = ["地域", "製品", "販売額(百万円)"]
for col, header in enumerate(headers, start=1):
    sheet.Range[1, col].Text = header

# 日本語環境のサンプルデータを書き込む
sales_data = [
    ["関東", "ノートパソコン", 120],
    ["関東", "タブレット", 85],
    ["関西", "ノートパソコン", 95],
    ["関西", "タブレット", 70],
    ["九州", "ノートパソコン", 110],
    ["九州", "タブレット", 90],
]

for row, data in enumerate(sales_data, start=2):
    for col, value in enumerate(data, start=1):
        if isinstance(value, str):
            sheet.Range[row, col].Value = value
        else:
            sheet.Range[row, col].NumberValue = value

# 列幅を自動調整
sheet.Range.AutoFitColumns()

wb.SaveToFile("SalesData.xlsx")
wb.Dispose()
print("業務データを Excel に書き込みました")

ワークシートプレビュー

Python で Excel にデータを書き込んだ結果

補足
ここでは、3つの地域と2種類の製品の四半期販売データを例示しています。実際の業務に近いデータを用いることで、より意味のあるグラフを作成できます。


3. 棒グラフの作成:地域別製品販売の比較

棒グラフはカテゴリ間の比較に適しています。販売額を元に棒グラフを作成します。

from spire.xls import Workbook, ExcelChartType, Color

wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]

# 棒グラフを追加
chart = sheet.Charts.Add()
chart.DataRange = sheet.Range["A1:C7"]  # ヘッダーとデータを含む
chart.SeriesDataFromRange = False        # 列単位で系列を取得

# グラフの位置を設定
chart.LeftColumn = 1
chart.TopRow = 8
chart.RightColumn = 10
chart.BottomRow = 25

# グラフタイプを設定
chart.ChartType = ExcelChartType.ColumnClustered
chart.ChartTitle = "地域別製品販売額比較"
chart.ChartTitleArea.IsBold = True
chart.ChartTitleArea.Size = 12

# 軸のタイトルを設定
chart.PrimaryCategoryAxis.Title = "地域"
chart.PrimaryValueAxis.Title = "販売額(百万円)"

# 色とデータラベルを設定
for cs in chart.Series:
    cs.Format.Options.IsVaryColor = True
    cs.DataPoints.DefaultDataPoint.DataLabels.HasValue = True

wb.SaveToFile("SalesChart_Column.xlsx")
wb.Dispose()
print("棒グラフを作成しました:SalesChart_Column.xlsx")

ワークシートプレビュー

Python で Excel に縦棒グラフを作成しました結果

補足
chart.DataRange でデータ範囲を指定し、chart.ChartType でグラフの種類を設定します。DataLabels を有効にすると、各データポイントの値を表示でき、グラフがより直感的になります。


4. 折れ線グラフの作成:販売トレンドの把握

折れ線グラフは、販売の推移や時間変化を可視化するのに適しています。

from spire.xls import Workbook, ExcelChartType

wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]

chart_line = sheet.Charts.Add()
chart_line.DataRange = sheet.Range["A1:C7"]
chart_line.SeriesDataFromRange = False

chart_line.LeftColumn = 1
chart_line.TopRow = 9
chart_line.RightColumn = 9
chart_line.BottomRow = 29
chart_line.ChartType = ExcelChartType.Line
chart_line.ChartTitle = "販売トレンド分析"
chart_line.ChartTitleArea.IsBold = True
chart_line.ChartTitleArea.Size = 12
chart_line.PrimaryCategoryAxis.Title = "地域"
chart_line.PrimaryValueAxis.Title = "販売額(百万円)"

wb.SaveToFile("SalesChart_Line.xlsx")
wb.Dispose()
print("折れ線グラフを作成しました:SalesChart_Line.xlsx")

ワークシートプレビュー

Python で Excel に折れ線グラフを作成しました結果

補足
折れ線グラフにより、地域ごとの製品販売の変化トレンドが一目で分かり、経営者はデータの動きを迅速に把握できます。


5. 円グラフの作成:製品別販売比率の表示

円グラフは、総販売額に占める各製品の割合を示すのに適しています。

from spire.xls import Workbook, ExcelChartType

wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]

chart_pie = sheet.Charts.Add()
chart_pie.DataRange = sheet.Range["B2:C7"]  # 製品と販売額
chart_pie.SeriesDataFromRange = False
chart_pie.LeftColumn = 1
chart_pie.TopRow = 10
chart_pie.RightColumn = 8
chart_pie.BottomRow = 30
chart_pie.ChartType = ExcelChartType.Pie
chart_pie.ChartTitle = "製品別販売比率"
chart_pie.ChartTitleArea.IsBold = True
chart_pie.ChartTitleArea.Size = 12

# カテゴリ名と割合を表示
chart_pie.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasCategoryName = True
chart_pie.Series[0].DataPoints.DefaultDataPoint.DataLabels.HasPercentage = True

wb.SaveToFile("SalesChart_Pie.xlsx")
wb.Dispose()
print("円グラフを作成しました:SalesChart_Pie.xlsx")

ワークシートプレビュー

Python で Excel に円グラフを作成しました結果

補足
円グラフは各製品の総販売額に占める比率を直感的に示し、主力製品や市場分布の分析に役立ちます。


6. バブルチャートの作成:三次元データの可視化

バブルチャートは、地域、製品販売額、利益率など、3つの指標を同時に可視化できます。

from spire.xls import Workbook, ExcelChartType

wb = Workbook()
wb.LoadFromFile("SalesData.xlsx")
sheet = wb.Worksheets[0]

# 利益率列を追加
profit_rates = [0.15, 0.12, 0.13, 0.10, 0.14, 0.11]
for i, rate in enumerate(profit_rates, start=2):
    sheet.Range[i, 4].NumberValue = rate
sheet.Range[1, 4].Text = "利益率"

chart_bubble = sheet.Charts.Add(ExcelChartType.Bubble)
chart_bubble.DataRange = sheet.Range["B1:D7"]
chart_bubble.SeriesDataFromRange = False
chart_bubble.Series[0].Bubbles = sheet.Range["D2:D7"]  # バブルの大きさ
chart_bubble.LeftColumn = 1
chart_bubble.TopRow = 10
chart_bubble.RightColumn = 11
chart_bubble.BottomRow = 29
chart_bubble.ChartTitle = "販売額と利益率のバブルチャート"
chart_bubble.ChartTitleArea.IsBold = True
chart_bubble.ChartTitleArea.Size = 12

wb.SaveToFile("SalesChart_Bubble.xlsx")
wb.Dispose()
print("バブルチャートを作成しました:SalesChart_Bubble.xlsx")

ワークシートプレビュー

Python で Excel にバブルチャートを作成しました結果

補足
バブルチャートは販売額だけでなく、バブルの大きさで利益率を表すことで、多次元データの可視化を実現しています。


7. 技術的なポイントのまとめと主要クラス・メソッドの概観

これまでの章では、Free Spire.XLS for Python を使って棒グラフ、折れ線グラフ、円グラフ、バブルチャートを作成する方法を紹介しました。技術的な観点から見ると、グラフ作成の核心プロセスは以下の主要ステップに整理できます。

Python での Excel グラフ作成ステップまとめ

  1. データの準備
    業務データを Excel ワークシートに書き込みます。データの形式や範囲はグラフ作成の要件に沿っている必要があります。たとえば、数値列は Y 軸用、カテゴリ列は X 軸または分類用に使用します。

  2. グラフオブジェクトの追加
    sheet.Charts.Add() を使ってグラフオブジェクトを作成し、chart.DataRange でデータソースを指定します。

  3. グラフの種類と位置の設定
    chart.ChartType でグラフの種類(棒グラフ、折れ線グラフ、円グラフ、バブルチャートなど)を選択し、LeftColumnTopRowRightColumnBottomRow でワークシート上の位置を正確に指定します。

  4. タイトルと軸情報の設定
    chart.ChartTitlePrimaryCategoryAxis.TitlePrimaryValueAxis.Title などのプロパティで、グラフや軸にタイトルを設定します。フォントサイズや太字も指定可能です。

  5. グラフの装飾
    系列の色設定 cs.Format.Fill.ForeColor、データラベル DataLabels.HasValue、凡例の位置などを調整して、見やすさと視覚的な美しさを向上させます。

  6. ファイルの保存
    wb.SaveToFile() を使用して、作成したグラフを指定したファイルに保存します。

主要クラス・メソッド・プロパティ

クラス / メソッド / プロパティ 説明
Workbook Excel ワークブックオブジェクト。作成、読み込み、保存が可能
Workbook.LoadFromFile() ローカルファイルから Excel ワークブックを読み込む
Workbook.SaveToFile() Excel ファイルを指定したパスに保存
Worksheet 単一のワークシートを表す。データ操作やグラフ作成の主体オブジェクト
sheet.Range[row, col] 指定セルの値を取得・設定
sheet.Charts.Add() ワークシートに新しいグラフオブジェクトを作成
chart.DataRange グラフのデータソース範囲を指定
chart.SeriesDataFromRange 系列データの方向を設定(行単位または列単位)
chart.ChartType グラフの種類を設定(棒グラフ、折れ線グラフ、円グラフ、バブルチャートなど)
chart.ChartTitle グラフタイトルを設定
chart.PrimaryCategoryAxis.Title X 軸のタイトルを設定
chart.PrimaryValueAxis.Title Y 軸のタイトルを設定

これらの主要クラス、メソッド、プロパティを理解することで、さまざまなタイプのグラフを柔軟に作成し、業務ニーズに応じて細かくカスタマイズできます。技術的なポイントを押さえることで、実際のプロジェクトで高品質かつ読みやすい Excel の可視化レポートを迅速に生成し、コードの簡潔性と保守性も維持できます。


まとめ

本記事では、実際の業務データを例に、Free Spire.XLS for Python を使って Excel で棒グラフ、折れ線グラフ、円グラフ、バブルチャートを作成する方法を解説しました。プログラムによるグラフ作成により、手作業の煩雑さやミスを避けつつ、大量データや複雑な分析にも対応できます。

このスキルを習得すれば、データ分析とレポート作成を完全に自動化でき、時間を節約し効率を向上させるとともに、意思決定に信頼できる可視化を提供できます。さらに、Free Spire.XLS の条件付き書式、データ検証、数式操作などの機能と組み合わせることで、より高度な Excel 自動化ワークフローを構築し、企業のデータ価値を最大限に引き出すことが可能です。Python での Excel 操作についてさらに学びたい方は、Spire.XLS for Python 公式チュートリアル をご参照ください。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?