スプレッドシート上のデータの分析を AI(GPT)に手伝ってもらう GAS ライブラリを作りました。Google Apps Script 上で直接分析、または分析の提案を受けることができます(どういった分析になるかはデータによります)。
GAS ライブラリは、欠損値・重複値の探索を行う GAS ライブラリ以来、久しぶりに作りました。ライブラリ化しておくことで、いつでもお手軽に使えます。
GPT を使用するため、OpenAI の API キーが必要となります。
スクリプト ID
1kwJbmRU1hKumO3I_HeO2leId8SiTojKsdZOx5DsYTUWrqkrenj9OEq3W
ライブラリの追加方法:
- ライブラリの追加から上記スクリプト ID を入力して「検索」を押下
- バージョンを選択、任意の ID を指定して「追加」を押下
※ バージョンは最新のもの、もしくは「HEAD(開発モード)」を指定してください。
「HEAD(開発モード)」であれば常に最新の状態が維持されますが、バージョンに反映前の変更も加わりますので、予期せぬ不具合が発生する可能性があります(まぁ、最新バージョンでもありますが)。
使い方:
スクリプトの実行方法は、以下の通りです。
ライブラリの追加の際に指定した任意の ID.aiAnalysis(スプレッドシート ID, シート名, データ範囲, OpenAI の API キー, [システムプロンプト, ユーザープロンプト, 使用するモデル(default: gpt-4o), 生成する文章の最大トークン数(default: 4096), 生成された文章のランダムさ(default: 0.5)]*任意)
戻り値として GPT による回答を返します。
リファレンスはこちら。
例えば test という ID でライブラリで読み込んで使う場合、以下のようなコードになります。
function myFunction() { const spId = "スプレッドシート ID"; const shName = "シート名"; const dataRange = "A1:C3"; const key = "OpenAI API キー" Logger.log(test.aiAnalysis(spId, shName, dataRange, key)); // 任意の設定 /** const system = ""; // システムプロンプト const user = ""; // ユーザープロンプト const model = ""; // デフォルトは gpt-4o const max_tokens = 1024; // デフォルトは 4096 const temperature = 0; // デフォルトは 0.5 const specified = [system, user, model, max_tokens, temperature] Logger.log(test.aiAnalysis(spId, shName, dataRange, key, specified)); */ }
以下は、試しに2020-2021年の原木椎茸の栽培データを投げてみた結果です。
データを分析するために、以下のステップを踏みます: ### 1. データの概要を把握 まず、データの全体的な構造と各列の意味を把握します。データには以下の列があります: - 発生ID - 発生開始日 - 品種 - 使用回数 - 棚番号 - 収穫日 - 積算温度(℃時) - 平均温度(℃) - 分散(温度) - 標準偏差(温度) - 平均湿度(%) - 分散(湿度) - 標準偏差(湿度) - タイミング - 品質 - 収穫までの日数 - 参考値 ### 2. データのクリーニング データに欠損値や異常値がないか確認し、必要に応じて処理します。 ### 3. 基本統計量の計算 各数値列の基本統計量(平均、標準偏差、最小値、最大値など)を計算します。 ### 4. データの可視化 データの分布や相関関係を可視化するために、ヒストグラム、散布図、箱ひげ図などを作成します。 ### 5. 品質に影響を与える要因の特定 品質(良、優、可、不可)に影響を与える要因を特定するために、各要因と品質の関係を分析します。 ### 6. モデルの構築 品質を予測するためのモデルを構築します。例えば、ロジスティック回帰や決定木などを使用します。 ### 7. 結果の解釈と提言 分析結果を解釈し、品質向上のための提言を行います。 それでは、ステップごとに詳細に進めていきます。 ### 1. データの概要を把握 データの全体的な構造を確認します。 ```python import pandas as pd # データの読み込み data = pd.read_csv('data.csv') # データの概要を表示 print(data.info()) print(data.head()) ``` ### 2. データのクリーニング 欠損値や異常値がないか確認します。 ```python # 欠損値の確認 print(data.isnull().sum()) # 異常値の確認(数値列の基本統計量を表示) print(data.describe()) ``` 必要に応じて欠損値の補完や異常値の処理を行います。 ### 3. 基本統計量の計算 各数値列の基本統計量を計算します。 ```python # 基本統計量の計算 print(data.describe()) ``` ### 4. データの可視化 データの分布や相関関係を可視化します。 ```python import matplotlib.pyplot as plt import seaborn as sns # ヒストグラムの作成 data.hist(bins=30, figsize=(20, 15)) plt.show() # 散布図行列の作成 sns.pairplot(data) plt.show() ``` ### 5. 品質に影響を与える要因の特定 品質(良、優、可、不可)に影響を与える要因を特定します。 ```python # 品質と各要因の関係を分析 sns.boxplot(x='品質', y='平均温度(℃)', data=data) plt.show() sns.boxplot(x='品質', y='平均湿度(%)', data=data) plt.show() # 相関行列の作成 corr_matrix = data.corr() sns.heatmap(corr_matrix, annot=True, cmap='coolwarm') plt.show() ``` ### 6. モデルの構築 品質を予測するためのモデルを構築します。 ```python from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, classification_report # 特徴量とターゲットの分割 X = data[['平均温度(℃)', '平均湿度(%)', '積算温度(℃時)', '収穫までの日数']] y = data['品質'] # データの分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # ロジスティック回帰モデルの構築 model = LogisticRegression() model.fit(X_train, y_train) # 予測と評価 y_pred = model.predict(X_test) print(accuracy_score(y_test, y_pred)) print(classification_report(y_test, y_pred)) ``` ### 7. 結果の解釈と提言 分析結果を解釈し、品質向上のための提言を行います。 ```markdown # 結果の解釈 - 平均温度、平均湿度、積算温度、収穫までの日数が品質に影響を与えていることが分かりました。 - ロジスティック回帰モデルにより、品質の予測精度は約XX%でした。 # 提言 - 平均温度をXX℃に保つことで、品質が向上する可能性があります。 - 平均湿度をXX%に保つことで、品質が向上する可能性があります。 - 収穫までの日数をXX日に調整することで、品質が向上する可能性があります。 ``` 以上がデータ分析のステップです。具体的なデータを用いた分析の実行は、Pythonのコードを実際に実行する必要があります。
Python を用いた分析手順を解説してくれていますね。
デフォルトでは、ざっくりしたプロンプトで指示しているのですが、具体的な指示を与えれば、より詳細な分析もしてくれると思います。