ゼロから分かる「Python in Excel」 プログラミング未経験の筆者がデータ分析してみた
業務に欠かせない道具になっているExcelのまだあまり知られていない機能がPython in Excel。大規模データの集計や分析をスムーズに実行できるこの機能を使わない手はない。今回はその超入門編。実務的教育専門家の説く流れで勉強してみた。
Python in ExcelはWindows版「Microsoft Excel」のほとんどのバージョンで利用できるPython実行環境だ。
「プログラミング言語なんて難しそう」と敷居が高く思われがちだが、今は生成AIのおかげで「指示さえすればプログラムができる」時代。Excel関数の使い方を覚えるのと、AIに指示するのを比べれば、どちらが速いかは言うまでもない。
結果の確認や修正のために、ある程度のプログラム知識は必要なものの、Excel職人の作った複雑なマクロを相手にするよりは、メンテしやすい。そこで今回は、データ活用講座などを社会人向けに開催している和からの岡崎凌氏(経営企画室室長)の初心者向けWeb講座を受講し、PythonをExcelでどのように活用できるのか、プログラミング経験ゼロの筆者が実際に試してみた。
Python in Excelの対応するExcelバージョンとそのリリース時期
説明に入る前に、まずはPython in Excelが利用できるExcelのバージョンと対応環境を確認しておこう。
・Windows版法人向け(Enterprise / Business):
最新チャネル: バージョン 2408(ビルド 17928.20114)以降
月次エンタープライズ チャネル: バージョン 2408(ビルド 17928.20216)以降
半期エンタープライズ チャネル: バージョン 2502(ビルド 18526.20472)以降
・Windows版個人向け(Family / Personal):
バージョン 2405(ビルド 17628.20164)以降
・Windows版教育向け(Education):
バージョン 2406(ビルド 17726.20016)以降
・Mac 版法人向け(Enterprise / Business):
バージョン 16.96(ビルド 25041326)以降
・Mac版個人向け(Family / Personal)
Microsoft 365 Insider(ベータ チャネル、バージョン 16.95 以降)でプレビュー利用可能
・Web 版(Excel on the web)
法人向けアカウントで対応、個人向けアカウントでプレビュー版利用可能
バージョン 2406(ビルド 17726.20016)以降
「Microsoft 365」のライセンスを利用していて、比較的新しいサブスクリプション版のExcel(2024年以前のバージョンを除く)であれば、追加のインストールをすることなく、標準機能としてPython in Excelを利用できる。
未経験でもできる Python in Excelで「データ分析」を時短する方法
まずは、初めてPython in Excelを使う人のために、基本的な使い方を一から見ていこう。ここでは、Excelシートにある気温データをPythonで読み込み、平均値を求め、さらにグラフ化するまでの流れを例に説明する。
Excelを開き、シートの適当なセルに「=py(」と入力する([数式]タブで[Python の挿入]を選択してもよい)。
Python in Excelが起動すると、セルに「PY」と表示され、Pythonプログラムの入力待ちになる。まずはPythonがどのように動作するのかを確認するため、「5+3」や「5*3」などと入力し、[Ctrl]+[Enter]キーを押してみよう。クラウドで処理されるため、一瞬だけ「BUSY(計算中)」と表示された後、計算結果が出力される。Excelの数式と同じような簡単な計算も、Pythonのプログラムとして実行できる。
では、ここからExcelシートのデータをPythonで処理してみよう。例として、図2のように気温データが並んでいるとする。このデータをPythonに読み込み、まずは平均値を求めてみる。
Excelのセルやセル範囲、テーブルをPythonに読み込むには、専用の「xl関数」を使用する。データを読み込むため、「data=xl(」と入力し、対象となるセル範囲をドラッグする。ここでは、例えばA2~A11セルに入力された気温データを対象とする。
ドラッグした範囲は「データフレーム」としてPythonに読み込まれ、「data」という名前の変数として扱える。この「data」という名前は任意に設定できるので、後から見ても内容が分かる名前を付けておくといい。
[Ctrl]+[Enter]キーを押すと、指定したデータがPythonに読み込まれる。[PY]セルをダブルクリックすると、「data = xl("A2:A11")」のように、読み込んだ範囲を確認できる。
次に、このデータの平均値を求めてみよう。1行目の後で改行し、「data.mean()」と入力して2行目を追加する。「mean」は平均値を求めるための関数だ。再び[Ctrl]+[Enter]キーを押すと、気温データの平均値が計算される。
計算結果を確認するには、セルの横に表示されるアイコンを右クリックし、「Array Preview」を選択する(ショートカットは[Ctrl]+[Alt]+[Shift]+[M])。
ここで、Excelの関数とは異なるPythonならではの記述方法に気付くだろう。Pythonでは、対象となるデータの後にピリオドを付け、「data.mean()」のように関数を記述する。Excelでは「AVERAGE(data)」のように関数の引数としてデータを指定するため、記述する順番が逆になる。
さらにPythonでは、データに対して複数の処理を連続して適用できるため、複雑な処理でも比較的シンプルに記述できる。こうした書き方に慣れることが、Python in Excelを使いこなす第一歩となる。
平均値が求められたところで、今度は同じ気温データをグラフにしてみよう。Pythonにはデータを可視化する機能もあり、「data.plot()」と1行記述するだけでグラフを作成できる。
「data.plot()」を入力して[Ctrl]+[Enter]キーを押し、セル横のアイコンを右クリックして「セルの上にプロットを表示」を選択する。すると、読み込んだ気温データがグラフとしてセル上に描画される。
このように、ExcelのデータをPythonに読み込み、平均値を求めたりグラフ化したりといった処理を、わずか1~2行のプログラムで実行できる。もちろん、こうした処理はExcelの関数やグラフ機能でも可能だが、Excelのデータをそのまま使いながらPythonの豊富なデータ処理機能を利用できる点が、Python in Excelの大きな特徴だ。
生成AIにサポートしてもらってPython in Excelを試してみた
岡崎氏による初心者向けレクチャーは、ここまでで一区切りとなる。実際にPythonを動かし、Excelのデータを読み込んで分析・可視化するところまで体験できた。まずは、Pythonプログラミングの第一歩を踏み出せた。では、この先はどうやってExcelでPythonプログラムを作っていけばいいのだろうか。
岡崎氏は「Pythonプログラムを一から全て習得する必要はない」と話す。生成AIにチャット形式で指示すれば、必要なコードを短時間で作成できるからだ。「どう分析したいのかを適切に指示し、生成されたコードや結果を検証することに集中すれば、開発スピードを劇的に高められる」と語る。
データの統計情報の出力をテスト
そこで、岡崎氏の言葉に従い、プログラミング経験のない筆者も、先ほどの小さなプログラムを少し改変してみることにした。そこで「Gemini」に相談して見つけたのが、「describe」関数だ。これは、データの平均値や標準偏差など、基本的な統計情報をまとめて出力してくれる関数だ。
早速、図7左端のような仮のデータを用意し、E1セルに「=PY(」と入力。Pythonプログラムとして次のコードを入力し、[Ctrl]+[Enter]キーで実行してみた。
data=xl("B2:C1")
stats=data.describe()
その結果を、arrayPreviewで表示すると次のようになった。
結果は英語の表示になったが意味はわかる。体裁を整えてみると次のようになる。
わずか2行で8つの統計数値が出力できた。Excel関数を使う場合だと、COUNT, AVERAGE, STDEV.P, MIN, QUARTILE.INC, MAX といった複数の関数を別々にセルに入力して計算しなければならないところ。Python in Excelは統計に大いに使えそうだ。
機械学習・分析をテスト
次に、この広告費と売り上げデータを使って、広告費を入力すると予測売上高を算出できる仕組みを作ってみる。まずはGeminiに、この目的を伝えてプログラムの生成を依頼する。すると、次のようなコードが出力された。
# 1. Excelシート上の実績データ(B1:C11)を読み込む
# headers=Trueにすることで、1行目の「広告費(万円)」「売上(万円)」を列名として認識します
df = xl("B1:C11", headers=True)
# 2. 機械学習ライブラリから「線形回帰」モデルをインポート
from sklearn.linear_model import LinearRegression
# 説明変数(予測の手がかり:広告費)と目的変数(予測したい値:売上)を切り出す
X = df[['広告費(万円)']]
y = df['売上(万円)']
# モデルの作成と学習(過去のデータパターンを学習させます)
model = LinearRegression()
model.fit(X, y)
# 3. ExcelのD2セルに入力された「予測したい広告費」を読み込む
target_spend = xl("D2")
# 4. 学習したモデルを使い、売上を予測する
# ※predict関数には2次元配列の形で値を渡す必要があります
predicted_revenue = model.predict([[target_spend]])
# 5. 予測結果をExcelのセルに出力する
round(predicted_revenue[0], 2)
ただし、生成されたプログラムをそのまま使えばいいわけではない。実際にコードを確認すると、幾つか注意すべき点が見つかった。
まず、「列名の表記ゆれ」だ。df[['広告費(万円)']] の「(万円)」が全角括弧になっているため、実際のExcelシートのヘッダが半角の「(万円)」だったり、スペースの有無が異なったりすると、「KeyError」というエラーが発生する。Excel上の実データとコード内の列名が完全に一致しているか、確認が必要だ。
次に、「D2セルが空の場合」も問題になる。target_spend = xl("D2") でD2セルが空欄だと「None」が入り、そのまま model.predict([[None]]) を実行するとエラーになる。ユーザーが必ず広告費を入力するとは限らないため、空欄の場合の処理を追加しておくと安全だ。
さらに、「predictに渡すデータ形式」にも注意が必要だ。モデルは列名付きのDataFrameを使って学習しているのに対し、予測時には列名のないリスト [[target_spend]] を渡しており、「UserWarning: X does not have valid feature names」の警告が出てしまう。気になる場合は列名をそろえるとよい。
「Claude」が推奨したのは次のプログラムだ。基本的には同じことをしているので、こちらはコメントなしで紹介する。
df = xl("B1:C11", headers=True)
from sklearn.linear_model import LinearRegression
import pandas as pd
X = df[['広告費(万円)']]
y = df['売上(万円)']
model = LinearRegression()
model.fit(X, y)
r2 = model.score(X, y) # 当てはまりの良さを確認(1に近いほど良い)
target_spend = xl("D2")
if target_spend is None:
result = None
else:
target_df = pd.DataFrame({'広告費(万円)': [target_spend]})
predicted_revenue = model.predict(target_df)[0]
result = round(predicted_revenue, 2)
result
まずD2セルに、将来の広告費(万円)として「120」と入力し、E2セルに「=PY(」を入力。先ほどのプログラムを貼り付けて実行すると、図9のように、広告費120万円をかけた場合の予測売上高がE2セルに表示された。
Python in Excelを使った売上予測は、成功したようだ。もっとも、この例のようにデータ量が少ない場合は、そもそもPythonでプログラムを書く必要はない。Excel関数を使えば、次の1行で同じ結果を得られる。
=IF(D2="","",ROUND(FORECAST.LINEAR(D2,$C$2:$C$11,$B$2:$B$11),2))
これは、D2セルに値が入力されていれば、過去のデータ(B列・C列)を基に売上高を直線的に予測し、小数第2位まで表示する式だ。D2が空欄の場合は何も表示しない。この式を通常のExcel関数として入力すれば、Pythonで計算した場合と同じ結果が得られる。
それでも、プログラミング経験のない筆者にとって、AIに相談しながらPythonのコードを作り、Excel上で実際に動かせたのは大きな発見だった。何より、Python本体や必要なライブラリを別途インストールするといった環境構築が不要なのは、初心者にとって大きなメリットだ。
なぜExcelでPython? 業務改善のインパクトとメリット
そもそも、分析機能が充実したExcelで、あえてPythonを使う必要はあるのだろうか。岡崎氏によれば、Python in Excelには、Excelだけでは得にくい次のようなメリットがあるという。
1.初期設定や環境構築が不要
従来はPython本体のインストールや仮想環境の作成、ライブラリの追加、エディタ(筆記用具となる開発環境)の設定といった複雑な初期設定が必要であり、これが大きなハードルとなっていた。その点、Python in ExcelはExcelに組み込まれているため、特別な設定や環境構築をすることなく、すぐに使い始められる。PC構成をそのままにプログラミングができるのは極めて大きなメリットだ。
2.大容量データ処理の限界突破
Excelはデータが約100万行までという制限がある上、実質的には数万~10万行を超えると動作が重くなったり、ピボットテーブル作成時にフリーズしたりするなど、データの限界が存在する。しかし、クラウド側で処理を実行するPython in Excelなら、何百万行、何千万行といったビッグデータであっても、ローカル環境に負担をかけずスムーズに処理可能になる。
3.他のツールを使用しなくてもExcel上で高度な分析が可能
Excel単体では難しかった「機械学習の処理」や「人工知能(AI)による予測」を、他のソフトウェアにデータを移行することなく、Excelの画面内で完結させることができる。また作業の自動化と一括処理、膨大なグラフの作成など、手作業で行うと事情に時間がかかる作業を、わずか数行のプログラムでまとめて自動作成し、実行できる。
例えば小売業で、過去の売上データから将来の需要を高精度に予測し、最適な在庫管理を実現する場合。あるいは、マーケティング部門で顧客の購買パターンを分析して効果的なセグメンテーションを実行し、ターゲティング精度を向上させる――というように、より難易度の高い分析が可能になる。
4.Python自体の習得のしやすさ
Pythonはプログラミング言語の中でも習得しやすいとされている1つだ。学習の参考となる資料も多く、経験者も多数いるため、比較的ハードルが低い。
ただし、業務で利用するのであれば、AIに任せればよいと安易に考えるべきではない。岡崎氏は「検証にはプログラミングやデータ分析の基礎知識がないとAIの出力の正誤判断ができず、また不具合があった際の軌道修正(指示の出し直し)ができない。結果として業務効率を低下させてしまうリスクがある」と警告する。
AIを使いこなせるかどうかを左右するのは、結局のところ人のスキルだ。岡崎氏が勧めるのも、段階的なスキル習得である。「最初から機械学習のような高度な手法に飛びつくのではなく、まずは通常のExcelを用いた基本的なデータ活用や統計解析を通じて『データの見方』を身につけ、その土台の上にPythonや機械学習という高度な武器を積み上げていくことが、確実で本質的なスキル向上につながる」と強調する。
今回の例からも分かるように、どんなケースでもPython in Excelが最適解になるわけではない。データ量が少なく、処理も単純で、同じ作業を繰り返す頻度も低いのであれば、Excel関数を使ったほうが手軽なケースも多いだろう。
一方で、データ量が増えたり、複雑な分析や繰り返し処理が必要になったりすれば、Pythonの力が生きてくる。導入のハードルが低く、Excelの使い慣れた環境から始められるPython in Excelは、これまでプログラミングを敬遠していたExcelユーザーにとっても、新たなデータ活用の選択肢になりそうだ。
Copyright © ITmedia, Inc. All Rights Reserved.
イベントレポートアーカイブ
この記事の著者
こんなメディアも見られています
キーマンズネットに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
アクセスランキング
-
1
Googleの自動化ツール「Workspace Studio」×Gemini、4つの業務効率化アイデア
-
2
M365 Copilotを配っても「使われない」 でもAI活用が進んだ福島県庁の"逆張り"戦略
-
3
議事録AIは無料で無制限の時代へ それでも“特定の会議”でしか使われない理由
-
4
「Gemini 3.8 Flash」の狙いは“賢さ”ではない? 発表から見えた3つのポイント
-
5
「Copilot、Word文書まとめて」で社内全滅? 勝手に増殖するAIウイルスで大騒ぎ:895th Lap
-
6
AI議事録「精度98.86%」だけで決められない 5製品の比較表で分かる、選定の分かれ目
-
7
SOAPはRESTに負けたのか? 「古いAPI」を残すか見直すか
-
8
「作った本人しか使えない」を避けるには 文化祭POSが36校へ広がるまで
-
9
AIは「使う」から「組み込む」へ — NOT A HOTELに学ぶ、Zoom×AI×API連携で実現する業務自動化と生産性100倍を目指す組織
-
10
「AIを入れたのに、仕事が変わらない」 企業が見落としている"使い方"
キーマンズネット SNS
インフォメーション
注目情報をチェック
キーマンズネットをフォロー