Njësia 9 / 11

Gjenerimi i kodit: Analiza e asistuar nga AI me Python (panda) dhe SQL

Fitimet:

  • Aftësia për të marrë kod të fuqishëm SQL dhe panda dhe për ta lexuar dhe verifikuar atë rresht pas rreshti duke i dhënë skemë dhe qëllim të qartë inteligjencës artificiale
  • Aftësia për të kapur gabime të heshtura të tilla si numërimi i rreshtave, funksioni i përshtatjes dhe xhiroja pas bashkimit/JOIN
  • Aftësia për të zgjidhur problemin në korrigjimin e gabimeve pa e heshtur atë dhe për të shmangur ekzekutimin e kodit pa e testuar atë në mjedisin e prodhimit

Shkenca e të dhënave ka dy gjuhë kryesore: SQL (Structured Query Language - gjuha për kërkimin e të dhënave nga bazat e të dhënave) dhe Python (veçanërisht, biblioteka e pandave - mjeti standard për manipulimin e tabelave në mënyrë programore). Në këtë njësi, ne do të mësojmë të përdorim AI si një partner kodi: duke marrë kod të fortë SQL dhe panda prej tij me pyetjet e duhura, duke lexuar dhe vërtetuar atë kod, duke e korrigjuar atë dhe kurrë mos e ekzekutoni verbërisht. AI shkruan kodin e përsëritur në sekonda në vend të minutave; Por është detyra juaj të siguroheni që kodi që prodhon përpunon kolonën e duhur me logjikën e duhur. Kodi i punës nuk do të thotë kod i saktë.

Pse prodhimi i kodit me AI është i fuqishëm, por i rrezikshëm

Inteligjenca artificiale ofron tre përfitime të mëdha në gjenerimin e kodit: shpejtësinë (shkruan një operacion grupi me pivot me 30 rreshta në sekonda), kujtesë (ju kujton një funksion panda që keni harruar) dhe mësimdhënie (shpjegon kodin rresht pas rreshti). Por mbart tre rreziqe: gabim logjik të heshtur (kodi që përmbledh kolonën e gabuar funksionon pa gabime), funksioni i përshtatur (sugjeron një metodë që nuk ekziston) dhe kurth i rendimentit (kodi që funksionon në të dhëna të vogla, por rrëzohet në 10 milionë rreshta). Pra, rregulli i artë: Lexoni kodin e AI sikur ta keni shkruar vetë. Mos kaloni linjën që nuk e kuptoni.

SQL: përpunoni të dhënat në burim

SQL ju lejon të merrni të dhëna nga baza e të dhënave dhe t'i përpunoni ato atje; Ju mund të përmblidhni miliona rreshta pa i tërhequr ato në Python. Blloqet bazë të ndërtimit: SELECT (cilat kolona), WHERE (cilat rreshta), GROUP BY (gruponi dhe përmblidhni), JOIN (bashkoni tabelat), HAVING (filtri pas grupit). Inteligjenca artificiale ndihmon shumë në shkrimin e JOIN-ve komplekse dhe funksioneve të dritareve, por sigurohuni që të kontrolloni dy gjëra: a është JOIN nëpërmjet çelësit të saktë (tasti i gabuar kopjon rreshtat) dhe a është e saktë logjika e filtrit (veçanërisht sjelljet NULL dhe intervalet e datave).

Kujdes: Mos ekzekutoni një pyetje SQL të krijuar nga AI drejtpërdrejt në bazën e të dhënave të prodhimit. Së pari provoni me një kopje të vogël ose LIMIT. Asnjëherë mos ekzekutoni një pyetje UPDATE/DELETE pa vërtetuar kushtin WHERE; Një WHERE e gabuar mund të fshijë të gjithë tabelën.

Python/panda: analizë fleksibël

pandas është mënyra standarde për të manipuluar tabelat (DataFrame) në Python. Përdorimi më efikas i AI është t'i japë asaj një skemë dhe qëllim të qartë. Operacionet më të përdorura: filter, groupby, merge, pivot_table, app. AI i shkruan këto shpejt; Ajo që dëshironi të kontrolloni është logjika: a është grupimi në kolonën e duhur, a ka ndryshuar bashkimi numrin e rreshtave në mënyrë të papritur (kontrolloni gjithmonë numrin e rreshtave pas bashkimit), a janë operacionet e zinxhirit që ndryshojnë origjinalin.

transaksion

SQL

pandat

pikë kontrolli

Filtrimi

KU

df[df.x > 5]

Sjellja NULL/NaN

grupimi

GRUP NGA

df.groupby()

A është kolona e duhur?

bashkohen

BASHKOHU

df.merge()

Ndryshimi i numrit të rreshtave

Përmbledhje

AVG(), SUM()

.mean(), .sum()

Cila kolonë u mblodh

Rendit sipas

POROSIT NGA

.sort_values()

Drejtimi (ngjitje/zbritje)

dedublikim

TË DAKTUAR

.drop_duplicates()

Në cilat kolona?

Korrigjimi: me AI

Kur kodi dështon, AI është një partner i shkëlqyer korrigjimi. Jepni mesazhin e plotë të gabimit dhe fragmentin përkatës të kodit. Por kujdes nga dy kurthe. Së pari, AI mund të sugjerojë një zgjidhje që "e hesht" gabimin (p.sh. fshehja e sinjalizimeve) - kjo nuk e rregullon gabimin, por e fsheh atë. Së dyti, AI ndonjëherë ndryshon në heshtje një sjellje tjetër ndërsa "zgjidh" një problem. Rregulli: kuptoni rregullimin, zgjidhni jo me zë dhe verifikoni që dalja është ende e saktë pas rregullimit.

Dëshironi kod të interpretueshëm dhe të mirëmbajtur

Kur blini kod nga AI, kërkoni kod që është i lexueshëm dhe i mirëmbajtur, jo vetëm kod që "funksionon". Kur ju ose një koleg e hap atë kod muaj më vonë, ai duhet të jetë në gjendje të kuptojë se çfarë bën. Për ta bërë këtë, bëjeni zakon që AI të përfshijë tre gjëra: emra kuptimplotë të ndryshoreve (orders_temiz, jo df2), rreshta të shkurtër komentesh në hapat kritikë (duke shpjeguar pse, jo çfarë po bëhet) dhe një konstante të emërtuar në vend të një numri magjik (ACCEPT_ESIGI = 0,85 në vend të 0,85 të varrosur në kod). Gjithashtu shmangni zinxhirët e gjatë me një linjë (lidhja e pesë veprimeve në një rresht); këto e bëjnë të vështirë korrigjimin. Si parazgjedhje, AI shpesh prodhon kod konciz dhe "të zgjuar"; Nëse thoni qartë "shkruani i lexueshëm, i interpretueshëm, i mirëmbajtur", do të merrni një rezultat shumë më të mirëmbajtshëm. Kjo është gjithashtu baza e riprodhueshmërisë (Njësia 10): kodi që nuk kuptohet është kod që nuk mund të ri-ekzekutohet në mënyrë të sigurt.

tre mini kuti

Rasti 1 - BASHKOHU replikimi. Një analist kombinoi porositë me tabelën e produkteve dhe zbuloi se xhiroja totale ishte 3 herë më e lartë. Shkaku: çdo produkt kishte shumë rreshta (ngjyra të ndryshme) në tabelën e produktit; JOIN dyfishuar çdo porosi. Kodi i AI ishte "funksionues", por numri i linjave ishte rritur nga 240 mijë në 690 mijë. Mësimi: kontrolloni gjithmonë numrin e rreshtave pas bashkimit/JOIN.

Rasti 2 - Funksioni i montimit. Ai i sugjeroi AI df.groupby('x').summarize() një praktikanti; Nuk ekziston një metodë e tillë në panda (ekziston .agg()). Kodi nuk funksionoi, praktikanti humbi për 20 minuta. Mësimi: verifikoni një funksion që nuk e njihni nga dokumenti; AI mund të krijojë metoda.

Rasti 3 - Kolapsi i rendimentit. Një kod po kërkonte bazën e të dhënave në aplikim për çdo rresht; U zhvillua në 5000 linja, zgjati 9 orë në 4 milionë linja dhe u ndal. Kur AI sugjeroi një zgjidhje të vektorizuar (batch), koha u reduktua në 40 sekonda. Mësimi: kodi që funksionon në të dhëna të vogla mund të rrëzohet në të dhëna të mëdha; Merrni parasysh efikasitetin.

Katër shabllone të kopjueshëm

1) Kërkimi i SQL me skemë:

Roli juaj: Asistent SQL (PostgreSQL). Tabelat: - porositë (id, klienti_id, data vula kohore, shuma numerike) - klientët (id, teksti i qytetit) Detyrë: Merrni xhiron totale dhe numrin e porosive për qytet në 2024, të renditura sipas qarkullimit në rend zbritës. Shpjegoni se si i trajtoni qytetet NULL. Së pari do të testoj pyetjen me LIMIT; Përditëso/FSHI gjenerimin.

2) procesi i pandave me postbllokun:

Unë kam DataFrames df (porositë) dhe df_customers (klientë). Llogaritni shumën mesatare për qytet. E RËNDËSISHME: printoni numrin e rreshtave para dhe pas bashkimit në mënyrë që të shoh nëse ka dyfishim. Shpjegoni se në cilën kolonë keni bashkuar dhe pse keni zgjedhur të brendshmen/të majtën.

3) Shpjegimi dhe verifikimi i kodit:

Shpjegoni rresht pas rreshti kodin e mëposhtëm të pandave: çfarë bën çdo rresht, çfarë supozimesh bën, në cilat raste mund të japë rezultate të gabuara? Më njoftoni nëse kam përdorur një funksion fudge. Kodi: [ngjit]

4) Korrigjimi:

Ky kod jep këtë gabim. Mesazhi i plotë i gabimit: [ngjit]. Kodi: [paste]. Shpjegoni shkakun ROOT të gabimit dhe rregulloni atë. Rregullojeni atë duke e zgjidhur në fakt problemin, jo duke e heshtur alarmin. Tregoni gjithashtu nëse rregullimi ka ndryshuar daljen.

Prompt i dobët / Prompt i fortë

Njoftim i dobët:

Shkruaj një pyetje që më jep shitje për çdo qytet.

Emrat e tabelave, kolonat, lloji i bazës së të dhënave, sjellja NULL janë të paqarta. Inteligjenca artificiale është e zakonshme, ndoshta do të prodhojë një pyetje që nuk i përshtatet tabelës suaj.

Njoftim i fuqishëm:

Roli juaj: Asistent SQL (MySQL 8). Tabela: shitjet (id, qyteti varchar, shuma dhjetore, data data). Detyra: Merrni shumën totale dhe mesatare, numrin e porosive për qytet për vitin 2024; Rendit duke u ulur sipas shumës totale; Shfaq vetëm qytetet me më shumë se 100 porosi (KANË). NULL përjashton qytetin. Shpjegoni pyetjen; Do të testoj me LIMIT.

Këtu baza e të dhënave, skema, filtri, renditja dhe rregulli NULL janë të dukshme.

Gabimet e zakonshme

  • Ekzekutimi i kodit pa e lexuar atë. Kodi i punës nuk është kod i saktë; Kodi që manipulon kolonën e gabuar gjithashtu funksionon pa gabime.
  • Nuk kontrollohet numri i rreshtave pas bashkimit/JOIN. Tasti i gabuar kopjon në heshtje rreshtat dhe fryn totalet.
  • Nuk verifikohet funksioni i përshtatjes. AI mund të sugjerojë metoda që nuk ekzistojnë; Konfirmoni nga dokumenti që nuk e njihni atë.
  • Duke mos menduar për efikasitetin. aplikoni/përpunoni duke punuar në dështime të vogla të të dhënave në miliona rreshta; vektorizoj.
  • Ekzekutoni drejtpërdrejt në bazën e të dhënave të prodhimit. Veçanërisht ekzekutimi i UPDATE/DELETE pa WHERE ose testim është katastrofik.
Këshillë: Bëjeni zakon të shtoni një "vijë verifikimi" në çdo pjesë të kodit që merrni nga AI: një numër rreshtash para dhe pas përpunimit, disa rreshta mostrash dhe një total kritik me dorë. Këto tre kontrolle kapin shumicën e gabimeve logjike të heshtura.

Në përmbledhje

AI është një partner i fuqishëm që prodhon shpejt kodin SQL dhe panda, por nuk është një autoritet i verbër. Jepini atij skemën dhe qëllimin qartë; Lexoni kodin që prodhon sikur ta keni shkruar vetë; Kontrolloni numrin e rreshtave, funksionet e përshtatjes dhe xhiros pas bashkimit/JOIN; Mos e ekzekutoni pa e testuar në bazën e të dhënave të prodhimit. Kur korrigjoni, synoni ta zgjidhni problemin, jo ta heshtni atë. Kodi që funksionon nuk është kodi i saktë; Vetëm ju mund të garantoni saktësinë.

Detyra e aplikimit

Zgjidhni një pyetje analize (p.sh. "xhiro mujore për kanal") dhe kërkoni kodin nga AI me SQL dhe panda. Lexoni të dy kodet rresht pas rreshti, kontrolloni numrin e rreshtave pas bashkimit/JOIN dhe verifikoni manualisht të paktën një shumë kritike. Krahasoni nëse dy kodet prodhojnë të njëjtin rezultat; Nëse është ndryshe, zbuloni pse.

listë kontrolli

  • [ ] A ia kam dhënë qartë tabelën/skemën dhe qëllimin UA?
  • [ ] A e lexova dhe e kuptova kodin që prodhoi rresht pas rreshti?
  • [ ] A e kontrollova numrin e rreshtave pas bashkimit/JOIN?
  • [ ] A i kam verifikuar funksionet që nuk i njoh nga dokumentacioni?
  • [ ] A e kam testuar kodin në të dhëna të sigurta/të vogla fillimisht dhe jo në mjedisin e prodhimit?