2024.12.19

Power QueryとPython in Excelとの相乗効果

Python in ExcelとPower Queryで実現する効率的なデータ処理

小西 宏明 

データ活用/分析の業務では、データを扱う上での手軽で強力なツールの一つとしてプログラミング言語のPythonが用いられることがある。また、データ分析の各種書籍や研修においても学習時に使用するツールとしてPythonを想定しているケースが多い。しかし、Pythonを実務で扱う環境を持っていない、あるいは環境の構築や運用に苦慮しているケースが散見される。例えば、環境がお膳立てされた研修でPythonを学んだものの、職場ではPythonを使える環境がないため環境導入から始める必要があり、その目途もなかなか立たず、すぐに実質的な効果に結びつかないといった残念なケースを頻繁に耳にする。また、Pythonを多用しているデータ活用の先進企業であっても、現場によってはシステム環境の種々の制約の下でPythonの導入が困難なPCを保持している場合も少なからずある。
こうしたケースでPython in Excelを活用すれば、環境構築の手間を省いて即座にPythonの活用を図れる場合がある。さらにその際、データの前処理をPower Queryで実施した後にPython in Excelに読み込めば、見通し良くデータを扱うことができる。
本稿では、Excelの最新機能であるPython in Excel単体でのメリットに加えて、Python in ExcelとPower Queryを組み合わせたユースケースが効果的であることを示したい。

はじめに

本稿の前段として、「企業であまり使われていないPower Query(パワークエリ)の威力 ~Power Queryを活用した基本事項点検のススメ~」と題した記事を掲載した。
本稿では、実務に即効性があるMicrosoftのExcelに標準具備されたPython in Excel [1]とPower Query[2]を組み合わせて用いることによる威力や活用場面について解説する。なお、ここではPython in Excelの具体的な利用方法には深く触れないため、より詳しく知りたいという方はExcel内のチュートリアル、Microsoft Support等を参照いただきたい。

1.Python in Excelとは?

Python in Excelはプログラミング言語であるPythonをExcelの標準機能として備えたもので、これによりExcelのブック内で容易にPythonを実行できるようになった。Python in Excelは2024年9月から、Microsoft 365のEnterpriseおよびBusinessユーザー向けに正式に提供が開始された。

読みやすくシンプルなコード、豊富なライブラリ、書籍等の情報源が豊富であること等の利点により、ある程度発展的なデータ活用業務で利用したくなるのがPythonであるが、環境構築の手間があった。しかしPython in Excelを活用することで、環境構築にコストを費やすことなく、より高度なデータ分析が可能となる。Pythonの環境構築に苦労したことのある実務担当者の方であれば、その利点は言うまでもないだろう。
しかしながら、Excelのバージョン(Officeのバージョン)が古い場合にはこの機能が現れてこないこともあり、一般の認知度はまだかなり低い印象がある。本稿を執筆している2024年12月時点では、ほとんど知られていないと言っても過言ではない。

2025年にかけてOfficeのバージョンアップが各企業で進んでいくことが予想されるため、認知度が向上していくのは、ある程度は時間の問題と考えている。他方、前回記事でPower Queryの一般認知度の低さに言及したように、Power Queryは10年以上前から存在するにも関わらず、未だに知らない人が多い状況が続いているのも現実だ。
このことを踏まえ、Power Query同様、追加の費用負担なしで使える優れた機能であるにも関わらず、Python in Excelも同じような状況が何年も続くとすればもったいない話であると考えたことが本稿執筆に至った動機である。

2.Python in Excelはどこにあるのか?

古いバージョンのExcelを利用している場合には、まず、前提としてExcelの(Officeの)バージョンアップが必要となる。公式説明[1]によると、Python in Excelは、Microsoft 365のEnterpriseおよびBusinessユーザー向けに提供されている。バージョン2408(Build 17928.20114)以降で利用可能であることに注意しなければならない(それ以前のバージョンのExcelには出てこない)。また本稿執筆時点ではMac版で利用できない等の制約もある。その他、Python in Excelの利用に係る制約条件についてはMicrosoftの最新の公式説明を参照されたい。

まず、Excelの「数式」タブにある「Pythonの挿入」ボタンをクリックする(図1)。これにより、選択したセルにPythonのコードを入力できるようになる。または、セルに=PYと入力してPythonの関数を有効にすることもできる(図2)(操作方法の説明は[3]を参考に記載)。

図1:数式タブの中のPythonの挿入

(サンプル画像はData for Titanic passengers [4]を題材のデータとして利用し著者作成)

図2:=PYによる「Python式を作成」の呼び出し

 
そうすると、数式バーの欄にPYという文字が表示され、この数式バーにPythonのコードを書くことができる。コードは各セルに保存される仕組みとなっている(図3)。

図3:数式バーにおけるPythonの数式記入例および実行例

(サンプル画像はExcelに標準搭載のIrisデータセットによるペアプロットの例を基に著者作成)

 
なお、この数式バーでは狭くてコードを書きにくいと感じる場合には、別ウィンドウでエディターを開いてコーディングすることもできる(図4)。

図4:Pythonエディター画面

(サンプル画像はExcelに標準搭載のIrisデータセットによるペアプロットの例を基に著者作成)

 
操作方法については、Excel内のチュートリアルも豊富である。チュートリアルには、Python in Excelの操作方法の基礎からpandasによる記述統計の出力や各種グラフのサンプル、線形回帰での活用例などが豊富に掲載されている(図5)。

図5:Excel内のPython in Excelに関するチュートリアル(基礎を学ぶ)

 

3.Python in Excelの利点

繰り返しになるが、Python in Excelの利点は環境構築が不要なことに尽きる。さらには代表的なライブラリはあらかじめインポートされているため、宣言(import)なしで用いることができる。例えば後述する図6では、pandasをインポートするコードを書くことなく、即座にデータフレームに読み込んでいることが見て取れる。
具体的に言うとPython in Excelには、データ分析や可視化に役立ついくつかの主要なオープンソースライブラリが含まれている。次に挙げるライブラリはデフォルトでインポートされており、特別な準備なしで利用可能である。これらのライブラリを使用して、Excel内で高度なデータ分析や視覚化を行うことができる。

  • Matplotlib: データの可視化を目的とし、多様なグラフを作成する
  • NumPy: 数値計算や配列操作を効率的に行う
  • pandas: データ操作や分析に特化しており、データの読み込み、集計などを行う
  • seaborn: 高度な統計グラフを作成する
  • statsmodels: 統計モデルの推定と検定を行う

さらには、他にも必要に応じ、追加のライブラリをインポートすることも可能である(ライブラリに関する記述は[5]を参考に記載)。

4.Python in ExcelとPower Queryを組み合わせて活用することによる主要なメリット

Python in Excel単体でもなかなか便利であるが、これをPower Queryと組み合わせることで次のようなメリットがある。
 
(1)それぞれの得意分野を最大限生かせる
Python in Excel がデータの可視化を得意とする一方、Power Queryは分かりやすいGUIでのデータ取得・加工を得意とする。そのため、Power Queryで処理したきれいなデータをもとに、Python in Excelを用いて高度な集計や解析を実行できる。Pythonが苦手な処理やPythonで書くと煩雑になるデータ前処理はPower Queryで予め行う等の役割分担を工夫しつつ、それぞれを作りこんでいくことができる。

(2)処理内容の可読性、トレーサビリティが高い
まず、Power Queryの処理内容はビジュアルにGUIで確認することができる。各処理が視覚的に分かりやすく記録されるため、処理の履歴などを簡単に追跡できる。そして、煩雑なデータロード、データ統合、クレンジングなどの前処理はPower Queryで済ませていることで、Pythonのコーディング量は最小限で済む。これにより、可読性・追跡可能性が高く見通しの良い処理が可能となる。

(3)Power QueryからPythonまで、一連の処理をまとめて実行できる
ワンクリックですべてを実行できるため、前処理から可視化までの一連の処理内容を変更しながらの試行錯誤がしやすい。そして、一度確立したPower Queryの変換ステップやPythonコードは、テンプレートとして同じ形状をした他のデータセット(更新されたデータ、データの追加等)に転用可能である。これにより、処理手順を一度確立すれば、更新や再集計はスクリプトの再実行のみで容易に行えるため、業務プロセス全体の効率化が実現可能である。

これらが、何らの環境準備や追加的な費用負担もなく行えることは、データ活用の実務担当者として非常に嬉しく感じる方も多いのではないだろうか。本格的なシステム構築には向かないとしても、軽くデータを触ってみよう、勉強のために使ってみようという方には、環境構築というハードルがないことが非常に大きなメリットとなると考える。

以上のメリットを具体的なイメージとともに見ていこう。

●Power Queryできれいなデータを作り、 Python in Excelで分析する
以下の例では、まずPower Queryでデータをクレンジングしてtrainという名前のテーブルに読み込み、それをN1セルでデータフレームdataに読み込んでいる。また前述の通り、pandasをインポートするコードを書くことなく、即座にデータフレームに読み込んでいることが見て取れる。

図6:Power Queryで前処理後のテーブルをデータフレームに読み込み

(サンプル画像はData for Titanic passengers [4]を題材のデータとして利用し著者作成)

 
元のタイタニックデータはCSVである。Power Queryを使うことで、データを読み込み、欠損値処理等を行い、その後明確に型指定をしてテーブル形式で出力している。このように、前処理を済ませ、テーブルに出力した上でデータフレームに入力することで、処理内容のトレーサビリティのあるきれいなデータをPythonの処理(各種関数)に渡すことができる。
なお、ここでPower Queryの機能の一つであるデータモデルの利用可否が気になる方もいるだろう。著者が確認したところでは、Power Queryのデータモデル機能で作成したデータモデルをPython in Excelのデータフレームで読み込むことはできない模様である。すなわち、必ず一度ワークシートに出力することが必要(目に見える状態の表にすることが必要)だ。このため、通常のワークシートの上限同様、約104万行の読み込み上限がある。

Power Query で扱いやすい形にデータを加工したのち、Python in Excelおよび標準搭載のライブラリの機能を用いることで、Excelのみでは作成が不可能もしくは困難なグラフを簡単に作成し、分析することができる(図7)。

図7:読み込んだデータフレームdataを対象にdescribeでの要約統計量や
バイオリンプロット等の各種グラフを作成

(サンプル画像はData for Titanic passengers [4]を題材のデータとして利用し著者作成)

 
●一連の処理をセットで実行する
「すべて更新」を押下することで、Power QueryからPython in Excelまで全て一連の処理が更新される。これにより、データにアップデートがあった際にも対応できる(図8)。

図8:全プロセスの更新

(サンプル画像はData for Titanic passengers [4]を題材のデータとして利用し著者作成)

 

おわりに

データ活用では「良い仮説、良いデータ、良い処理」が重要である。今回は前回に引き続き「処理」にフォーカスし、Python in ExcelとPower Queryを組み合わせたユースケースを紹介した。本稿で述べたように、何ら特別な準備(環境構築)をすることなく、費用負担もなくかなり踏み込んだデータ活用が可能となることが朗報に感じる方も多いのではないだろうか。前提としてPythonの学習が必要であることからハードルが高く感じている方もいるかもしれないが、コーディングはCopilot等の生成AIの手を借りることでかなり楽に実施できるのが新常態となっている。まだ使用したことのない方は、ぜひPython in Excelを活用して、Pythonの学習や実務での活用にトライいただきたい。

  1. [1] Microsoft(2024), ”Python in Excel – Available Now”, https://techcommunity.microsoft.com/blog/excelblog/python-in-excel-%E2%80%93-available-now/4240212(参照日2024年12月18日)
  2. [2] Microsoft(2023), “Power Query とは?”, https://learn.microsoft.com/ja-jp/power-query/power-query-what-is-power-query(参照日2023年8月4日)
  3. [3] Microsoft(2024), “Get started with Python in Excel”, https://support.microsoft.com/en-us/office/get-started-with-python-in-excel-a33fbcbe-065b-41d3-82cf-23d05397f53d(参照日2024年12月18日)
  4. [4] Vanderbilt University(1999), “Data for Titanic passengers”, https://hbiostat.org/data/repo/titanic3.csv
    https://hbiostat.org/data/repo/titanic
    注:ヴァンダービルト大学生物統計学部の好意により http://hbiostat.org/dataから得られたデータ。Data obtained from http://hbiostat.org/data courtesy of the Vanderbilt University Department of Biostatistics.(参照日2024年12月18日)
  5. [5] Microsoft(2024), “Open-source libraries and Python in Excel”,
    https://support.microsoft.com/en-us/office/open-source-libraries-and-python-in-excel-c817c897-41db-40a1-b9f3-d5ffe6d1bf3e(参照日2024年12月18日)

小西 宏明

デジタルトランスフォーメーション担当

シニアコンサルタント

※担当領域および役職は、公開日現在の情報です。

  • facebook
  • はてなブックマーク
QUNIE