派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

Python in Excel、直感的操作で高度な分析を

これまで、Excelで手軽にデータ分析をすることを考えると、「データ分析ツール」という無料のアドインを使うことが多かったものです。しかし、このツールで分析できる内容は限られており、ExcelでCSVファイルを作成して、Pythonでプログラムを実行することが一般的でした。また、自動化するときも、ExcelのマクロをVBAで作成することが多かったものの、最近ではPythonが注目されています。

そんな中、MicrosoftからExcelの中でPythonを実行する「Python in Excel」が開発され、多くの人が使える状況が整ってきました。Pythonの柔軟性や豊富なライブラリを組み合わせることで、より高度な分析や自動化が可能になります。

Python in Excelとは

Microsoft 365のWindows版Excelでは、Pythonが統合されたことによりExcel上でPythonのコードを直接実行できるようになりました。対象のライセンスのExcelを使用していれば特別な環境構築は不要で、Pythonが持つ強力なデータ分析機能をExcelから手軽に活用できるようになったのです。

自分が使っているExcelで「Python in Excel」の機能が使えるかどうかは、Excelを起動して「数式」タブを開きます。このとき、図の中央部分のように「Pythonの挿入」という項目が表示されればOKです。

Python in Excelは、Excelのワークシート上に記述したPythonのコードを実行し、その結果をセルに反映させる仕組みになっています。つまり、利用者がセル内にPythonのコードを入力すると、Excelの裏側でPythonのコードが実行され、結果がExcelシートに反映されるのです。

また、Pythonの学習を進め始めたエンジニアにとって、Excelという馴染みのある環境でプログラミングのスキルを実践できる点も魅力の一つです。たとえば、数値データを扱う際、Pythonの数値計算ライブラリであるNumPyやpandasを活用することで、効率的なデータ処理が可能になります。

Python in Excelのメリット

Pythonには、データ分析に関するライブラリが豊富に揃っています。たとえば、NumPyやpandas、matplotlib、scikit-learnなどを使うと、データの操作や可視化、機械学習モデルの構築などが容易に実現できます。ExcelにPythonが統合されたことで、これらのライブラリの恩恵を受けつつ、Excelならではの直感的な操作によって便利なデータ分析ができます。

たとえば、Excel単体では難しかった大規模なデータもPythonを使うことで高速に処理できますし、matplotlibやseabornを使うと、従来のExcelでは表現が難しかった高度なグラフも自由にカスタマイズできます。

Python in Excelの基本的な使い方

まずはPython in Excelをどのように使うのか、基本的な使い方を紹介します。

ここでは、B1セルとC1セルに格納した値の合計を計算する処理を考えます。このとき、A1セルに=PY()と入力することから始めます。すると、Pythonの数式を入力するモードになるため、次の図のような数式を入力してみましょう。

ここで、「xl」という関数はPython in Excel独自の関数で、セルの値を取得するものです。そして、取得した値を合計する式(x+y)を最後に書いておくことで、式の結果がセルに表示されます。

もう少し高度な処理として、pandasというライブラリを使ってデータフレームを作成し、それぞれの行の合計を出力する処理を作成します。たとえば、Excelの任意のセルに次のような処理を記述します。

=PY("data = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}); data.sum().to_list()")

この処理結果として、セルには[6, 15]のような内容が出力されます。このように、Python の関数やライブラリを直接使えるのは便利です。

できないこと、応用的な利用例

Pythonを使う理由としてスクレイピングやクローリングを考える人は多いでしょう。しかし、Python in Excelではセキュリティや信頼性の観点からサンドボックス環境で動作するため、requestsやurllibなどのライブラリを使ってインターネットにアクセスすることはできません。

また、ローカルに保存したCSVファイルなどを読み込んで分析したいこともあるでしょう。しかし、サンドボックス環境で動作することから、ローカルファイルをプログラムから読み込むこともできません。

このため、Power Queryなどを使ってデータを取得してから、そのデータにアクセスする方法が考えられます。

ここでは実践的な例として、機械学習を実行してみましょう。機械学習でよく使われるアヤメの品種を分類するデータセットを使って、ランダムフォレストで分類した結果を表示する処理を作成します(処理内容について詳しくはPythonや機械学習についての書籍を読んでみてください)。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report

# Irisデータセットの読み込み
iris = load_iris()
X = iris.data
y = iris.target

df = pd.DataFrame(X, columns=iris.feature_names)
df['target'] = y

# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.5, random_state=42
)

# ランダムフォレストの実行
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)

# テストデータでの予測と評価
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
report_dict = classification_report(
    y_test, y_pred,
    target_names=iris.target_names,
    output_dict=True
)
report_df = pd.DataFrame(report_dict).transpose()

report_list = report_df.reset_index().values.tolist()

実行すると、次のように結果が表示されます。このようにちょっと高度な分析ができるプログラムも、Python in Excelを使うとExcelだけで実行できます。

まとめ

Python in Excelを使うと、Excelが持つ直感的な操作性とPythonが持つ強力なデータ分析機能を組み合わせて便利な処理を実現できることがわかりました。

環境構築も不要で、Excel環境さえあればPythonを実行できるため、Pythonをちょっと試したいときにも便利です。業務の効率化やデータ分析のスキルアップに活用してみてください。

【筆者】増井 敏克さん
増井技術士事務所代表。技術士(情報工学部門)。情報処理技術者試験にも多数合格。ビジネス数学検定1級。「ビジネス」×「数学」×「IT」を組み合わせ、コンピュータを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発、データ分析などを行う。著書に『Pythonではじめるアルゴリズム入門』『図解まるわかり プログラミングのしくみ』『「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック』、最新刊の『実務で役立つ バックアップの教科書』(翔泳社)がある。

※本記事に記載されている会社名、製品名はそれぞれ各社の商標および登録商標です。
※本稿に記載されている情報は2025年3月時点のものです。

リクルートスタッフィング