LEVEL 10 ・ AI × Python / Lesson 28
結果がおかしいとき、AIに直してもらう
エラーは出ないのに、結果が合わないとき。検算して、期待と実際を伝えて、直してもらいます。
このレッスンが終わったら
「結果がおかしいときは、期待と実際を数字で伝える。頼む・読む・試す・検算する・直す、を何周かまわす」と言える。
できることを見る
AIが書いたコードが、うまく動かないとき、直してもらうことができます。ただし、うまく直してもらうには、状況を、正しく伝えることが大切です。
直してもらう場面は、2種類あります。
- ① エラーが出るコードが止まる
- ② 結果がおかしい動くが、数字が合わない
①は、エラー講座で学びました。今回は、見つけにくい**②「エラーは出ないが、結果がおかしい」**を、中心に学びます。
動かしてみる
AIが書いた、「営業部の売上の合計」を出すコードです。実行してみてください。
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
エラーは出ません。数字も表示されました。334000 です。でも、これは、合っているでしょうか?
1行ずつ読む
確かめる方法は、自分で、別の方法で求めて、見比べることです。(検算)Excelで、sales.xlsx の営業部の金額を足すと、478000 です。数字が合いません。
コードを、日本語にしてみましょう。
df = pd.read_excel("sales.xlsx")sales.xlsx を読み込むsales_dept = df[df["部署"] != "営業"]部署が、「営業」では**ない**行を、取り出すprint(sales_dept["金額"].sum())その金額の合計を、表示する日本語にすると
!= は、「等しくない」という意味でしたね。営業部の合計が欲しいのに、==(等しい)ではなく、!= と書かれているのが、原因です。エラーは出ないのに、結果は違う、典型的な間違いです。
1か所だけ変える
原因が分かったら、!= を == に直します。
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
478000 になり、Excelでの検算と一致しました。
結果がおかしいときの、AIへの文章
次のPythonコードの結果が、期待と違います。原因と、直し方を教えてください。 【やりたいこと】 営業部の、金額の合計を表示したい 【期待する結果】 478000(Excelで、手計算した結果) 【実際の結果】 334000 【コード】 (ここにコード全体を貼る) 直したあとは、「どこを、なぜ直したか」も説明してください。
「期待する結果」と「実際の結果」を、数字で伝えるのが、コツです。AIは、数字の差から、原因を推理できます。
自分で書く
お題① 次のコードは、「営業部の金額の合計」を出す、というお願いに対して、AIが書いたものです。しかし、結果が、期待(478000)と違います。直してください。
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
ヒントを見る
mean() は「平均」です。合計は、sum() でした。
答えの例を見る
import pandas as pd
df = pd.read_excel("sales.xlsx")
sales_dept = df[df["部署"] == "営業"]
print(sales_dept["金額"].sum())お題② 今度は、「営業部の件数(何行あるか)」が欲しいのに、合計が表示されます。直してください。(6)
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
ヒントを見る
件数は、行の数です。len(sales_dept) と書きます。
答えの例を見る
import pandas as pd
df = pd.read_excel("sales.xlsx")
sales_dept = df[df["部署"] == "営業"]
print(len(sales_dept))