Vienība 9 / 11

Koda ģenerēšana: AI atbalstīta analīze ar Python (pandas) un SQL

Ieguvumi:

  • Spēja uzņemt robustu SQL un pandas kodu un lasīt un pārbaudīt to rindiņu pa rindiņai, piešķirot mākslīgajam intelektam skaidru shēmu un mērķi
  • Iespēja uztvert klusās kļūdas, piemēram, rindu skaitu, pielāgošanas funkciju un caurlaidspēju pēc sapludināšanas/JOIN
  • Spēja atrisināt atkļūdošanas problēmu, to neapklusinot, un izvairīties no koda palaišanas, nepārbaudot to ražošanas vidē

Datu zinātnei ir divas galvenās valodas: SQL (strukturētā vaicājuma valoda — valoda datu vaicāšanai no datu bāzēm) un Python (konkrēti, pandas bibliotēka — standarta rīks programmatiskām manipulācijām ar tabulām). Šajā nodaļā mēs iemācīsimies izmantot AI kā koda partneri: iegūt no tā stabilu SQL un pandas kodu ar pareizajiem jautājumiem, izlasīt un apstiprināt šo kodu, atkļūdot to un nekad to nedarbināt akli. AI raksta atkārtotu kodu sekundēs, nevis minūtēs; Bet jūsu uzdevums ir pārliecināties, ka tā radītais kods apstrādā pareizo kolonnu ar pareizu loģiku. Darba kods nenozīmē pareizu kodu.

Kāpēc koda izveide ar AI ir spēcīga, bet riskanta

AI nodrošina trīs lielas priekšrocības koda ģenerēšanā: ātrums (raksta 30 rindu grupu pa rakursu darbību sekundēs), atgādinājums (atgādina par aizmirstu pandas funkciju) un mācīšana (paskaidro kodu pēc rindiņas). Taču tas ietver trīs riskus: klusa loģikas kļūda (kods, kas summē nepareizo kolonnu, kas darbojas bez kļūdām), pielāgota funkcija (ieteica metodi, kas neeksistē) un ienesīguma slazds (kods, kas darbojas ar maziem datiem, bet avarē 10 miljonos rindu). Tātad zelta likums: lasiet AI kodu tā, it kā jūs pats to būtu rakstījis. Nepalaidiet līniju, kuru nesaprotat.

SQL: apstrādā datus avotā

SQL ļauj izgūt datus no datu bāzes un tur tos apstrādāt; Varat apkopot miljoniem rindu, neievelkot tās programmā Python. Pamata veidošanas bloki: SELECT (kuras kolonnas), WHERE (kuras rindas), GROUP BY (grupēt un apkopot), JOIN (pievienoties tabulām), HAVING (pēcgrupas filtrs). AI ir ļoti noderīga, rakstot sarežģītus JOIN un logu funkcijas, taču noteikti pārbaudiet divas lietas: vai JOIN, izmantojot pareizo atslēgu (nepareizā atslēga dublē rindas), un vai filtra loģika ir pareiza (īpaši NULL darbība un datumu diapazoni).

Uzmanību! Nepalaidiet mākslīgā intelekta ģenerētu SQL vaicājumu tieši ražošanas datu bāzē. Vispirms pārbaudiet ar nelielu kopiju vai LIMIT. Nekad nepalaidiet UPDATE/DELETE vaicājumu, ja nav apstiprināts nosacījums WHERE; Nepareiza WHERE var izdzēst visu tabulu.

Python/pandas: elastīga analīze

pandas ir standarta veids, kā Python manipulēt ar tabulām (DataFrame). Visefektīvākais mākslīgā intelekta lietojums ir piešķirt tai skaidru shēmu un mērķi. Visbiežāk izmantotās darbības: filtrs, groupby, merge, pivot_table, apply. AI raksta tos ātri; Tas, ko vēlaties pārbaudīt, ir loģika: vai grupēšana ir pareizajā kolonnā, vai sapludināšana ir negaidīti mainījusi rindu skaitu (vienmēr pārbaudiet rindu skaitu pēc sapludināšanas), vai ķēdes darbības maina oriģinālu.

darījums

SQL

pandas

kontrolpunkts

Filtrēšana

KUR

df[df.x > 5]

NULL/NaN uzvedība

grupēšana

GROUP BY

df.groupby()

Vai tā ir labā kolonna?

sapludināt

PIEVIENOJIES

df.merge()

Rindu skaita maiņa

Kopsavilkums

AVG(), SUM()

.mean(), .sum()

Kura kolonna tika savākta

Kārtot pēc

PASŪTĪT PĒC

.sort_values()

Virziens (augošs/dilstošs)

deduplikācija

ATŠĶIRĪGI

.drop_duplicates()

Kurās kolonnās?

Atkļūdošana: ar AI

Ja kods neizdodas, AI ir lielisks atkļūdošanas partneris. Norādiet pilnu kļūdas ziņojumu un atbilstošo koda fragmentu. Bet uzmanieties no diviem slazdiem. Pirmkārt, AI var ieteikt risinājumu, kas “apklusina” kļūdu (piemēram, paslēpj brīdinājumus) — tas kļūdu neizlabo, bet gan to slēpj. Otrkārt, AI dažreiz klusi maina citu uzvedību, “risinot” problēmu. Noteikums: izprotiet labojumu, atrisiniet, neizslēdziet skaņu, un pārbaudiet, vai pēc labošanas izvade joprojām ir pareiza.

Vēlaties interpretējamu un uzturējamu kodu

Pērkot kodu no AI, pieprasiet kodu, kas ir lasāms un apkopjams, nevis tikai kods, kas "darbojas". Kad jūs vai kolēģis atver šo kodu pēc mēnešiem, tam vajadzētu saprast, ko tas dara. Lai to izdarītu, izveidojiet ieradumu, ka mākslīgais intelekts ietver trīs lietas: jēgpilnus mainīgo nosaukumus (orders_temiz, nevis df2), īsas komentāru rindiņas kritiskos soļos (paskaidrojot, kāpēc, nevis to, kas tiek darīts), un nosauktu konstanti maģiska skaitļa vietā (ACCEPT_ESIGI = 0,85, nevis 0,85). Izvairieties arī no garām vienas rindas ķēdēm (savienojot piecas darbības vienā rindā); tie apgrūtina atkļūdošanu. Pēc noklusējuma AI bieži rada kodolīgu un “gudru” kodu; Ja jūs skaidri sakāt "rakstīt lasāmu, interpretējamu, uzturējamu", jūs iegūsit daudz kopjamāku rezultātu. Tas ir arī reproducējamības pamats (10. vienība): nesaprotams kods ir kods, kuru nevar droši palaist atkārtoti.

trīs mini futrāļi

1. gadījums — JOIN replikācija. Analītiķis pasūtījumus apvienoja ar preču tabulu un atklāja, ka kopējais apgrozījums ir 3 reizes lielāks. Iemesls: katram produktam produktu tabulā bija vairākas rindas (dažādas krāsas); JOIN dublēja katru pasūtījumu. AI kods "darbojās", bet rindu skaits bija uzlēcis no 240 tūkstošiem līdz 690 tūkstošiem. Nodarbība: vienmēr pārbaudiet rindu skaitu pēc sapludināšanas/JOIN.

2. gadījums — montāžas funkcija. Viņš ieteica AI df.groupby('x').summarize() praktikantam; Pandās šādas metodes nav (ir .agg()). Kods nedarbojās, praktikants pazuda uz 20 minūtēm. Nodarbība: pārbaudiet funkciju, kuru neatpazīstat dokumentā; AI var izdomāt metodes.

3. gadījums — ienesīguma samazināšanās. Viens kods veica vaicājumu datubāzei, kas attiecas uz katru rindu; Tas darbojās 5000 līniju, aizņēma 9 stundas 4 miljonos līniju un apstājās. Kad AI ierosināja vektorizētu (partijas) risinājumu, laiks tika samazināts līdz 40 sekundēm. Nodarbība: kods, kas darbojas uz maziem datiem, var avarēt lielos datos; Apsveriet efektivitāti.

Četras kopējamas veidnes

1) SQL pieprasīšana ar shēmu:

Jūsu loma: SQL palīgs (PostgreSQL). Tabulas:- pasūtījumi(id, klienta_id, datuma laika zīmogs, summas skaitlisks)- klienti(id, pilsētas teksts)Uzdevums: iegūt kopējo apgrozījumu un pasūtījumu skaitu katrā pilsētā 2024. gadā, sakārtotu pēc apgrozījuma dilstošā secībā. Paskaidrojiet, kā jūs rīkojaties ar NULL pilsētām. Vispirms es pārbaudīšu vaicājumu ar LIMIT; ATJAUNINĀT/DZĒST paaudze.

2) pandas process ar kontrolpunktu:

Man ir DataFrames df (pasūtījumi) un df_customers (klienti). Aprēķiniet vidējo summu katrā pilsētā. SVARĪGI: izdrukājiet rindu skaitu pirms un pēc sapludināšanas, lai es varētu redzēt, vai nav dublēšanās. Paskaidrojiet, kurā kolonnā apvienojāt un kāpēc izvēlējāties iekšējo/kreiso.

3) Koda skaidrojums un pārbaude:

Izskaidrojiet šādu pandas kodu rindiņu pa rindiņai: ko katra rindiņa dara, kādus pieņēmumus tā izdara, kādos gadījumos tā varētu dot nepareizus rezultātus? Pastāstiet man, ja izmantoju izdomāšanas funkciju. Kods: [ielīmēt]

4) Atkļūdošana:

Šis kods rada šo kļūdu. Pilns kļūdas ziņojums: [ielīmēt]. Kods: [ielīmēt]. Izskaidrojiet kļūdas ROOT cēloni un izlabojiet to. Novērsiet to, faktiski atrisinot problēmu, nevis apklusinot brīdinājumu. Norādiet arī, vai labojums mainīja izvadi.

Vāja uzvedne / spēcīga uzvedne

Vāja uzvedne:

Uzrakstiet vaicājumu, kas man parāda pārdošanas apjomu katrā pilsētā.

Tabulu nosaukumi, kolonnas, datu bāzes tips, NULL uzvedība ir neskaidri. AI ir izplatīts, tas, iespējams, radīs vaicājumu, kas neatbilst jūsu tabulai.

Spēcīga uzvedne:

Jūsu loma: SQL palīgs (MySQL 8). Tabula: pārdošana (id, pilsēta varchar, summa aiz komata, datuma datums). Uzdevums: Iegūt kopējo un vidējo summu, pasūtījumu skaitu pilsētā 2024. gadam; Kārtot samazinot pēc kopējās summas; Rādīt tikai pilsētas, kurās ir vairāk nekā 100 pasūtījumu (HAVING).NULL izslēgt pilsētu. Izskaidrojiet vaicājumu; Es pārbaudīšu ar LIMIT.

Šeit ir acīmredzama datubāze, shēma, filtrs, šķirošana un NULL noteikums.

Biežas kļūdas

  • Palaižot kodu, to neizlasot. Darba kods nav pareizs kods; Arī kods, kas manipulē ar nepareizo kolonnu, darbojas bez kļūdām.
  • Netiek pārbaudīts rindu skaits pēc sapludināšanas/JOIN. Nepareizā atslēga klusi dublē rindas un palielina kopsummas.
  • Netiek pārbaudīta montāžas funkcija. AI var ieteikt metodes, kas neeksistē; No dokumenta apstipriniet, ka to neatpazīstat.
  • Nedomājot par efektivitāti. lietot/cilpu strādāt ar nelielām datu avārijām miljoniem rindu; vektorizēt.
  • Palaist tieši ražošanas datu bāzē. Īpaši UPDATE/DELETE palaišana bez WHERE vai testēšanas ir postoša.
Padoms: izveidojiet ieradumu pievienot "validācijas rindiņu" katrai koda daļai, ko saņemat no AI: pirms- un pēcapstrādes rindu skaitu, dažas paraugrindas un kritisko kopsavilkumu ar roku. Šīs trīs pārbaudes uztver lielāko daļu klusās loģikas kļūdu.

Rezumējot

AI ir spēcīgs partneris, kas ātri izstrādā SQL un pandas kodu, taču tā nav akla autoritāte. Skaidri norādiet viņam shēmu un mērķi; Izlasiet tā izveidoto kodu tā, it kā jūs to būtu rakstījis pats; Pārbaudiet rindu skaitu, pielāgošanas funkcijas un caurlaidspēju pēc sapludināšanas/JOIN; Nepalaidiet to, nepārbaudot to ražošanas datu bāzē. Veicot atkļūdošanu, mēģiniet atrisināt problēmu, nevis apklusināt to. Kods, kas darbojas, nav pareizais kods; Tikai jūs varat garantēt precizitāti.

Lietojumprogrammas uzdevums

Izvēlieties analīzes jautājumu (piemēram, “ikmēneša apgrozījums katrā kanālā”) un pieprasiet kodu no AI, izmantojot gan SQL, gan pandas. Izlasiet abus kodus pēc rindiņas, pārbaudiet rindu skaitu pēc sapludināšanas/JOIN un manuāli pārbaudiet vismaz vienu kritisko summu. Salīdziniet, vai abi kodi rada vienādu rezultātu; Ja atšķiras, uzziniet, kāpēc.

kontrolsaraksts

  • [ ] Vai esmu skaidri norādījis tabulu/shēmu un mērķi AI?
  • [ ] Vai es izlasīju un sapratu kodu, ko tas rindu pa rindiņai izveidoja?
  • [ ] Vai es pārbaudīju rindu skaitu pēc sapludināšanas/JOIN?
  • [ ] Vai esmu pārbaudījis funkcijas, kuras neatpazīstu no dokumentācijas?
  • [ ] Vai vispirms esmu testējis kodu drošiem/maziem datiem, nevis ražošanas vidē?