Python

【サンプルコード付き】PythonでのExcel操作でできること5選!

python_excel
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、PythonでのExcel操作のやり方についてコード付きで解説していきます。実務でもよく利用されるExcel!Pythonを使って作業を効率化していきましょう!

こんにちは!スタビジ編集部です!

今回はPythonを使ったExcel操作のやり方について解説していきます。

実務でもよく使われるExcel!ただ、以下のように感じる方も多いのではないでしょうか。

手動でデータをまとめたり、グラフを作ったりが面倒、、、
いつも同じような作業するから効率化したい!

Pythonを使ってExcelの操作を効率化していきましょう!

Excelの勉強方法については以下の記事でまとめているので参考にしてみて下さい。

excel
Excelを勉強したい初心者へ!独学で学ぶ方法3ステップを紹介 こんにちは!スタビジ編集部です! グラフ作成やデータ集計など"Excel"を仕事で使う人は多いのではないでしょうか...

詳しくPythonでExcelを操作する方法を知りたい方は以下のUdemyコースで僕が講師で教えてますので参考にしてみてください!

【初心者向け】PythonでExcelを操作して煩雑な日々の業務を効率化・自動化する方法を学ぼう!

【時間】3.5時間
【レベル】初級

PythonでExcelを操作して日々の煩雑な業務を効率化・自動化して解放されたいならこれ!

\30日以内なら返金無料/このコースを見てみる
ウマたん
ウマたん
また当メディアが運営するスタアカの以下のコースでPythonの基礎をマスターできます!ぜひ参考にしてみて!

PythonでExcelを操作するメリット

PythonでExcelを操作することってどんなメリットがあるのか、簡単に見ていきましょう。

PythonでExcelを操作するメリットは以下になります。

・自動化による効率化
・データ処理や分析への利用
・他のツールとの連携

それぞれ見ていきましょう。

自動化による効率化

Excelでの操作をPythonのコード化することで繰り返し行う作業は自動化することが可能です。

また手動作業に比べて、ヒューマンエラーの発生を抑えられるので、作業品質の向上にもつながります。

データ処理や分析への利用

Pythonはデータ処理や分析のためのライブラリを多くサポートしています。

そのためExcelで集めたデータを処理・分析したい場合Pythonとの親和性が高いです。

Excel上で手動でデータを加工したり、グラフを作ったりするのではなく、Pythonにデータを取り込み作業することで、ライブラリを使ったより効果的な分析が可能になります。

他のツールとの連携

PythonはExcel操作だけでなくデータベース接続や機械学習、API利用など様々な用途に対応できます。

そのため、Excelを他のツールと連携することでより高度な分析や作業効率化につなげることが可能です。

PythonでExcelの操作実践

実際にPythonでExcel操作をしていきましょう。

今回は以下の操作を行っていきます。

・Excelファイルの作成
・Excelのデータを編集する
・Excelの関数を使う
・グラフを作成する
・pandasを使ったデータ入力

本記事でのPythonの作業は「Jupyter Notebook」で行っています。

Jupyter Notebookについては以下の記事で解説しているので、参考にしてみて下さい。

Pythonの使い方
【5分で分かる】Jupyter notebookの使い方!インストール方法からPython基礎構文当サイト【スタビジ】の本記事では、本記事では、PythonそしてPythonを簡易的に実行できる環境であるJupyter notebookの使い方について簡単に解説していきます。Pythonを使えると作業を自動化できたり高度なデータ分析が出来たり幅が広がります!ぜひPythonをマスターしましょう!...

PythonでExcelファイルを作成する

ここではPythonで「Excelファイルの作成」操作をやっていきます。

まずPythonでExcelを操作するのに必要なライブラリ”openpyxl“をインストールします。

pip install openpyxl

openpyxl“はPythonでExcelファイルを読み書きするためのオープンソースのライブラリです。

PythonからOffice Open XML 形式をネイティブに読み書きするためのライブラリがなかったということで、有志によって開発されました。

openpyxlをインポートしてExcelファイルを作成します。

import openpyxl
from openpyxl import Workbook

# 新しいワークブック(Excelファイル)を作成
wb = Workbook()

# アクティブなシートを取得
ws = wb.active

# シート名を変更
ws.title = "samplesheet"

# A1セルにデータを書き込む
ws['A1'] = "Hello, World!"

# ファイルを保存
wb.save("sample.xlsx")

openpyxlライブラリの”Workbook()クラス“を使うことで、Excelファイルの作成や中身のシートやセルの操作を行うことが出来ます。

実際にフォルダを見てみると”sample.xlsx”が作成されていて、中身も指定された内容になっています。

python_excel
ウマたん
ウマたん
Excel操作をするためのPythonライブラリがあることにびっくり!

おかげでExcelファイルの作成も簡単に出来るね!

PythonでExcel内のデータを呼び出す

続いてPythonで「Excel内のデータの呼び出す」操作をしていきましょう。

最初に既存のExcelファイルに対してデータの書き込みを行います。

from openpyxl import load_workbook

# 既存のExcelファイルをロード
wb = load_workbook('sample.xlsx')

# 既存のシート読み込み
ws = wb['samplesheet']

# データを書き込む
ws['A1'] = "名前"
ws['B1'] = "年齢"
ws['A2'] = "Alice"
ws['B2'] = 30
ws['A3'] = "Bob"
ws['B3'] = 25

# ファイルを保存
wb.save('sample.xlsx')

既存のExcelファイルの読み込みには”load_workbook関数“を使用します。

データの書き込みは書き込むシートおよびセルを指定して、そこにデータを入力します。

またセルの指定はセル名ではなく行番号と列番号を指定して、値を入力することも可能です。

ws.cell(row=4, column=1).value = "John"
ws.cell(row=4, column=2).value = 28

Worksheetオブジェクトの”cellメソッド“を使うことで行番号・列番号をしてセルの操作が出来ます。

実際にExcelを見るとデータが入力されていることが確認できます。

python_excel

続いて、Excel内のデータを呼び出す方法について見ていきます。

# 既存のExcelファイルをロード
wb = load_workbook('sample.xlsx')

# 既存のシート読み込み
ws = wb['samplesheet']

# 特定のセルのデータを読み込む
a1_value = ws['A1'].value
b2_value = ws.cell(row=2, column=2).value

# データを表示する
print(f"A1: {a1_value}")
print(f"B2: {b2_value}")

データの表示は”cell.value“でそのセルの値を取得することが出来ます。

また、for文を活用することで複数セルの値を一度に取得することも可能です。

# セル範囲のデータを読み込む
for row in ws['A1:B3']:
    for cell in row:
        print(cell.value, end=' ')
    print()  # 改行

上記では行ごとにセルの値を表示しています。

他にも”ws.iter_rowsメソッド“を利用することで、シート内のすべての行を表示することも出来ます。

# すべての行のデータを読み込む
for row in ws.iter_rows(values_only=True):
    print(row)

“ws.iter_rowsメソッド”では指定した行の反復処理をするために使用されます。

このメソッドのパラメータ”values_only”に”True”を設定するとセルの値のみを返すため、すべての行のデータを読み込むことが出来ます。

実際の出力結果は以下のようになります。

python_excel
ウマたん
ウマたん
openpyxlを使うと簡単にExcel内のデータを簡単に取得できる!

Excelの関数を使う

Pythonのコード内で「Excelの関数を使った操作」について見ていきましょう。

まずは簡単な算術演算を使った操作について見ていきます。

from openpyxl import Workbook

# 既存のExcelファイルをロード
wb = load_workbook('sample.xlsx')

# 新しいシートを作成
ws = wb.create_sheet(title='function')

# データを入力
data = [
    ["商品", "個数", "値段", "合計"],
    ["りんご", 5, 100],
    ["バナナ", 7, 150],
    ["オレンジ", 4, 120]
]

for row in data:
    ws.append(row)

# D列に個数と値段の掛け合わせを入力
for row in range(2, 5):
    ws[f'D{row}'] = f'=B{row}*C{row}'
    
# セルにSUM関数の数式を入力
ws['D5'] = '=SUM(D2:D4)'

# ファイルを保存
wb.save("sample.xlsx")

データの入力には”ws.appendメソッド“を使う方法もあり、このメソッドではリストまたはタプルとして与えられたデータを新しい行に追加していきます。

セル同士の掛け算はExcelと同様に「セル名×セル名」で計算することが出来ます。

Excel関数の入力はデータ入力と同じくセルを指定して、そこにExcelの関数を代入することで実現できます。

実際にExcelを開くと、指定したセルに数式や関数が入力されているのが確認できます。

python_excel

ただし、この方法ではExcelのセルに関数を入力する必要があります。

せっかくPythonで操作しているので、Pythonの関数でExcel関数を模倣して実行してみましょう。

from openpyxl import Workbook, load_workbook

def vlookup(sheet, lookup_value, lookup_column, return_column):
    """
    VLOOKUP関数をPythonでシミュレートする。
    :param sheet: 検索対象のシート
    :param lookup_value: 検索する値
    :param lookup_column: 検索対象の列番号(1から始まる)
    :param return_column: 返す値の列番号(1から始まる)
    :return: 見つかった値
    """
    for row in sheet.iter_rows(min_row=2, max_col=sheet.max_column, values_only=True):
        if row[lookup_column - 1] == lookup_value:
            return row[return_column - 1]
    return None

# 既存のExcelファイルをロード
wb = load_workbook('sample.xlsx')

# 既存のシート読み込み
ws = wb['function']

# Python内でVLOOKUPを実行
result = vlookup(ws, "りんご", 1, 2)

# 結果を出力
print(f"りんごの個数: {result}")

VLOOKUP関数をPythonの関数として定義することで、Excelのセル内に直接関数を入力しなくても必要な情報を取ってくることが出来ます。

ウマたん
ウマたん
Excelの関数をセルに入力して使うこともPythonの関数として定義して使うことも出来る!

Pythonで操作することで、出来ることが増えるね!

グラフを作成する

Excel操作でよく利用される「グラフの作成」操作を見ていきましょう。

グラフの作成ではまずopenpyxlの”Referenceクラス“を使ってグラフを作成するデータの範囲を指定します。

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
from openpyxl.utils import get_column_letter

# 既存のExcelファイルをロード
wb = load_workbook('sample.xlsx')

# 新しいシートを作成
ws = wb.create_sheet(title='chart')

# データを入力
data = [
    ["日付", "売上"],
    ["2024-01-01", 1500],
    ["2024-01-02", 2000],
    ["2024-01-03", 1700],
    ["2024-01-04", 2300],
    ["2024-01-05", 2200]
]

for row in data:
    ws.append(row)

# グラフ用のデータ範囲を指定
date_col = Reference(ws, min_col=1, min_row=2, max_row=6)
sales_col = Reference(ws, min_col=2, min_row=1, max_row=6)

Referenceクラスでは参照するワークシート、データ範囲の開始列~終了列、開始行~終了行を設定することでデータ範囲を指定できます。

データ範囲を指定した後は、openpyxlのChartクラスを使って、グラフを作成します。

Chartクラスには主に以下があります

  • BarChart:棒グラフを作成するためのクラス
  • LineChart:折れ線グラフを作成するためのクラス
  • PieChart:円グラフを作成するためのくらす
  • ScatterChart:散布図を作成するためのクラス
  • AreaChart:面グラフを作成するためのクラス

今回は”BarChartクラス”を使って棒グラフを作成します。

# 棒グラフを作成
bar_chart = BarChart()
bar_chart.add_data(sales_col, titles_from_data=True)
bar_chart.set_categories(date_col)
bar_chart.title = "日次売上"
bar_chart.x_axis.title = "日付"
bar_chart.y_axis.title = "売上"

# グラフをシートに追加
ws.add_chart(bar_chart, "D2")

# Excelファイルを保存
wb.save("sample.xlsx")

“BarChartクラス”の”add_dataメソッド”でReferenceクラスで指定したデータ範囲をグラフに追加しています。

“set_categoriesメソッド”で日付をカテゴリーとして設定しました。

実際の作成したグラフが以下になります。

python_excel
ウマたん
ウマたん
グラフもPythonを使って作成できる!

同じようなグラフを作る場合はPythonでやった方がコードを再利用できる分楽になりそう!

pandasを使ったデータ入力

これまで”openpyxl“を使ったExcel操作を見ていきました。

PythonでExcelを操作する際はopenpyxlが一般的ですが、他に”pandas“を使ってもExcel操作が可能です。

pandas“はデータ分析の際のデータの読み込みや前処理や集計、可視化などによく使われるライブラリになります。

pandasについては以下の記事で詳しくまとめているので、参考にしてみて下さい。

pandas
【入門者向け】PythonのPandasの使い方について簡単にまとめておく!当サイト【スタビジ】の本記事では、Pythonで頻繁に使われるPandasについて簡単にまとめておきたいと思います!データの読み込みや前処理や集計、可視化などによくつかわれるPandasについてしっかりおさえておきましょう!また最後にはPandasを含めたPythonの基礎文法の勉強方法についてまとめておきますよ!...

では実際にpandasを使ってExcelシートを読み込んでみます。

import pandas as pd

# Excelファイルの読み込み
df = pd.read_excel('sample.xlsx', sheet_name='function', usecols="A:C", nrows=3)

# 読み込んだデータフレームを表示
print(df)

pandasの”read_excel関数“でExcelファイルの読み込みが出来ます。

“read_excel関数”では”usecols”で読み込む列を指定するといったオプションを使って読み込む情報を制限します。

python_excel

Excelファイルへのデータの書き込みはpandasでデータフレームを作成してそれを追加する形で行います。

# 新しいデータを追加
new_data = {
    '商品': ['いちご'],
    '個数': [8],
    '値段': [200]
}
df = df.append(pd.DataFrame(new_data), ignore_index=False)

# データフレームをExcelファイルに書き込む
with pd.ExcelWriter('sample.xlsx', engine='openpyxl', mode='a') as writer:
    # データフレームを新しいシートとして追加
    df.to_excel(writer, sheet_name='pandas', index=False)

Excelファイルへの書き込みは”ExcelWriterクラス“を利用します。

“ExcelWriterクラス”でファイル名、Excelファイルのエンジン、書き込みモードを指定してExcelファイルを開きます。

書き込みモードはデフォルトは”w”で新規にファイルを作成しますが、”a”を指定すると既存のファイルへ書き込みすることが出来ます。

Excelを開くとデータが追加されていることを確認できます。

python_excel
ウマたん
ウマたん
pandasを使ってもExcelのデータを読み書きが出来る!

PythonでExcel操作 まとめ

PythonでのExcel操作について”openpyxl”と”pandas”での操作方法を見ていきました。

以下のような場合分けで使い分けると良いと思います。

・Excel自体を操作してデータを入力したり、グラフ作成したりする場合
⇒”openpyxl

・Excelのデータを取り込んでデータ分析したい場合
⇒”pandas

ウマたん
ウマたん
PythonでExcelの操作が簡単に出来ることがわかったね!

他のPythonのライブラリと組み合わせて、いろんなことを試してみよう!

冒頭にもお伝えしましたが、詳しくPythonでExcelを操作する方法を知りたい方は以下のUdemyコースで僕が講師で教えてますので参考にしてみてください!

【初心者向け】PythonでExcelを操作して煩雑な日々の業務を効率化・自動化する方法を学ぼう!

【時間】3.5時間
【レベル】初級

PythonでExcelを操作して日々の煩雑な業務を効率化・自動化して解放されたいならこれ!

\30日以内なら返金無料/このコースを見てみる

また、Excelで収集したデータをデータ分析したいと思った方は、当メディアが運営する教育サービス「スタアカ(スタビジアカデミー)」の講座をチェックしてみてください。

AIデータサイエンス特化スクール「スタアカ」

スタアカトップ
【価格】ライトプラン:1280円/月
プレミアムプラン:149,800円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
SQLとPythonを組み合わせて実データを使った様々なワークを行う
マーケティングの実行プラン策定
マーケティングとデータ分析の掛け合わせで集客マネタイズ

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!

24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!

Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ

スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら