Python in Excelを​より​便利に​使える​実践プラクティスの​紹介

PyCon JP 2025トーク資料

Creative Commons License This work is licensed under a Creative Commons Attribution 4.0 International License .

はじめに

自己紹介

  • Ryuji Tsutsui@ryu22e

  • さくらインターネット株式会社所属

  • Python歴は​14年くらい​(主に​Django)

  • Python Boot Camp、​Shonan.py、​GCPUG Shonanなど​コミュニティ活動も​しています

  • 著書​(共著)​:『Python実践レシピ

今回初​広島です

昨夜は​広島伝統の​味​「蓬莱」の​天津丼を​食べてきました。

「蓬莱」の天津丼

「蓬莱」の​天津丼

今​​日話したい​​こと

  • Excelブックに​Pythonコードを​埋め込める​Excelの​機能​「Python in Excel」の​紹介

  • Python in Excelを​実際に​使う上で​便利な​テクニックの​紹介

トークの​元ネタ

gihyo.jp さんの​連載『Python Monthly Topics』で​私が​書いた​以下の​記事を​元に​しています。

この​​トークの​​対象者

  • Excelの​基本的な​使い方が​分かる​人

  • Pythonの​基礎的な​文法が​分かる​人

この​​トークで​​得られる​​こと

  • Python in Excelの​概要

  • Python in Excelを​実際に​使う​際に​どう​書けばいいのか

トークの​​構成

  • Python in Excelの​概要に​ついて​軽く​説明

  • Python in Excel実践プラクティスの​紹介

Python in Excelの​概要に​ついて​軽く​説明

Python in Excelとは

  • Excelブックに​Pythonコードを​埋め込める​Excelの​機能

  • セルに​書かれた​データを​読み取り、​Pandasで​加工したり、​加工した​内容を​グラフで​描画できる

Python in Excelの​仕組み

イメージ図

イメージ図

Q. Excel上で​Pythonを​使えると​何が​嬉しいの?

  • Excelブックの​読み​書きが​できる​OpenPyXLなら既に​ある

  • JupyterLabや​Anacondaを​使えば​よくない?

A. こんな​ケースで​使うと​便利

こんなケースで使うと便利

「本年度の​売上推移を​まとめて​グラフに​しましたー」

A. こんな​ケースで​使うと​便利

こんなケースで使うと便利

(後​日)​「あれっ、​この​データ間​違ってない?」

JupyterLab、​Anacondaなどを​使っている​場合

JupyterLab、Anacondaなどを使っている場合

「この​数値を​修正しましたー。​グラフの​再作成を​お願いします。」

Python in Excel​使っている​場合

Python in Excel使っている場合

「数値を​修正したら​コードが​再実行されてグラフが​再作成された!」

Python in Excelの​便利な​ところ

データを​編集する​人と​Pythonを​書く​人の​責務を​分離できる。

導入方​法​(2025年9月時点)

現在、​Excelは​以下の​プラットフォーム用の​アプリケーションが​ある。

  • Excel for Windows

  • Excel for Mac

  • Excel on the web

  • Excel for iPad / iPhone / Android

参考: https://support.microsoft.com/ja-jp/office/excel-での​-python-の​可用性-781383e6-86b9-4156-84fb-93e786f7cab0

Excel for Windowsの​場合

以下の​サブスクリプションで​利用可能。

  • Enterprise / Business

  • Family / Personal

Excel for Macの​場合

以下の​サブスクリプションで​利用可能。

  • Enterprise / Business

  • Family / Personal​(ただしプレビュー版)

Excel on the webの​場合

以下の​サブスクリプションで​利用可能。

  • Enterprise / Business

  • Family / Personal​(ただしプレビュー版)

Excel for iPad / iPhone / Androidの​場合

非対応​(Pythonコードを​含むExcelブックを​表示できるが、​再計算は​できない)。

使い方

任意の​セルで​=PY(と​入力するか、​Ctrl + Alt + Shift + Pを​入力。

簡単な​計算を​やってみる​(デモ)

テーブルを​読み込んで​グラフを​作ってみる​(デモ)

Python in Excel実践プラクティスの​紹介

  1. 元の​データは​Python以外を​使って​加工しない

  2. コードは​複数の​セルに​分割して​書く

  3. 各セルに​「文字列リテラルの​コメント」を​書く

  4. グラフの​描画時に​日本語フォントを​指定する

  5. その​他Tips

実践プラクティスの​情報ソースに​ついて​紹介

Python in Excelを​便利に​使いこな​すための​プラクティスを​紹介している​サイトを​紹介します。​ 本トークの​内容は、​これらの​サイトを​ベースに​作成しています。

実践プラクティスの​情報ソースに​ついて​紹介

1. 元の​データは​Python以外を​使って​加工しない

Python Boot Camp開催実績

Python Boot Camp開催実績

これを​Python in Excelで​扱う際、​不要な​データが​いくつか含まれている。

前述の​例の​中で​不要な​データ

前述の例の中で不要なデータ

前述の​例の​中で​不要な​データ

不要な​データを​どうやって​取り除くか?

  • Excelブックを​直接編集して、​不要な​データを​削除しない​ほうが​いい

  • 直接編集する​ことで、​別の​目的で​統計処理を​行うのが​難しくなる​場合が​ある

  • 不要な​データは​Pythonコードを​使って​取り除く

Pythonコードの​例

# データの読み込み
# xl()関数の第1引数でテーブル名を、第2引数でテーブルのヘッダーを除いて取得するかを指定
df = xl("PyCamp開催実績[#すべて]", headers=True)

# 採番されていない行(年度を表す行)を除去
# df["No."]は「No.」列の値を取得
filtered_df = df[pd.to_numeric(df["No."], errors="coerce").notnull()]
# イベントが中止になった行を除去
filtered_df = filtered_df[~filtered_df["イベント"].str.contains("中止")]

# 参加者の「名」を除去して数値に変換
filtered_df["参加者"] = filtered_df["参加者"].str.replace("名", "")
filtered_df["参加者"] = filtered_df["参加者"].astype(int)

前述の​内容の​デモ

2. コードは​複数の​セルに​分割して​書く

悪い​例:

前述の​例の​何が​問題か

  1. 長い​コードだと​自分が​読みたい​コードだけに​フォーカスしにくい

  2. 共通の​ロジックを​再利用しに​くい

  3. コードの​途中の​変数の​内容を​確認しにくい

改善例

前述の​コードを​複数の​セルに​分割して​書く​:

複数セルに​Pythonコードを​書いた​場合の​実行順序

Pythonの実行順序

Pythonの​実行順序

複数セルに​Pythonコードを​書いた​場合の​実行順序​(デモ)

3. 各セルに​「文字列リテラルの​コメント」を​書く

悪い​例:

#で​コメントすると​何が​困るか

  • #の​コメントだと、​該当セルを​クリックしないと​内容が​読めない

  • Excelブックを​開いた​ときに​処理全体の​概要を​把握しにくい

では、​どうするか

最後の​行に​「文字列リテラルの​コメント」を​書く。

df = xl("日常生活圏域等別データ[#すべて]", headers=True)
"データの読み込み"

「⁠文字列リテラルの​コメント」とは

  • Python in Excelでは、​最後の​行の​値が​セルに​表示される​仕様

  • これを​利用して、​最後の​行に​文字列リテラルを​書き、​コメントの​代わりに​使う

「⁠文字列リテラルの​​コメント」を​使うと​こうなる

デモを​やります。

「文字列リテラルの​コメント」の​欠点

変数の中身を確認できなくなる

変数の​中身を​確認できなくなる

変数の​中身を​確認するには

「文字列リテラルの​コメント」を​コメントアウトする。

df = xl("日常生活圏域等別データ[#すべて]", headers=True)
# "データの読み込み"

個人的な​願望

Excel自体に​各セルの​コメントを​表示させる​機能が​追加されて、​「文字列リテラルの​コメント」みたいな​ハック的な​ことを​しなくて​済むようになれば​いいなー。

4. グラフの​描画時に​日本語フォントを​指定する

グラフに​日本語を​埋め込む​場合、​デフォルトだと​こうなる。

フォントの​指定方​法

メイリオフォントが​あるので、​これを​使う。

# seabornの場合
sns.set(font="Meiryo")  # 日本語フォントを指定
# matplotlibの場合
plt.rcParams["font.family"] = "Meiryo"

フォントの​指定方​法の​デモ

5. ​その​他Tips

その​他の​細かい​Tipsに​ついて​紹介します。

  • Power Queryと​組み合わせて​使う

  • チートシートを​活用する

Power Queryと​組み合わせて​使う

  • Python in Excelは、​セキュリティ上の​制約に​より、​ネットワーク通信が​できない

  • そんな​ときは、​Power Queryと​いう​別の​機能と​組み合わせると​いい

チートシートを​活用する

Anacondaが​公開している​以下の​チートシートが​あると​便利。

Master Python in Excel with Anaconda’s Python in Excel Cheat Sheet | Anaconda

最後に

まとめ

Python in Excelは​以下の​プラクティスを​取り入れると​便利!

  1. 元の​データは​Python以外を​使って​加工しない

  2. コードは​複数の​セルに​分割して​書く

  3. 各セルに​「文字列リテラルの​コメント」を​書く

  4. グラフの​描画時に​日本語フォントを​指定する

ご清聴​ありがとう​ございました

Python in Excelの便利さに熱狂する広島県民たち

Python in Excelの​便利さに​熱狂する​広島県民たち