利益:
- 人工知能に明確なスキーマと目的を与えることで、堅牢な SQL および pandas コードを取得し、一行ずつ読み取って検証する能力
- マージ/JOIN後の行数、フィッティング関数、スループットなどのサイレントエラーをキャッチする機能
- 問題を沈黙させることなくデバッグで問題を解決し、実稼働環境でテストせずにコードを実行することを回避する機能
データ サイエンスには、SQL (構造化クエリ言語 - データベースからデータをクエリするための言語) と Python (具体的には、プログラムでテーブルを操作するための標準ツールである pandas ライブラリ) という 2 つの主要な言語があります。この単元では、AI をコード パートナーとして使用する方法を学びます。つまり、適切な質問を使用して AI から堅牢な SQL およびパンダ コードを取得し、そのコードを読み取って検証し、デバッグし、決して盲目的に実行しないようにします。 AI は反復的なコードを数分ではなく数秒で作成します。ただし、生成されるコードが正しいロジックで正しい列を処理することを確認するのはあなたの仕事です。機能するコードは正しいコードを意味するわけではありません。
AI を使用してコードを生成するのは強力だがリスクがある理由
AI は、コード生成において 3 つの大きな利点を提供します。速度 (30 行の groupby-pivot 操作を数秒で作成)、リマインダー (忘れていた pandas 関数を思い出させる)、および教育 (コードを 1 行ずつ説明) です。ただし、これには 3 つのリスクがあります。サイレント ロジック エラー (間違った列を合計するコードがエラーなしで実行される)、適合関数 (存在しないメソッドを提案する)、およびイールド トラップ (小規模なデータでは動作するが 1,000 万行でクラッシュするコード) です。つまり、黄金律は、AI のコードを自分で書いたかのように読むことです。理解できない行は実行しないでください。
SQL: ソースでデータを処理する
SQL を使用すると、データベースからデータを取得し、そこで処理することができます。 Python に取り込まなくても、何百万行も要約できます。基本的な構成要素: SELECT (どの列)、WHERE (どの行)、GROUP BY (グループ化して集計)、JOIN (テーブルの結合)、HAVING (グループ後のフィルター)。 AI は複雑な JOIN やウィンドウ関数を作成するのに非常に役立ちますが、次の 2 つの点を必ず確認してください。正しいキーを使用した JOIN か (間違ったキーは行を複製します)、もう 1 つはフィルター ロジックが正しいか (特に NULL の動作と日付範囲) です。
注意: AI が生成した SQL クエリを実稼働データベースに対して直接実行しないでください。最初に小さなコピーまたは LIMIT でテストしてください。 WHERE 条件を検証せずに UPDATE/DELETE クエリを実行しないでください。 WHERE が間違っていると、テーブル全体が削除される可能性があります。
Python/pandas: 柔軟な分析
pandas は、Python でテーブル (DataFrame) を操作する標準的な方法です。 AI を最も効率的に使用するには、AI に明確な計画と目的を与えることです。最も一般的に使用される操作: filter、groupby、merge、pivot_table、apply。 AI はこれらを素早く書きます。チェックしたいのはロジックです。正しい列でグループ化されているか、マージによって行数が予期せず変更されたか (マージ後は必ず行数を確認してください)、チェーン操作によって元の行が変更されているかどうかです。
トランザクション
SQL
パンダ
チェックポイント
フィルタリング
どこで
df[df.x > 5]
NULL/NaN の動作
グループ化
グループ化
df.groupby()
右側の列ですか?
マージ
参加する
df.merge()
行数の変更
概要
AVG()、SUM()
.mean()、.sum()
どの列が収集されたか
並べ替え順
注文方法
.sort_values()
方向(昇順/降順)
重複排除
独特の
.drop_duplicates()
どの列にありますか?
デバッグ: AI を使用
コードが失敗した場合、AI は優れたデバッグ パートナーになります。完全なエラー メッセージと関連するコード スニペットを入力します。ただし、2つの罠に注意してください。まず、AI はエラーを「沈黙させる」解決策 (アラートを非表示にするなど) を提案する場合があります。これはエラーを修正するのではなく、非表示にします。第二に、AI は問題を「解決」している間に、別の動作を静かに変更することがあります。ルール: 修正を理解し、ミュートせずに解決し、修正後も出力が正しいことを確認します。
解釈可能で保守可能なコードが必要
AI からコードを購入する場合は、「機能する」コードだけでなく、読みやすく保守しやすいコードを求めてください。あなたまたは同僚が数か月後にそのコードを開いたときには、そのコードが何をしているのか理解できるはずです。これを行うには、AI に 3 つの要素を含める習慣をつけましょう。意味のある変数名 (df2 ではなく、orders_temiz)、重要なステップでの短いコメント行 (何が行われているかではなく理由を説明)、そしてマジック ナンバーの代わりに名前付き定数 (コードに埋め込まれた 0.85 ではなく ACCEPT_ESIGI = 0.85) です。また、長い単一行チェーン (5 つのアクションを 1 行に接続する) も避けてください。これらによりデバッグが困難になります。デフォルトでは、AI は簡潔で「スマートな」コードを生成することがよくあります。 「読みやすく、解釈しやすく、保守しやすいものを書く」とはっきり言えば、はるかに保守しやすい出力が得られます。これは再現性の基礎でもあります (ユニット 10)。理解できないコードは、安全に再実行できないコードです。
ミニケース3個
ケース 1 — JOIN レプリケーション。アナリストが注文と製品表を組み合わせたところ、総売上高が 3 倍であることがわかりました。原因: 各製品には、製品表に複数の行 (異なる色) がありました。 JOIN により各注文が複製されました。 AIのコードは「動いていた」が、行数は24万行から69万行に急増していた。教訓: マージ/結合後の行数を常に確認してください。
ケース 2 — フィッティング機能。彼は AI df.groupby('x').summarize() をインターンに提案しました。 pandas にはそのようなメソッドはありません (.agg() があります)。コードが機能せず、インターンは 20 分間途方に暮れました。教訓: ドキュメントで認識できない関数を確認してください。 AIはメソッドを作り出すことができます。
ケース 3 — 収量の崩壊。 1 つのコードは、行ごとに適用時にデータベースにクエリを実行していました。 5,000 行で実行され、400 万行で 9 時間かかり、停止しました。 AI がベクトル化 (バッチ) ソリューションを提案すると、時間は 40 秒に短縮されました。教訓: 小さなデータで動作するコードは、大きなデータではクラッシュする可能性があります。効率を考慮してください。
コピー可能な 4 つのテンプレート
1) スキーマを使用して SQL をリクエストします。
あなたの役割: SQL アシスタント (PostgreSQL)。テーブル:- 注文(id、customer_id、日付タイムスタンプ、金額数値)- 顧客(id、都市テキスト)タスク: 2024 年の都市ごとの総売上高と注文数を売上高で降順に並べて取得します。 NULL 都市をどのように処理するかを説明してください。最初に LIMIT を使用してクエリをテストします。世代を更新/削除します。
2) チェックポイントを使用したパンダプロセス:
DataFrames df (orders) と df_customers (customers) があります。都市ごとの平均金額を計算します。重要: 重複があるかどうかを確認できるように、マージの前後の行数を出力します。どの列をマージしたか、および内側/左を選択した理由を説明してください。
3) コードの説明と検証:
次の pandas コードを 1 行ずつ説明します。各行は何を行うのか、どのような仮定を行うのか、どのような場合に誤った結果が生じる可能性があるのかを説明します。ファッジ関数を使用したかどうかを教えてください。コード: [貼り付け]
4) デバッグ:
このコードではこのエラーが発生します。完全なエラー メッセージ: [貼り付け]。コード: [貼り付け]。エラーの根本原因を説明し、修正してください。アラートを止めるのではなく、実際に問題を解決することで問題を修正します。修正によって出力が変更されたかどうかも示します。
弱いプロンプト / 強いプロンプト
弱いプロンプト:
都市ごとの売上を取得するクエリを作成します。
テーブル名、列、データベースの種類、NULL の動作が不明瞭です。 AI は一般的であり、テーブルに合わないクエリを生成する可能性があります。
強力なプロンプト:
あなたの役割: SQL アシスタント (MySQL 8)。テーブル: sales(ID、都市の varchar、金額 10 進数、日付 date)。タスク: 2024 年の都市ごとの合計および平均注文数、注文数を取得します。合計金額で降順に並べ替えます。注文数が 100 を超える都市 (HAVING) のみを表示します。NULL では都市は除外されます。クエリを説明します。 LIMITでテストしてみます。
ここでは、データベース、スキーマ、フィルター、ソート、および NULL ルールが明らかです。
よくある間違い
- コードを読まずに実行します。機能するコードは正しいコードではありません。間違った列を操作するコードもエラーなしで実行されます。
- マージ/JOIN後の行数をチェックしません。間違ったキーを使用すると、黙って行が複製され、合計が増大します。
- フィッティング機能を検証していません。 AI は存在しない方法を提案する可能性があります。見覚えがないことを文書で確認してください。
- 効率など考えていない。小規模なデータを処理する適用/ループが数百万行でクラッシュします。ベクトル化します。
- 本番データベース上で直接実行します。特に、WHERE やテストを行わずに UPDATE/DELETE を実行すると、悲惨な結果になります。
ヒント: AI から受け取ったすべてのコードに「検証行」を追加する習慣をつけましょう。前処理と後処理の行数、いくつかのサンプル行、重要な合計を手動で追加します。これら 3 つのチェックは、ほとんどのサイレント ロジック エラーを検出します。
要約すると
AI は SQL や pandas コードを迅速に生成する強力なパートナーですが、盲目的な権威ではありません。彼に計画と目的を明確に伝えてください。生成されるコードを、あたかも自分で書いたかのように読みます。マージ/JOIN 後の行数、フィッティング関数、スループットを確認します。運用データベースでテストせずに実行しないでください。デバッグするときは、問題を沈黙させるのではなく、解決することを目指してください。機能するコードは正しいコードではありません。正確性を保証できるのはあなただけです。
アプリケーションタスク
分析の質問 (「チャネルごとの月次売上高」など) を選択し、SQL とパンダの両方を使用して AI にコードをリクエストします。両方のコードを 1 行ずつ読み取り、マージ/結合後の行数を確認し、少なくとも 1 つの重要な合計を手動で確認します。 2 つのコードが同じ結果を生成するかどうかを比較します。異なる場合は、その理由を調べてください。
チェックリスト
- [ ] AI にテーブル/スキーマと目的を明確に与えましたか?
- [ ] 生成されたコードを 1 行ずつ読んで理解しましたか?
- [ ] マージ/JOIN後の行数は確認しましたか?
- [ ] 認識していない機能をドキュメントで確認しましたか?
- [ ] 運用環境ではなく、最初に安全な/小規模なデータでコードをテストしましたか?