Applies ToExcel for Microsoft 365

​​​​​​​Excel の Python は、現在、バージョン 2407 (ビルド 17830.20128) 以降、Windows で現在のチャネルを実行している Enterprise ユーザーと Business ユーザーにロールアウトされています。 バージョン 2405 (ビルド 17628.20164) 以降の Windows で現在のチャネルを実行しているファミリー ユーザーと個人ユーザーはプレビュー段階で利用できます。 Excel の Python は、 Microsoft 365 Insider Program を通じて現在のチャネル (プレビュー) を実行している Education ユーザー向けにプレビューで利用できます。 現在、月次エンタープライズ チャネルまたは Semi-Annual エンタープライズ チャネルでは使用できません。

最初に Excel for Windows に展開し、後で他のプラットフォームにロールアウトします。 可用性の詳細については、「 Excel の Python の可用性」を参照してください。

Excel で Python に関する問題が発生した場合は、Excel の [ヘルプ ] > [フィードバック ] を選択して報告してください。

Python in Excel を初めて使用する場合は、 「 Excel での Python の概要 」と「Excel での Python の概要」から始めます

オープンソースの Python ライブラリを使用してプロットとグラフを作成する 

Excel の Python には、 Anaconda によって提供される Python ライブラリのコア セットが付属しています。 この記事では、seaborn matplotlib などの Python ライブラリを使用してプロットとグラフを作成する方法について説明します。 Excel で Python で使用できるオープン ソース ライブラリの詳細については、「Excel の オープンソース ライブラリと Python」を参照してください。 

この記事の例では、Iris フラワー データ セットを使用します。 このサンプル ブックをダウンロードして、「 python-in-excel-iris-dataset.xlsx」という記事に従います。 

シーボーンを使用してペア プロットを作成する 

この例では、Iris フラワー データ セットのペア プロット視覚化を作成する方法を示します。 ペア プロットは、データ セット内の各変数間のリレーションシップを比較するプロットとグラフのマトリックスです。 この場合、Iris フラワー データ セットには、sepal_length、sepal_widthpetal_length、petal_widthの 4 つの数値データ列が含まれます。 

Excel で Python を使用して、シーボーン ライブラリを使用してペア プロットを作成します。

Excel の Python は 、シーボーンライブラリを使用して視覚化を作成します。 seabornlibrary は、次の import ステートメントを使用して Excel の Python 用に自動的にインポートされ、エイリアス sns で参照 できます。  

import seaborn as sns 

Seaborn ライブラリを使用して Iris フラワー データ セットのペア プロットを作成するには、次の手順を実行します。

  1. [Excel の Python] セルに次のコード スニペットを入力します。 コード スニペットは、ペア プロットを pairplot と呼ばれる変数として格納します。  これは、シーボーンライブラリエイリアス sns とシーボーン関数ペアプロットを使用して ペアプロットを作成します。 pairplot = sns.pairplot(xl("Table1[#All]", headers=True))pairplot 関数の引数として、コード スニペットはカスタム Python 関数 xl() を使用し、ワークシートの最初のテーブル Table1 を参照します。 これには、テーブルの内容全体 ( [#All] として) が含まれており、テーブルにヘッダー行 ( headers=True として) が含まれていることに注意してください。 この例では、ワークシートの Table1 に Iris データセットが含まれています。 DataFrame のペア プロット プレビューを参照してください。

    注: エラーが発生した場合は、「 Excel エラーの Python のトラブルシューティング 」を参照してください。 

  2. Python 数式をコミットした後、Excel の Python は、イメージ オブジェクト内のペア プロットの視覚化を返します。 [image object]\(イメージ オブジェクト\) セルの [カード] アイコンを選択して、視覚化のプレビューを表示します。 DataFrame カードのプロットのプレビューを参照してください。

  3. 視覚化を Image オブジェクトとして保持し、Python の計算に引き続き使用します。 画像を Excel グリッドに抽出してサイズを変更し、各プロットをより詳細に表示します。 グリッドに画像を抽出するには、イメージ オブジェクトを含むセルを右クリックまたは Ctrl キーを押しながらクリックし、メニューから [ セルの上にプロットを表示] を選択します。イメージ オブジェクトの抽出の詳細については、この記事の「 Excel グリッドへのイメージ オブジェクトの抽出 」セクションを参照してください。

Matplotlib を使用して散布図を作成する 

この例では、Iris フラワー サンプル データ セットを使用して散布図を作成する方法について説明します。 散布図は、データ セット内の 2 つの数値変数間の関係を示します。 この例では、次のスクリーンショットのような散布図を作成し、 sepal_width sepal_length 値を比較します。

Excel で Python を使用して、matplotlib ライブラリを使用して散布図を作成します。

Excel の Python では、 Matplotlibオープンソース ライブラリを使用して視覚化が作成されます。 Matplotliblibrary は、次の import ステートメントを使用して Excel の Python 用に自動的にインポートされ、 plt として参照できます。  

import matplotlib.pyplot as plt 

Matplotlib ライブラリを使用して Iris フラワー データ セットの散布図を作成するには、次の手順を実行します。

  1. Excel の Python セルで、matplotlib 散布関数を使用し、引数として Iris データ セットの sepal_length 列と sepal_width 列を入力します。 この例では、ワークシートの Table1 に Iris データセットが含まれています。plt.scatter(xl("Table1[sepal_length]"), xl("Table1[sepal_width]"))

  2. 散布図にラベルとタイトルを追加します。  # Label the x and y axes of the plot. plt.xlabel('sepal_length') plt.ylabel('sepal_width')   # Add a title to the plot.  plt.title('Sepal length and width analysis')

    注: このコード スニペットは、前の手順の Python 数式の後、同じ Excel セルに追加のコード行として追加することも、ブックの [Excel の新しい Python] セルに入力することもできます。 新しいセルに入力する場合は、行メジャーの計算順序ルールに従って、最初のセルの後に入力してください。

  3. Python 数式をコミットすると、Excel の Python は散布図の視覚化をイメージ オブジェクトとして返します。 [image object]\(イメージ オブジェクト\) セルの [カード] アイコンを選択して、視覚化のプレビューを表示します。  DataFrame で散布図のプレビューを表示します。

    注: エラーが発生した場合は、「 Excel エラーの Python のトラブルシューティング 」を参照してください。  

  4. 視覚化をイメージ オブジェクトとして保持し、Python の計算に引き続き使用します。 画像を Excel グリッドに抽出してサイズを変更し、プロットをより詳細に表示します。 グリッドに画像を抽出するには、イメージ オブジェクトを含むセルを右クリックまたは Ctrl キーを押しながらクリックし、メニューから [ セルの上にプロットを表示] を選択します。イメージ オブジェクトの抽出の詳細については、この記事の「 Excel グリッドへのイメージ オブジェクトの抽出 」セクションを参照してください。

Excel グリッドにイメージ オブジェクトを抽出する

この記事の例で示すように、seaborn や Matplotlib などの Python ライブラリは、Excel セルにデータの視覚化を返すことができます。 既定では、Excel の Python は、これらの視覚化をイメージ オブジェクトとして返します。 

イメージ オブジェクト セルのカード アイコンを選択して、視覚化のプレビューを表示します。

DataFrame カードのプロットのプレビューを参照してください。

Excel グリッドに画像を抽出するには、2 つの方法があります。画像をセル上のプロットとして表示するか、セル内に画像を表示します。

セル上に画像を表示する

次の手順に従って、イメージをセル上のプロットとして表示します。

  1. イメージ オブジェクトを含むセルを右クリックまたは Ctrl キーを押しながらクリックし、メニューから [ セルにプロットを表示] を選択します (または、キーボード ショートカット Ctrl + Alt + Shift + C キーを使用します)。 これにより、Excel グリッド上に浮動し、簡単にサイズ変更できるイメージのコピーが作成されます。 元のイメージ オブジェクトは元のセルに残ります。

  2. プロットイメージを選択してドラッグして、ワークシートの周囲に移動します。 イメージの角と辺にあるノードを選択してドラッグしてサイズを変更します。 [参照の作成] アイコンを使用して、フローティング プロットの視覚化を作成します。

セル内に画像を表示する

セル内に画像を表示するには、次の手順に従います。

  1. イメージ オブジェクトを Excel 値として返します。 イメージ オブジェクトのセルを選択し、数式バーの [Python 出力] メニューに移動し、[ Excel 値] を選択します。   数式バーの横にある Python 出力メニューを使用して、出力の種類を変更します。 プロット画像がセル内に表示されるようになりました。

    ヒント: Python オブジェクトと Excel 値の間で Python 数式の結果を切り替えるには、キーボード ショートカット Ctrl + Alt + Shift + M を使用します。 キーボード ショートカットの詳細については、「Excel キーボード ショートカットの Python」を参照してください。

  2. プロット イメージのサイズは、セルのサイズによって異なります。 セルのサイズを大きくするか、セルをマージして、イメージのサイズ 大きくします。

独自のプロットとグラフを作成する 

サンプル データ セットを使用して Excel プロットとグラフで Python を作成する方法を学習したので、Excel ブックに独自のデータを入力し、カスタム視覚化を作成します。  

Excel で Python で使用する外部データをインポートするには、Power Queryを使用します。 詳細については、「Power Queryを使用して Excel で Python のデータをインポートする」を参照してください。

英語以外の言語に異なるフォントを使用する 

中国語、韓国語、タイ語などのラテン以外のアルファベット文字を使用するデータをグラフ化するには、 excel.FontPathを使用します。 既定では、Excel の Python では、ラテン以外のアルファベット文字が空の四角形 ('□') としてレンダリングされます。 これを解決するために、 excel.FontPath を使用すると、 excel モジュールを使用して別のフォントを呼び出し、文字をレンダリングできます。

次のフォントを使用できます。 属性は、Python コードの excel.FontPath に追加されます。 パスは、 属性によって呼び出されたフォント ファイルを参照します。

属性

パス

ベンガル語

/usr/share/fonts/Vrinda.ttf

CHINESE_SIMPLIFIED

/usr/share/fonts/SimSun.ttf

CHINESE_TRADITIONAL

/usr/share/fonts/MingLiU.ttf

ヒンディー語

/usr/share/fonts/Mangal.ttf

日本語

/usr/share/fonts/Meiryo.ttf

韓国語

/usr/share/fonts/Batang.ttf

タイ語

/usr/share/fonts/THSarabunPSK.ttf

秀でる。FontPath の例

既定のフォントでは指定された文字がサポートされていないため、このグラフでは適切なプロット ラベルをレンダリングできません。

文字がレンダリングされないグラフ

不適切にレンダリングされたグラフ ラベルのコード サンプル: 

import matplotlib.pyplot as plt

# Make the plot.

myplot = pd.DataFrame({'欧文': [1,2,3], '比尔': [1,2,3]}).plot(x='欧文')

# Show the plot.

plt.show()

この例のグラフ ラベルを修正するには、 excel.FontPath.CHINESE_SIMPLIFIED を使用して、指定された中国語の文字を適切にレンダリングします。 

正しくレンダリングされた文字を含むグラフ

適切にレンダリングされたグラフ ラベルのコード サンプル: 

import matplotlib.pyplot as plt

from matplotlib.font_manager import FontProperties

# Set the font path.

#   Returns '/usr/share/fonts/simsun.ttf'

font_path = excel.FontPath.CHINESE_SIMPLIFIED

# Point the properties to the font path.

font_properties = FontProperties(fname=font_path)

plt.rcParams['font.family'] = font_properties.get_name()

# Make the plot.

myplot = pd.DataFrame({'欧文': [1,2,3], '比尔': [1,2,3]}).plot(x='欧文')

# Show the plot.

plt.show()

関連記事 

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。