Unit 9 / 11

Penjanaan Kod: Analisis Berbantukan AI dengan Python (pandas) dan SQL

Keuntungan:

  • Keupayaan untuk mengambil kod SQL dan panda yang mantap serta membaca dan mengesahkannya baris demi baris dengan memberikan skema dan tujuan yang jelas kepada kecerdasan buatan
  • Keupayaan untuk menangkap ralat senyap seperti kiraan baris, fungsi pemasangan dan daya pemprosesan selepas gabungan/SERTAI
  • Keupayaan untuk menyelesaikan masalah dalam nyahpepijat tanpa menyenyapkannya dan mengelakkan menjalankan kod tanpa mengujinya dalam persekitaran pengeluaran

Sains data mempunyai dua bahasa utama: SQL (Bahasa Pertanyaan Berstruktur — bahasa untuk pertanyaan data daripada pangkalan data) dan Python (khususnya, perpustakaan panda — alat standard untuk memanipulasi jadual secara pemrograman). Dalam unit ini, kita akan belajar menggunakan AI sebagai rakan kongsi kod: mendapatkan kod SQL dan panda yang kukuh daripadanya dengan soalan yang betul, membaca dan mengesahkan kod itu, menyahpepijatnya dan tidak pernah menjalankannya secara membuta tuli. AI menulis kod berulang dalam beberapa saat dan bukannya minit; Tetapi adalah tugas anda untuk memastikan bahawa kod yang dihasilkannya memproses lajur yang betul dengan logik yang betul. Kod kerja tidak bermakna kod yang betul.

Mengapa menghasilkan kod dengan AI adalah berkuasa tetapi berisiko

AI menyediakan tiga faedah besar dalam penjanaan kod: kelajuan (menulis operasi kumpulan demi pangsi 30 baris dalam beberapa saat), peringatan (mengingatkan anda tentang fungsi panda yang anda terlupa) dan pengajaran (menerangkan kod baris demi baris). Tetapi ia membawa tiga risiko: ralat logik senyap (kod yang menjumlahkan lajur yang salah berjalan tanpa ralat), fungsi dipasang (mencadangkan kaedah yang tidak wujud), dan perangkap hasil (kod yang berfungsi pada data kecil tetapi ranap pada 10 juta baris). Jadi peraturan emas: Baca kod AI seolah-olah anda menulisnya sendiri. Jangan jalankan talian yang anda tidak faham.

SQL: memproses data pada sumber

SQL membolehkan anda mendapatkan semula data daripada pangkalan data dan memprosesnya di sana; Anda boleh meringkaskan berjuta-juta baris tanpa menariknya ke dalam Python. Blok binaan asas: PILIH (lajur mana), WHERE (baris yang mana), KUMPULAN OLEH (kumpulan dan ringkaskan), SERTAI (sertai jadual), HAVING (penapis selepas kumpulan). AI sangat membantu dalam menulis JOIN kompleks dan fungsi tetingkap, tetapi pastikan anda menyemak dua perkara: adakah JOIN melalui kekunci yang betul (kunci yang salah menduplikasi baris) dan adakah logik penapis betul (terutamanya NULL kelakuan dan julat tarikh).

Awas: Jangan jalankan pertanyaan SQL yang dijana AI secara langsung terhadap pangkalan data pengeluaran. Uji dengan salinan kecil atau LIMIT dahulu. Jangan sekali-kali menjalankan pertanyaan UPDATE/DELETE tanpa mengesahkan keadaan WHERE; WHERE yang salah boleh memadamkan keseluruhan jadual.

Python/panda: analisis fleksibel

panda ialah cara standard untuk memanipulasi jadual (DataFrame) dalam Python. Penggunaan AI yang paling cekap adalah untuk memberikannya skema dan tujuan yang jelas. Operasi yang paling biasa digunakan: penapis, kumpulan mengikut, cantum, pivot_table, gunakan. AI menulis ini dengan cepat; Perkara yang anda ingin periksa ialah logiknya: ialah pengelompokan dalam lajur yang betul, adakah cantuman telah menukar bilangan baris secara tidak dijangka (sentiasa semak bilangan baris selepas cantuman), adakah operasi rantaian menukar yang asal.

transaksi

SQL

panda

pusat pemeriksaan

Penapisan

DI MANA

df[df.x > 5]

Tingkah laku NULL/NaN

berkumpulan

KUMPULAN OLEH

df.groupby()

Adakah lajur yang betul?

bercantum

SERTAI

df.merge()

Perubahan kiraan baris

Ringkasan

AVG(), SUM()

.mean(), .sum()

Lajur mana yang dikumpul

Isih mengikut

PESANAN OLEH

.sort_values()

Arah (menaik/menurun)

deduplikasi

BERBEZA

.drop_duplicates()

Dalam lajur yang mana?

Penyahpepijatan: dengan AI

Apabila kod gagal, AI ialah rakan kongsi penyahpepijatan yang sangat baik. Berikannya mesej ralat penuh dan coretan kod yang berkaitan. Tetapi berhati-hati dengan dua perangkap. Pertama, AI mungkin mencadangkan penyelesaian yang "menyenyapkan" ralat (cth., menyembunyikan makluman) — ini tidak membetulkan ralat, ia menyembunyikannya. Kedua, AI kadangkala secara senyap mengubah tingkah laku lain sambil "menyelesaikan" masalah. Peraturan: fahami pembetulan, selesaikan bukan redam dan sahkan bahawa output masih betul selepas pembetulan.

Inginkan kod yang boleh ditafsir dan diselenggara

Apabila membeli kod daripada AI, minta kod yang boleh dibaca dan diselenggara, bukan hanya kod yang "berfungsi". Apabila anda atau rakan sekerja membuka kod itu beberapa bulan kemudian, ia sepatutnya dapat memahami fungsinya. Untuk melakukan ini, biasakan AI menyertakan tiga perkara: nama pembolehubah yang bermakna (orders_temiz, bukan df2), baris ulasan pendek pada langkah kritikal (menjelaskan sebab, bukan perkara yang sedang dilakukan), dan pemalar bernama bukannya nombor ajaib (ACCEPT_ESIGI = 0.85 dan bukannya 0.85 terkubur dalam kod). Juga elakkan rantai satu talian yang panjang (menghubungkan lima tindakan dalam satu baris); ini menyukarkan penyahpepijatan. Secara lalai, AI sering menghasilkan kod ringkas dan "pintar"; Jika anda menyebut dengan jelas "tulis boleh dibaca, boleh ditafsir, boleh diselenggara", anda akan mendapat output yang lebih boleh diselenggara. Ini juga merupakan asas kebolehulangan (Unit 10): kod yang tidak difahami ialah kod yang tidak boleh dijalankan semula dengan selamat.

tiga kes mini

Kes 1 — SERTAI replikasi. Seorang penganalisis menggabungkan pesanan dengan jadual produk dan mendapati jumlah pusing ganti adalah 3 kali lebih tinggi. Punca: setiap produk mempunyai berbilang baris (warna berbeza) dalam jadual produk; JOIN menduplikasi setiap pesanan. Kod AI "berfungsi", tetapi bilangan baris telah melonjak daripada 240 ribu kepada 690 ribu. Pengajaran: sentiasa semak bilangan baris selepas cantum/SERTAI.

Kes 2 — Fungsi pemasangan. Dia mencadangkan AI df.groupby('x').summarize() kepada pelatih; Tiada kaedah sedemikian dalam panda (terdapat .agg()). Kod tidak berfungsi, pelatih hilang selama 20 minit. Pelajaran: sahkan fungsi yang anda tidak kenali daripada dokumen; AI boleh membuat kaedah.

Kes 3 — Keruntuhan hasil. Satu kod sedang menanyakan pangkalan data dalam permohonan untuk setiap baris; Ia berjalan pada 5,000 talian, mengambil masa 9 jam pada 4 juta talian, dan berhenti. Apabila AI mencadangkan penyelesaian vektor (kelompok), masa dikurangkan kepada 40 saat. Pelajaran: kod yang berfungsi pada data kecil mungkin ranap pada data besar; Pertimbangkan kecekapan.

Empat templat yang boleh disalin

1) Meminta SQL dengan skema:

Peranan anda: Pembantu SQL (PostgreSQL). Jadual:- pesanan(id, id_pelanggan, cap masa tarikh, jumlah angka)- pelanggan(id, teks bandar)Tugas: Dapatkan jumlah pusing ganti dan bilangan pesanan setiap bandar pada tahun 2024, diisih mengikut pusing ganti dalam tertib menurun. Terangkan cara anda mengendalikan bandar NULL. Saya akan menguji pertanyaan dengan LIMIT terlebih dahulu; KEMASKINI / PADAM penjanaan.

2) proses panda dengan pusat pemeriksaan:

Saya mempunyai DataFrames df (pesanan) dan df_customers (pelanggan). Kira jumlah purata setiap bandar. PENTING: cetak bilangan baris sebelum dan selepas cantuman supaya saya dapat melihat jika terdapat pertindihan. Terangkan dalam lajur yang anda gabungkan dan sebab anda memilih dalam/kiri.

3) Penjelasan dan pengesahan kod:

Terangkan kod panda berikut baris demi baris: apakah yang dilakukan oleh setiap baris, apakah andaian yang dibuatnya, dalam kes apakah ia boleh memberikan hasil yang salah? Beritahu saya jika saya menggunakan fungsi fudge. Kod: [tampal]

4) Penyahpepijatan:

Kod ini memberikan ralat ini. Mesej ralat penuh: [tampal]. Kod: [tampal]. Terangkan punca ralat ROOT dan betulkan. Betulkan dengan benar-benar menyelesaikan masalah, bukan dengan menyenyapkan amaran. Juga nyatakan sama ada pembetulan mengubah output.

Gesaan lemah / Gesaan kuat

Gesaan yang lemah:

Tulis pertanyaan yang memberi saya jualan setiap bandar.

Nama jadual, lajur, jenis pangkalan data, tingkah laku NULL tidak jelas. AI adalah perkara biasa, ia mungkin akan menghasilkan pertanyaan yang tidak sesuai dengan jadual anda.

Gesaan kuat:

Peranan anda: Pembantu SQL (MySQL 8). Jadual: jualan(id, bandar varchar, amaun perpuluhan, tarikh tarikh). Tugasan: Dapatkan jumlah dan purata jumlah, bilangan pesanan setiap bandar untuk tahun 2024; Isih menurun mengikut jumlah amaun; Tunjukkan hanya bandar yang mempunyai lebih daripada 100 pesanan (HAVING).NULL tidak termasuk bandar. Terangkan pertanyaan; Saya akan menguji dengan LIMIT.

Di sini pangkalan data, skema, penapis, pengisihan dan peraturan NULL adalah jelas.

Kesilapan biasa

  • Menjalankan kod tanpa membacanya. Kod kerja bukan kod yang betul; Kod yang memanipulasi lajur yang salah juga berjalan tanpa ralat.
  • Tidak menyemak bilangan baris selepas cantum/JOIN. Kekunci yang salah menduplikasi baris secara senyap dan mengembang jumlah.
  • Tidak mengesahkan fungsi pemasangan. AI mungkin mencadangkan kaedah yang tidak wujud; Sahkan daripada dokumen bahawa anda tidak mengenalinya.
  • Tidak memikirkan kecekapan. gunakan/gelung bekerja pada ranap data kecil pada berjuta-juta baris; vektorkan.
  • Jalankan terus pada pangkalan data pengeluaran. Terutama menjalankan UPDATE/DELETE tanpa WHERE atau ujian adalah bencana.
Petua: Biasakan menambah "garisan pengesahan" pada setiap keping kod yang anda terima daripada AI: bilangan baris pra dan pasca pemprosesan, beberapa baris sampel dan jumlah kritikal dengan tangan. Tiga semakan ini menangkap kebanyakan ralat logik senyap.

Secara ringkasnya

AI ialah rakan kongsi berkuasa yang cepat menghasilkan kod SQL dan panda, tetapi ia bukan pihak berkuasa buta. Beri dia skema dan tujuan dengan jelas; Baca kod yang dihasilkannya seolah-olah anda menulisnya sendiri; Semak bilangan baris, fungsi pemasangan dan daya pengeluaran selepas cantum/SERTAI; Jangan jalankannya tanpa mengujinya pada pangkalan data pengeluaran. Apabila menyahpepijat, bertujuan untuk menyelesaikan masalah, bukan menyenyapkannya. Kod yang berfungsi bukan kod yang betul; Hanya anda yang boleh menjamin ketepatan.

Tugasan permohonan

Pilih soalan analisis (cth. "perolehan bulanan bagi setiap saluran") dan minta kod daripada AI dengan kedua-dua SQL dan panda. Baca kedua-dua kod baris demi baris, semak bilangan baris selepas cantum/SERTAI dan sahkan secara manual sekurang-kurangnya satu jumlah kritikal. Bandingkan sama ada kedua-dua kod menghasilkan hasil yang sama; Jika berbeza, ketahui sebabnya.

senarai semak

  • [ ] Adakah saya telah memberikan jadual/skema dan tujuan dengan jelas kepada AI?
  • [ ] Adakah saya membaca dan memahami kod yang dihasilkannya baris demi baris?
  • [ ] Adakah saya menyemak bilangan baris selepas bergabung/SERTAI?
  • [ ] Adakah saya telah mengesahkan fungsi yang saya tidak kenali daripada dokumentasi?
  • [ ] Adakah saya telah menguji kod pada data selamat/kecil dahulu dan bukan dalam persekitaran pengeluaran?