Python in Excelをより便利に使える実践プラクティスの紹介
PyCon JP 2025トーク資料

はじめに
自己紹介
-
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などを使っている場合

「この数値を修正しましたー。グラフの再作成をお願いします。」
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
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実践プラクティスの紹介
-
元のデータはPython以外を使って加工しない
-
コードは複数のセルに分割して書く
-
各セルに「文字列リテラルのコメント」を書く
-
グラフの描画時に日本語フォントを指定する
-
その他Tips
実践プラクティスの情報ソースについて紹介
Python in Excelを便利に使いこなすためのプラクティスを紹介しているサイトを紹介します。 本トークの内容は、これらのサイトをベースに作成しています。
実践プラクティスの情報ソースについて紹介
1. 元のデータはPython以外を使って加工しない

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. コードは複数のセルに分割して書く
悪い例:
前述の例の何が問題か
-
長いコードだと自分が読みたいコードだけにフォーカスしにくい
-
共通のロジックを再利用しにくい
-
コードの途中の変数の内容を確認しにくい
改善例
前述のコードを複数のセルに分割して書く:
複数セルに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は以下のプラクティスを取り入れると便利!
-
元のデータはPython以外を使って加工しない
-
コードは複数のセルに分割して書く
-
各セルに「文字列リテラルのコメント」を書く
-
グラフの描画時に日本語フォントを指定する
ご清聴ありがとうございました

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