仕事術
AIでExcel・CSVを分析する前処理と確認手順
ExcelやCSVを生成AIで分析する前に、列名、1行1レコード、欠損、単位、個人情報を整え、集計結果と計算方法を確認する具体的な手順を解説します。
- 公開日
- 最終検証
- 次回確認
- 確信度
- HIGH

この記事で分かること
- Excel・CSVをAIへ渡す前に整える表の形
- 欠損、単位、分母、集計粒度を先に決める方法
- AIへ計算方法まで示させる分析依頼プロンプト
- 表計算ソフトで集計結果を再計算する方法
注意: 顧客名、メールアドレス、社員番号、自由記述などを含むファイルは、そのまま外部サービスへアップロードしないでください。組織の利用規程とサービスのデータ取扱条件を確認し、必要なら削除、仮名化、集計化します。
先に結論
AI分析で最初に整えるべきものはグラフではなく、元データです。列名を明確にし、1行を1レコードに統一し、欠損、単位、分母、集計単位を定義します。
分析後は、AIに使った列、除外条件、計算式、対象件数を出させます。そのうえで、代表的な集計をExcelなどで再計算します。答えがもっともらしいかではなく、同じ条件で再現できるかを確認してください。
表の構造と定義を固定してから集計し、最後に別の方法で再計算する流れを示している。
手順1:分析したい問いを1つに絞る
「売上を分析して」では、AIが都合のよい指標やグラフを選ぶ余地が大きくなります。最初は、次のように対象、指標、比較軸、期間を決めます。
- 2026年4〜6月の売上金額を地域別に比較する
- 問い合わせ件数に占める解決件数の割合を月別に確認する
- 商品別の返品率を比較し、母数が30件未満の商品を分けて表示する
「売上」が受注額、出荷額、請求額、入金額のどれかも定義します。同じ言葉でも社内で計算方法が異なる場合は、正本となる定義書を確認してください。
手順2:悪いCSVの構造を見つける
人には読みやすくても、分析に向かない表があります。
2026年度 東日本売上表
単位:万円,,,
地域,4月,5月,6月
東日本,120,95,集計中
西日本,80,,110
合計,200,95,110
注:返品分は担当者が後日調整,,,
問題点は次のとおりです。
- タイトル、単位、注記、明細、合計が同じ表にある
- 月が列方向に広がり、新しい月のたびに列が増える
- 「集計中」と空欄の意味が違うのに、同じ欠損として扱われやすい
- 合計行があり、AIが明細と一緒に再合計する可能性がある
- 金額が売上総額か返品控除後か分からない
結合セル、色だけで意味を表すセル、非表示行、複数の表を1シートに置く構成も避けます。
手順3:1行1レコードの良いCSVへ直す
先ほどの表を、分析用に縦長へ直すと次のようになります。
record_id,month,region,sales_man_yen,status,include_in_total
R001,2026-04,東日本,120,確定,TRUE
R002,2026-05,東日本,95,確定,TRUE
R003,2026-06,東日本,,集計中,FALSE
R004,2026-04,西日本,80,確定,TRUE
R005,2026-05,西日本,,未提出,FALSE
R006,2026-06,西日本,110,確定,TRUE
この例では、1行が「1地域・1か月」の記録です。列名に単位を含め、欠損理由を status へ分け、集計対象かどうかを include_in_total で明示しています。合計行は置かず、分析時に計算します。
実際の売上が円単位なら、整数の円で統一する方が安全です。万円と円、税込と税抜、件と千件などが混ざる場合は、変換後の列を作り、変換式を記録します。
手順4:欠損の意味を決める
空欄を自動的に0へ置き換えてはいけません。
| 状態 | 意味 | 一般的な扱いの例 |
|---|---|---|
| 0 | 実績がゼロと確認済み | 集計へ含める |
| 空欄・未提出 | 値がまだない | 分母・合計から除外し件数を報告 |
| 集計中 | 後で確定する | 暫定集計から除外 |
| 該当なし | その項目自体が適用されない | 指標定義に従い除外 |
| エラー | 形式不正や取得失敗 | 修正するまで集計しない |
例えば平均売上を計算するとき、未提出を0にすると平均が不当に下がります。一方、実績ゼロを除外すると平均が上がります。欠損処理は分析後の修正ではなく、分析前のルールです。
自由記述の「なし」「-」「N/A」「未確認」も、意味を確認して統一します。元データを直接上書きせず、分析用コピーに変換列を追加すると変更を追跡できます。
手順5:データ辞書を作る
AIにはCSVだけでなく、各列の意味を渡します。
データ辞書
- record_id:行を識別する一意のID
- month:対象月。YYYY-MM形式
- region:営業地域
- sales_man_yen:返品控除後・税抜の確定売上。単位は万円
- status:確定/集計中/未提出
- include_in_total:確定値として集計可能ならTRUE
集計ルール
- include_in_total=TRUEの行だけを金額集計する
- 欠損値を0へ置換しない
- 地域別合計とともに、対象行数・除外行数を示す
- 期間は2026-04から2026-06まで
ここで「返品控除後」「税抜」のような定義が不明なら、分析を始めずデータ所有者へ確認します。
手順6:AIへ集計を依頼する
次のプロンプトは、結論だけでなく再現情報を出させるためのものです。
添付CSVを、以下のデータ辞書と集計ルールに従って分析してください。
目的:2026年4〜6月の確定売上を地域別に比較する。
必須の出力:
1. 読み込んだ行数、列名、期間の最小値・最大値
2. 列ごとの欠損数とstatus別件数
3. 適用した除外条件
4. 地域別の売上合計、対象行数、除外行数
5. 計算式または使用した処理手順
6. 元データのrecord_idで追跡できる集計対象一覧
7. 解釈上の注意点
禁止事項:
- 欠損を0と仮定しない
- 単位を推測しない
- 対象件数が少ない結果を一般化しない
- データにない原因を断定しない
計算前に、理解した列定義と集計条件を短く再掲してください。
成功の目安は、分析開始前にAIが対象期間、集計列、除外条件を正しく言い直し、結果に対象件数と除外件数が付くことです。列名を取り違えていたら、その時点で止めて修正します。
ChatGPTで実行する場合の確認順
ChatGPTは、対応するCSVや表計算ファイルを読み込み、表やグラフを作成できます。一部の分析ではPythonコードを生成し、実行します。ただし、アップロードできたことだけでは、全行を意図どおり解釈した証明になりません。最初の依頼では傾向や原因を求めず、行数・列数・列名・推定データ型・先頭数行だけを出させます。続いて、列ごとの欠損数、主キー候補の重複数、カテゴリ値の種類、日付の最小値と最大値を確認してから集計へ進みます。
集計後は、実際に使った抽出条件、型変換、グループ化、構成比の分母、対象件数と除外件数を示すよう依頼します。コードが表示される場合も、説明を読むだけで終えず、抽出後の代表行と既知の小計を表計算ソフトで再計算します。OpenAIの公式説明では、データ分析用のPython環境は外部WebリクエストやAPI呼び出しを行えません。外部の最新値が必要な場合は、利用権限を確認したファイルをアップロードするか、アカウントで利用可能な接続元を明示的に選びます。
手順7:表計算ソフトで再計算する
良いCSVのサンプルをExcelへ読み込んだとします。列がA〜Fで、region がC列、sales_man_yen がD列、include_in_total がF列なら、東日本の確定売上は次の式で確認できます。
=SUMIFS($D$2:$D$7,$C$2:$C$7,"東日本",$F$2:$F$7,TRUE)
対象行数は次の式です。
=COUNTIFS($C$2:$C$7,"東日本",$F$2:$F$7,TRUE)
サンプルでは東日本の対象はR001とR002なので、合計は215万円、対象行数は2、除外行数は1です。これは記事内の例示データから得られる確認値であり、実在の事業データの実測値ではありません。
結果が一致しない場合は、次の順に確認します。
- AIとExcelで対象行が同じか
- TRUEが真偽値ではなく文字列になっていないか
- 金額列に文字や異なる単位が混ざっていないか
- 期間の端を含むか
- 欠損や重複行の扱いが同じか
- 丸める前と後のどちらを合計したか
ピボットテーブルも便利ですが、フィルター条件が見えにくくなることがあります。検算では、対象行を絞り込んだ画面と計算式を一緒に保存します。
手順8:グラフより先に分母を確認する
割合を比較するときは、分子だけでなく分母を表へ出します。
例えば返品率なら、返品件数 ÷ 出荷件数 なのか、返品数量 ÷ 販売数量 なのかで意味が変わります。キャンセルを分母へ含むか、同月返品か購入月基準かも決めます。
グラフには、指標名、期間、単位、分母、除外条件を添えます。差が大きく見えても、対象件数が少ない場合は「傾向」と断定しません。
期待結果と確認方法
分析完了時に、次の5点が残っていれば再現性を確認しやすくなります。
- 入力したCSVの版または保存日時
- データ辞書と欠損ルール
- AIへ渡したプロンプト
- 使用した計算・除外条件
- Excelなどによる検算結果
別の担当者が同じCSVと条件を使い、同じ合計と対象件数を得られるか確認します。結果だけが一致しても、対象行が違えば偶然の一致かもしれないため、record_idも比較します。
失敗しやすい点と対処
合計行を明細へ混ぜる
AIが明細と合計を再合計する可能性があります。分析用CSVから小計・合計行を外します。
欠損を自動で0にする
未提出と実績ゼロを分け、欠損数も結果へ出します。
日付が文字列になっている
2026/7/1、7月、Julyが混ざらないよう、ISO形式などへ統一します。変換後に最小日と最大日を確認します。
AIの説明だけを検算とみなす
AIが自分の計算を説明しても、独立した検算ではありません。表計算ソフト、SQL、別担当者の手計算など、別の経路で代表値を確認します。
グラフから原因を断定する
売上低下と問い合わせ増加が同時に起きても、因果関係は確定しません。「関連が見える」「追加検証が必要」と事実と仮説を分けます。
利用条件と採用しない条件
ファイルアップロード機能、対応形式、容量、回数は、サービス、プラン、モデル、組織設定によって変わります。アップロードできない場合は、上限回避のために機密ファイルを別サービスへ移すのではなく、承認された方法を確認してください。
データの定義が不明、個人情報を安全に除けない、欠損が多すぎる、正本を特定できない場合は、AI分析を採用しません。まずデータ所有者と前処理ルールを決めます。
AI活用ナビの判断
AI活用ナビの判断: AIは、欠損の一覧化、集計コードの作成、複数の切り口の探索に向いています。しかし、分母、単位、対象期間、除外条件を決める責任は利用者にあります。重要な判断へ使う集計は、対象行IDと計算方法を残し、別手段で再計算できる場合に限って採用するのが安全です。
確認日と公式情報
2026年7月29日に確認しました。
- OpenAI「Data analysis with ChatGPT」:明確な列名、1行1レコード、空行や複数表を避ける準備、計算コード・出力・仮定を確認する必要性を確認しました。対応形式はモデル、プラン、ワークスペース設定等で変わると案内されています。
- OpenAI「File Uploads FAQ」:ファイルアップロードの用途、保存・削除、データ利用、各種上限に関する案内を確認しました。数値上限は変更されやすいため、本記事では固定値を手順の前提にしていません。
この記事はChatGPTの画面上で利用できるファイル分析を含む一般的な手順です。APIキーやOpenAI APIは使用しません。
PRIMARY SOURCES
確認した一次情報
広告