Microsoft 365 Apps Microsoft365

Python in ExcelでWordCloudを試してみた

興味が湧いたので試してみる

とりあえず、構文解析とかの話は置いておいてWordCloudを利用できると見て興味が湧いたので試してみます。
とはいえ、Python in Excelは存在は知っていたのですが、今回初めて使います。

Python in Excelとは?

ここ数年、VBAはマルウェアの温床になるので、VBAが使えなくなるんじゃないかという噂話を耳にしたことがあります。
その一環なのかな?と思いながら Python in Excel を動かしてみました。
しかしながら、正直なところVBAの代わりに使用するにはネットワーク接続必須だったり、Microsoft365 ライセンスが必要だったりと簡単ではないことがこの検証を通じてよく分かったところでもあります。
ユーザーフレンドリーなExcel + VBA から脱するにはいろいろとハードルが高い気もしました。

Python in Excel を調査

今回、まったく分かっていなかったので軽く調べた概要をまとめました。

公式ドキュメント
Python in Excel の概要 - Microsoft サポート

概要

以下の通りですが、Microsoftクラウドでコードを実行するようです。
実質、サーバーレスコンピューティングという認識で問題なさそうです。

Excel の Python は、Python 分析の機能を Excel に取り込みます。 これを使用して、Python コードを使用して Excel のデータを処理します。 セルに Python を直接入力すると、Python 計算が Microsoft クラウドで実行され、結果がワークシートに返されます。

Python in Excel の概要 - Microsoft サポート

ライセンス

Microsoft 365 サブスクリプションが必要。(Office 2019、Office 2021などの買い切り版は利用不可)
"Python in Excel add-on" というアドオンライセンスがあり、オープンソースの Python ライブラリを使えたり、エンタープライズ レベルのセキュリティを確保できたり、計算が早くなる等の得点があるそうです。
(エンジニアとしては、もう単純にPythonを入れてopenpyxlを使ってExcelを出力だけすればいいんじゃないかとか思ったりしたのはここだけの話)

Excel アドオン ライセンスの Python に関する FAQ - Microsoft サポート

検証

早速検証をしていきます。

Excelで使用したテーブル

NameFavorite
1Excel
2ワード
3PowerPoint
4SharePoint
5SharePoint
6Excel
7SharePoint
8Excel
9SharePoint
10Word
11SharePoint

使用したコード

import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 'Favorite'列のデータを結合してテキストにする
dataframe = xl("Table1[#すべて]", headers=True)
text = " ".join(dataframe['Favorite'])

# ワードクラウドを生成
xl_font_path = excel.FontPath.JAPANESE
wordcloud = WordCloud(font_path=xl_font_path, width=800, height=400, background_color='white').generate(text)

# ワードクラウドを表示
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")  # 軸を非表示
plt.show()

つまづいたポイント

検証をした際のつまづきポイントを紹介します。
WordCloud関数でfont_pathを正しく指定しないと、日本語は豆腐になってしまいます。

以下のコードのようにfont_pathを指定します。

xl_font_path = excel.FontPath.JAPANESE
WordCloud(font_path=xl_font_path, width=800, height=400, background_color='white').generate(text)

Excel プロットとグラフで Python を作成する - Microsoft サポート

さいごに

今回は正直ドキュメントもあまり揃ってなかったので、どうすればいいのか分からず右往左往しました。
一応、簡単にWordCloudを使うことができました?文章から頻出語を出すには更にいろいろする必要がありそうです。そもそもPython in Excelでできるのかも怪しいです。
ですが、これだけ簡単にPythonコードを実行できるようになったのはすごいなぁと素直に思いました。

-Microsoft 365 Apps, Microsoft365