กำไร:
- ความสามารถในการใช้โค้ด SQL และ pandas ที่แข็งแกร่ง และอ่านและตรวจสอบทีละบรรทัดโดยให้สคีมาและวัตถุประสงค์ที่ชัดเจนสำหรับปัญญาประดิษฐ์
- ความสามารถในการตรวจจับข้อผิดพลาดที่ไม่มีการโต้ตอบ เช่น การนับแถว ฟังก์ชันการปรับให้เหมาะสม และปริมาณงานหลังจากการรวม/JOIN
- ความสามารถในการแก้ปัญหาในการดีบักโดยไม่ต้องปิดเสียง และหลีกเลี่ยงการรันโค้ดโดยไม่ต้องทดสอบในสภาพแวดล้อมการใช้งานจริง
วิทยาศาสตร์ข้อมูลมีสองภาษาหลัก: SQL (Structured Query Language — ภาษาสำหรับการสืบค้นข้อมูลจากฐานข้อมูล) และ Python (โดยเฉพาะไลบรารี pandas — เครื่องมือมาตรฐานสำหรับการจัดการตารางโดยทางโปรแกรม) ในหน่วยนี้ เราจะเรียนรู้การใช้ AI เป็นพันธมิตรด้านโค้ด: รับโค้ด SQL และ Pandas แบบทึบจากโค้ดด้วยคำถามที่ถูกต้อง การอ่านและตรวจสอบความถูกต้องของโค้ดนั้น การดีบักโค้ด และอย่ารันโค้ดแบบสุ่มสี่สุ่มห้า AI เขียนโค้ดซ้ำในไม่กี่วินาทีแทนที่จะเป็นนาที แต่เป็นหน้าที่ของคุณที่จะต้องแน่ใจว่าโค้ดที่สร้างจะประมวลผลคอลัมน์ที่ถูกต้องด้วยตรรกะที่ถูกต้อง รหัสการทำงานไม่ได้หมายถึงรหัสที่ถูกต้อง
เหตุใดการสร้างโค้ดด้วย AI จึงทรงพลังแต่มีความเสี่ยง
AI ให้ประโยชน์สำคัญสามประการในการสร้างโค้ด: ความเร็ว (เขียนการดำเนินการ groupby-pivot 30 บรรทัดในไม่กี่วินาที) การแจ้งเตือน (เตือนให้คุณนึกถึงฟังก์ชันแพนด้าที่คุณลืม) และการสอน (อธิบายโค้ดทีละบรรทัด) แต่มีความเสี่ยงสามประการ: ข้อผิดพลาดลอจิกแบบเงียบ (โค้ดที่รวมการเรียกใช้คอลัมน์ที่ไม่ถูกต้องโดยไม่มีข้อผิดพลาด), ฟังก์ชันที่พอดี (แนะนำวิธีการที่ไม่มีอยู่) และกับดักผลตอบแทน (โค้ดที่ทำงานบนข้อมูลขนาดเล็ก แต่ขัดข้องที่ 10 ล้านแถว) ดังนั้นกฎทอง: อ่านโค้ดของ AI ราวกับว่าคุณเขียนมันเอง อย่าวิ่งตามที่คุณไม่เข้าใจ
SQL: ประมวลผลข้อมูลที่ต้นทาง
SQL ช่วยให้คุณสามารถดึงข้อมูลจากฐานข้อมูลและประมวลผลที่นั่น คุณสามารถสรุปบรรทัดได้หลายล้านบรรทัดโดยไม่ต้องดึงลงใน Python โครงสร้างพื้นฐาน: SELECT (คอลัมน์ใด), WHERE (แถวใด), จัดกลุ่มตาม (จัดกลุ่มและสรุป), เข้าร่วม (รวมตาราง), HAVING (ตัวกรองหลังกลุ่ม) AI มีประโยชน์มากในการเขียน JOIN ที่ซับซ้อนและฟังก์ชันหน้าต่าง แต่อย่าลืมตรวจสอบสองสิ่ง: JOIN ผ่านคีย์ที่ถูกต้องหรือไม่ (คีย์ที่ไม่ถูกต้องซ้ำแถว) และตรรกะของตัวกรองถูกต้อง (โดยเฉพาะพฤติกรรม NULL และช่วงวันที่)
ข้อควรระวัง: อย่าเรียกใช้การสืบค้น SQL ที่สร้างโดย AI โดยตรงกับฐานข้อมูลที่ใช้งานจริง ทดสอบด้วยสำเนาขนาดเล็กหรือ LIMIT ก่อน อย่าเรียกใช้แบบสอบถาม UPDATE/DELETE โดยไม่ตรวจสอบเงื่อนไข WHERE ผิด WHERE สามารถลบทั้งตารางได้
Python/pandas: การวิเคราะห์ที่ยืดหยุ่น
pandas เป็นวิธีมาตรฐานในการจัดการตาราง (DataFrame) ใน Python การใช้ AI อย่างมีประสิทธิภาพที่สุดคือการกำหนดโครงร่างและวัตถุประสงค์ที่ชัดเจน การดำเนินการที่ใช้บ่อยที่สุด: filter, groupby, merge, pivot_table, Apply AI เขียนสิ่งเหล่านี้อย่างรวดเร็ว สิ่งที่คุณต้องการตรวจสอบคือตรรกะ: คือการจัดกลุ่มในคอลัมน์ที่ถูกต้อง การผสานเปลี่ยนจำนวนแถวโดยไม่คาดคิด (ตรวจสอบจำนวนแถวหลังจากการผสานเสมอ) การดำเนินการลูกโซ่เปลี่ยนแปลงต้นฉบับหรือไม่
การทำธุรกรรม
SQL
หมีแพนด้า
ด่าน
การกรอง
ที่ไหน
df[df.x > 5]
พฤติกรรม NULL/NaN
การจัดกลุ่ม
จัดกลุ่มตาม
df.groupby()
คอลัมน์ถูกหรือเปล่า?
ผสาน
เข้าร่วม
df.ผสาน()
การเปลี่ยนแปลงการนับแถว
สรุป
เฉลี่ย(), SUM()
.mean(), .sum()
คอลัมน์ไหนถูกรวบรวม
เรียงตาม
สั่งซื้อโดย
.sort_values()
ทิศทาง (ขึ้น/ลง)
การขจัดข้อมูลซ้ำซ้อน
แตกต่าง
.drop_duplicates()
ในคอลัมน์ไหน?
การดีบัก: ด้วย AI
เมื่อโค้ดล้มเหลว AI จะเป็นพันธมิตรในการดีบักที่ยอดเยี่ยม ระบุข้อความแสดงข้อผิดพลาดแบบเต็มและข้อมูลโค้ดที่เกี่ยวข้อง แต่ระวังกับดักสองอัน ประการแรก AI อาจแนะนำวิธีแก้ปัญหาที่ "ปิดเสียง" ข้อผิดพลาด (เช่น การซ่อนการแจ้งเตือน) ซึ่งไม่ได้แก้ไขข้อผิดพลาด แต่จะซ่อนข้อผิดพลาดไว้ ประการที่สอง บางครั้ง AI จะเปลี่ยนพฤติกรรมอื่นอย่างเงียบๆ ในขณะที่ "แก้ไข" ปัญหา กฎ: ทำความเข้าใจการแก้ไข แก้ไขไม่ปิดเสียง และตรวจสอบว่าเอาต์พุตยังคงถูกต้องหลังจากการแก้ไข
ต้องการโค้ดที่สามารถตีความและบำรุงรักษาได้
เมื่อซื้อโค้ดจาก AI ให้ขอโค้ดที่สามารถอ่านและบำรุงรักษาได้ ไม่ใช่แค่โค้ดที่ "ใช้งานได้" เมื่อคุณหรือเพื่อนร่วมงานเปิดโค้ดนั้นหลายเดือนต่อมา ก็ควรจะเข้าใจได้ว่ามันทำอะไร ในการดำเนินการนี้ ให้ทำให้เป็นนิสัยโดยให้ AI ประกอบด้วยสามสิ่ง ได้แก่ ชื่อตัวแปรที่มีความหมาย (orders_temiz ไม่ใช่ df2) บรรทัดความคิดเห็นสั้นๆ ในขั้นตอนสำคัญ (อธิบายว่าทำไม ไม่ใช่สิ่งที่กำลังทำอยู่) และค่าคงที่ที่มีชื่อแทนตัวเลขมหัศจรรย์ (ACCEPT_ESIGI = 0.85 แทนที่จะเป็น 0.85 ฝังอยู่ในโค้ด) หลีกเลี่ยงการต่อสายโซ่เส้นเดียวยาว ๆ (เชื่อมต่อห้าการกระทำในหนึ่งบรรทัด) สิ่งเหล่านี้ทำให้การดีบักทำได้ยาก ตามค่าเริ่มต้น AI มักจะสร้างโค้ดที่กระชับและ "ชาญฉลาด"; หากคุณพูดอย่างชัดเจนว่า "เขียนอ่านได้ ตีความได้ บำรุงรักษาได้" คุณจะได้รับผลลัพธ์ที่สามารถบำรุงรักษาได้มากขึ้น นี่เป็นพื้นฐานของความสามารถในการทำซ้ำ (หน่วยที่ 10): รหัสที่ไม่เข้าใจคือรหัสที่ไม่สามารถเรียกใช้ซ้ำได้อย่างปลอดภัย
มินิเคสสามอัน
กรณีที่ 1 — เข้าร่วมการจำลองแบบ นักวิเคราะห์รวมคำสั่งซื้อเข้ากับตารางผลิตภัณฑ์และพบว่ามูลค่าการซื้อขายรวมสูงกว่า 3 เท่า สาเหตุ: แต่ละผลิตภัณฑ์มีหลายแถว (สีต่างกัน) ในตารางผลิตภัณฑ์ JOIN ทำซ้ำแต่ละคำสั่งซื้อ รหัสของ AI "ใช้งานได้" แต่จำนวนบรรทัดเพิ่มขึ้นจาก 240,000 เป็น 690,000 บรรทัด บทเรียน: ตรวจสอบจำนวนบรรทัดหลังการรวม/เข้าร่วมเสมอ
กรณีที่ 2 — ฟังก์ชั่นการติดตั้ง เขาแนะนำ AI df.groupby('x').summarize() ให้กับนักศึกษาฝึกงาน ไม่มีวิธีการดังกล่าวในแพนด้า (มี .agg()) รหัสใช้งานไม่ได้ เด็กฝึกงานหายไป 20 นาที บทเรียน: ตรวจสอบฟังก์ชันที่คุณไม่รู้จักจากเอกสาร AI สามารถสร้างวิธีการได้
กรณีที่ 3 — ผลผลิตล่มสลาย รหัสหนึ่งกำลังสอบถามฐานข้อมูลในแต่ละแถว วิ่งไป 5,000 เส้น ใช้เวลา 9 ชั่วโมงกับ 4 ล้านบรรทัด และหยุดลง เมื่อ AI แนะนำโซลูชันแบบเวกเตอร์ (แบทช์) เวลาจะลดลงเหลือ 40 วินาที บทเรียน: โค้ดที่ทำงานบนข้อมูลขนาดเล็กอาจขัดข้องกับข้อมูลขนาดใหญ่ พิจารณาประสิทธิภาพ
เทมเพลตที่สามารถคัดลอกได้สี่แบบ
1) การร้องขอ SQL ด้วยสคีมา:
บทบาทของคุณ: ผู้ช่วย SQL (PostgreSQL) ตาราง: - คำสั่งซื้อ (id, customer_id, การประทับเวลาวันที่, ตัวเลขจำนวน) - ลูกค้า (id, ข้อความเมือง) งาน: รับมูลค่าการซื้อขายรวมและจำนวนคำสั่งซื้อต่อเมืองในปี 2024 จัดเรียงตามมูลค่าการซื้อขายจากมากไปน้อย อธิบายว่าคุณจัดการกับเมือง NULL อย่างไร ฉันจะทดสอบแบบสอบถามด้วย LIMIT ก่อน อัปเดต/ลบการสร้าง
2) กระบวนการแพนด้าพร้อมจุดตรวจ:
ฉันมี DataFrames df (คำสั่งซื้อ) และ df_customers (ลูกค้า) คำนวณจำนวนเงินเฉลี่ยต่อเมือง สิ่งสำคัญ: พิมพ์จำนวนแถวก่อนและหลังการรวมเพื่อดูว่ามีการซ้ำกันหรือไม่ อธิบายว่าคุณรวมคอลัมน์ใดและเหตุใดคุณจึงเลือกด้านใน/ซ้าย
3) คำอธิบายและการตรวจสอบรหัส:
อธิบายโค้ดแพนด้าต่อไปนี้ทีละบรรทัด แต่ละบรรทัดทำอะไร มีสมมติฐานอะไรบ้าง และจะให้ผลลัพธ์ที่ผิดในกรณีใดบ้าง แจ้งให้เราทราบหากฉันใช้ฟังก์ชันเหลวไหล รหัส: [วาง]
4) การดีบัก:
รหัสนี้ให้ข้อผิดพลาดนี้ ข้อความแสดงข้อผิดพลาดแบบเต็ม: [วาง] รหัส: [วาง]. อธิบายสาเหตุ ROOT ของข้อผิดพลาดและแก้ไข แก้ไขโดยการแก้ปัญหาจริง ไม่ใช่การปิดเสียงการแจ้งเตือน ระบุด้วยว่าโปรแกรมฟิกซ์เปลี่ยนเอาต์พุตหรือไม่
พรอมต์อ่อน / พรอมต์แข็งแกร่ง
พรอมต์ที่อ่อนแอ:
เขียนแบบสอบถามที่ให้ยอดขายต่อเมืองแก่ฉัน
ชื่อตาราง คอลัมน์ ประเภทฐานข้อมูล ลักษณะการทำงาน NULL ไม่ชัดเจน AI เป็นเรื่องปกติ มันอาจจะสร้างแบบสอบถามที่ไม่เหมาะกับตารางของคุณ
พรอมต์อันทรงพลัง:
บทบาทของคุณ: ผู้ช่วย SQL (MySQL 8) ตาราง: ยอดขาย(id, varchar เมือง, จำนวนทศนิยม, วันที่) ภารกิจ: รับยอดรวมและจำนวนเฉลี่ย จำนวนคำสั่งซื้อต่อเมืองสำหรับปี 2024 จัดเรียงลดลงตามจำนวนทั้งหมด แสดงเฉพาะเมืองที่มีคำสั่งซื้อมากกว่า 100 รายการ (HAVING) NULL ไม่รวมเมือง อธิบายคำถาม; ฉันจะทดสอบด้วย LIMIT
ที่นี่ฐานข้อมูล สคีมา ตัวกรอง การเรียงลำดับ และกฎ NULL มีความชัดเจน
ข้อผิดพลาดทั่วไป
- รันโค้ดโดยไม่ต้องอ่าน รหัสการทำงานไม่ใช่รหัสที่ถูกต้อง รหัสที่จัดการคอลัมน์ที่ไม่ถูกต้องจะทำงานโดยไม่มีข้อผิดพลาดเช่นกัน
- ไม่ตรวจสอบจำนวนแถวหลังจากรวม/เข้าร่วม คีย์ที่ไม่ถูกต้องจะทำซ้ำแถวและเพิ่มผลรวมให้สูงขึ้น
- ไม่ตรวจสอบฟังก์ชั่นฟิตติ้ง AI อาจแนะนำวิธีการที่ไม่มีอยู่จริง ยืนยันจากเอกสารว่าคุณไม่รู้จัก
- ไม่คิดเรื่องประสิทธิภาพ ใช้/วนซ้ำการทำงานกับข้อมูลขนาดเล็กที่ขัดข้องในแถวหลายล้านแถว ทำให้เป็นเวกเตอร์
- ทำงานโดยตรงบนฐานข้อมูลการผลิต โดยเฉพาะอย่างยิ่งการรัน UPDATE/DELETE โดยไม่มี WHERE หรือการทดสอบถือเป็นหายนะ
เคล็ดลับ: สร้างนิสัยในการเพิ่ม "บรรทัดตรวจสอบ" ให้กับโค้ดทุกชิ้นที่คุณได้รับจาก AI: จำนวนบรรทัดก่อนและหลังการประมวลผล บรรทัดตัวอย่างสองสามบรรทัด และผลรวมที่สำคัญด้วยมือ การตรวจสอบทั้งสามนี้ตรวจพบข้อผิดพลาดทางตรรกะที่ไม่มีการโต้ตอบส่วนใหญ่
โดยสรุป
AI เป็นพันธมิตรที่ทรงพลังที่สร้างโค้ด SQL และ pandas ได้อย่างรวดเร็ว แต่ก็ไม่ใช่หน่วยงานที่มองไม่เห็น จงบอกแผนการและจุดประสงค์ให้เขาชัดเจน อ่านโค้ดที่สร้างขึ้นราวกับว่าคุณเขียนมันเอง ตรวจสอบจำนวนแถว ฟังก์ชันการปรับให้เหมาะสม และปริมาณงานหลังผสาน/เข้าร่วม อย่ารันโดยไม่ทดสอบบนฐานข้อมูลที่ใช้งานจริง เมื่อทำการดีบัก ให้มุ่งเป้าไปที่การแก้ปัญหา ไม่ใช่ปิดบังมัน รหัสที่ใช้งานได้ไม่ใช่รหัสที่ถูกต้อง มีเพียงคุณเท่านั้นที่สามารถรับประกันความถูกต้องได้
งานสมัคร
เลือกคำถามการวิเคราะห์ (เช่น “มูลค่าการซื้อขายรายเดือนต่อช่อง”) และขอรหัสจาก AI ที่มีทั้ง SQL และ Panda อ่านรหัสทั้งสองบรรทัดต่อบรรทัด ตรวจสอบจำนวนบรรทัดหลังจากรวม/เข้าร่วม และตรวจสอบผลรวมที่สำคัญอย่างน้อยหนึ่งรายการด้วยตนเอง เปรียบเทียบว่ารหัสทั้งสองให้ผลลัพธ์เหมือนกันหรือไม่ หากแตกต่าง ให้ค้นหาสาเหตุ
รายการตรวจสอบ
- [ ] ฉันได้ให้ตาราง/สคีมาและวัตถุประสงค์แก่ AI อย่างชัดเจนหรือไม่
- [ ] ฉันอ่านและเข้าใจโค้ดที่สร้างทีละบรรทัดหรือไม่?
- [ ] ฉันตรวจสอบจำนวนบรรทัดหลังจากรวม/เข้าร่วมแล้วหรือยัง?
- [ ] ฉันได้ตรวจสอบฟังก์ชันที่ฉันไม่รู้จักจากเอกสารประกอบแล้วหรือยัง?
- [ ] ฉันได้ทดสอบโค้ดกับข้อมูลที่ปลอดภัย/ขนาดเล็กก่อนและไม่ใช่ในสภาพแวดล้อมการใช้งานจริงหรือไม่