はじめに
GoogleのGemini APIにはコード実行機能があり、自然言語の指示だけでPythonコードを生成・実行してデータ分析ができます。この記事では、シンプルな売上データを例に、この機能の使い方と利点を紹介します。
Gemini APIのコード実行機能とは?
Gemini APIのコード実行機能(ToolCodeExecution)を使うと、以下のことが自動で行われます:
- テキストによる指示からPythonコードを生成
- 生成したコードを安全な仮想環境で実行
- 実行結果を確認して必要に応じてコードを改良
- 最終的な分析結果や可視化結果を出力
これにより、データ分析の専門知識がなくても、日本語で「売上の傾向を分析して」と指示するだけで、グラフ付きの分析結果が得られます。
基本的な使い方
前提として、以下の実装はGoogle Colab上での動作を想定しています。
!pip -q install pydantic-ai
!pip -q install nest_asyncio
import nest_asyncio
nest_asyncio.apply()
print("Setup complete!")
from google import genai
from google.genai import types
from google.colab import userdata
import pandas as pd
# API設定
client = genai.Client(api_key=userdata.get('GEMINI_API_KEY'))
# コード実行機能を有効にしたチャット作成
chat = client.chats.create(
model="gemini-2.0-flash",
config=types.GenerateContentConfig(
tools=[types.Tool(code_execution=types.ToolCodeExecution)]
),
)
重要なポイント: types.Tool(code_execution=types.ToolCodeExecution)
を指定することで、Geminiがコードを実行できるようになります。
実装例:売上データの自動分析
シンプルな売上データを使った例を見てみましょう:
# サンプルデータの作成
sales_data = pd.DataFrame({
'月': ['1月', '2月', '3月', '4月', '5月'],
'売上': [120, 150, 180, 160, 200],
'商品カテゴリ': ['家電', '服飾', '家電', '書籍', '服飾']
})
# データをCSV形式に変換
csv_str = sales_data.to_csv(index=False)
# Geminiに分析を依頼
prompt = f"""
以下の売上データを分析してください:
## 分析してほしいこと:
1. 月別の売上推移をグラフで表示
2. カテゴリ別の売上合計
3. 売上の傾向についてコメント
データ:
{csv_str}
"""
response = chat.send_message(prompt)
# 結果の表示
for part in response.candidates[0].content.parts:
if part.text:
print("分析結果:", part.text)
if part.executable_code:
print("実行されたコード:", part.executable_code.code)
if part.code_execution_result:
print("実行結果:", part.code_execution_result.output)
実行結果の例
Geminiは以下のようなコードを自動生成・実行します:
分析結果: 売上データを分析します。具体的には、以下の内容を実行します。
1. 月別の売上推移をグラフで表示
2. カテゴリ別の売上合計を計算
3. 売上の傾向についてコメント
まずは、必要なデータを整理し、計算を行います。
実行されたコード: import pandas as pd
import matplotlib.pyplot as plt
data = {'月': ['1月', '2月', '3月', '4月', '5月'],
'売上': [120, 150, 180, 160, 200],
'商品カテゴリ': ['家電', '服飾', '家電', '書籍', '服飾']}
df = pd.DataFrame(data)
# 月別の売上推移グラフ
plt.figure(figsize=(8, 4))
plt.plot(df['月'], df['売上'], marker='o')
plt.title('月別売上推移')
plt.xlabel('月')
plt.ylabel('売上')
plt.grid(True)
plt.show()
# カテゴリ別の売上合計
category_sales = df.groupby('商品カテゴリ')['売上'].sum()
print("カテゴリ別売上合計:")
print(category_sales)
実行結果: カテゴリ別売上合計:
商品カテゴリ
家電 300
書籍 160
服飾 350
Name: 売上, dtype: int64
分析結果: 分析結果:
1. **月別の売上推移**: 1月から5月にかけて、全体的に売上が増加傾向にあります。3月には一時的に増加し、4月には減少しましたが、5月には再び増加しています。
2. **カテゴリ別の売上合計**: 服飾が350で最も高く、次いで家電が300、書籍が160となっています。
3. **売上の傾向**: 全体的に売上が増加傾向にあり、特に服飾カテゴリの売上が好調です。家電製品も比較的高い売上を維持しています。書籍の売上は他のカテゴリと比較して低いですが、一定の需要があることがわかります。
などの洞察を自動で提供してくれます。
この機能の利点
Gemini APIのコード実行機能の主な利点は、プログラミングの知識がなくても自然言語の指示だけで迅速にデータ分析ができることです。分析結果を確認しながら対話的に追加の質問もでき、生成されたコードを見ることでデータ分析の手法も学習できます。
活用シーン
- 売上レポートの自動生成
- アンケート結果の分析
- Webサイトのアクセス解析
- ログデータの可視化
- 障害票一覧の分析
テーブル形式でデータ構造が明確に決まっている場合や、分析内容がシンプルで具体的な場合は、うまく動作しやすいと感じました。
まとめ
Gemini APIのコード実行機能を使えば、自然言語で「このデータの傾向を教えて」と指示するだけで、コードの生成・実行・可視化までを自動で行ってくれます。
ただし、データ構造が複雑だったり、プロンプトが曖昧な場合はうまく動作しないことがあります。メタ情報を含めたデータの提示や、分析内容を明確に伝えることで、より安定した動作が確認できました。