LoginSignup
40
25

Excel での Pythonを試してみた

Last updated at Posted at 2023-12-14

この記事は筑波NSミライラボ Advent Calendar 2023 15 日目の記事です。

はじめに

2023年8月頃、Excel での Pythonが公開されましたが、宣伝されているかどうか定かではありません。私の場合は最近やっとXで知りました。思い出してみると、xlookup機能の時と同じで、新機能ノートに期待せず読まない私ですので、みんなより遅れてスタートしています。やっと手強いVBAとさよならできる日が来るのでしょうか。

今回はExcel での Pythonを試したいので、申請から使用できるまで、導入してみたいと思います。

導入

1. Excelを最新版にする

2. Excelを開き、画面の左下にある「アカウント」を開く

qiita2.PNG

3. Microsoft 365 Family / Personal サブスクの場合はMicrosoft 365 Insider Programが表示されます。
  Business/Education サブスクの場合は、管理者から設定されていますので、表示しない場合は管理者に確認してください。

4. Microsoft 365 Insiderのボタンをクリックして、チャンネル選択の画面から、ベータチャンネルを選び、確認したらOKボタンをクリックします。

qiita3.PNG

5. Excelを再起動して、新しいシートを開きます。

6. 「数式」に「Pythonの挿入」があれば、クリックして、チュートリアルみたいな説明を受ければ、利用できます。
image.png

使い方

=pyをformulaに入力し、Enterを押せば、セルがPython式を対応します。

image.png

image.png

100人のExcelランダムデータを作成しました(適当で)。
名前、年齢、所属地域、給料、そして、4グループ(25名1グループ)に分けて、Excel での Pythonを試したいと思います。

image.png

まず全員の平均年齢を探してみたいので、普通なら、=AVERAGE(C2:C101)ですぐに答える出せますが、そのままPythonを入力したら、早速エラーが出ました。

image.png

image.png

そのままPythonを入力ではなさそうです。そのため、説明動画を確認してみました。

Step 1 : Dataframeの作成

Excel での Pythonはpandasのライブラリと連携していますので、引用しなくで大丈夫そうです。
Pythonの時と同じ、Excelデータを変数で定義して、分析したあと、変数に入れて分析した結果を表示するスタイルです。

Dataframeの作成する前に、もう1つのTableを作成します。Tableの名前を変えて、データが入っている(Data)と計算用のTable(Clac)にします。

image.png

計算用Table(Clac)の中にPython式を入力します。

DataFrameを作成します。

Python in Excel
df1 = xl("Data!A1:F101", headers = True) 

実行の時はEnterではなく、Ctrl+Enterになります。

image.png

成功したら、DataFrameのテキストが出ます。
image.png

DataFrameの中身を確認することもできます。PY式の左のボタンをクリックし、Excelの値を選択します。

image.png

これはExcel での Pythonの特徴であり、可視化できますので、連携性と便利さを感じました。

image.png

Step 2 : 平均年齢を計算する

下準備が終わりましたら、平均年齢を計算してみたいです。

Pythonの場合は

import pandas as pd
df1 = pd.DataFrame(xl('Data!A1:F101', headers=True))
return df1['Age'].mean()

Excel での Pythonはreturnのあとの部分を入力すれば大丈夫そうです。

Python in Excel
df1['Age'].mean()

image.png

Averageで計算して、同じ結果が出ました。

image.png

Step 3 : グループ毎の平均給料を計算する

下のPY式で計算したあと、表示したい変数grouped_averagesを最後に入力します。

Python in Excel
grouped_averages = df1.groupby('Group')['Salary'].mean()
grouped_averages

image.png

左のimage.pngをクリックします。

4群の平均給料が出てきました。
image.png

Excelの公式で計算して、結果は同じです。
これでPythonでいろいろ挑戦してみたいですね!

image.png

あとがき

数時間、利用した結果、Excelがこれで結構強化した気がしました。
pandasの機能は基本使えそうですので、統計に関する計算もできると思います(まだ試してないですが)。
統計関係の分析は、今まで基本Excelからデータを出力して、MatlabとSPSSで計算するので、毎回Excelを修正したら、MatlabとSPSSに読み込み直したり、新旧のデータセットがフォルダにいっぱいあったりと、時間がかかりますし、データ管理も大変でした。やっとExcelの中で完結できると思います。使い方に慣れたらとても強いツールになると思います。そして、VBAの時代が終わりそうです。

40
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
25