Egység 9 / 11

Kódgenerálás: AI-asszisztált elemzés Python (pandák) és SQL segítségével

Nyereség:

  • Képes robusztus SQL és panda kódok fogadására és soronkénti olvasására és ellenőrzésére, világos sémát és célt adva a mesterséges intelligenciának
  • Képesség a néma hibák észlelésére, mint például a sorszám, az illesztési funkció és az átviteli sebesség egyesítés/JOIN után
  • Képes megoldani a problémát a hibakeresés során anélkül, hogy elnémítaná, és elkerülhető a kód futtatása anélkül, hogy tesztelné az éles környezetben

Az adattudománynak két elsődleges nyelve van: az SQL (Structured Query Language – az adatbázisokból származó adatok lekérdezésének nyelve) és a Python (konkrétan a pandas könyvtár – a táblák programozott kezelésének szabványos eszköze). Ebben az egységben megtanuljuk az AI kódpartnerként való használatát: szilárd SQL- és pandakódot kapunk belőle a megfelelő kérdésekkel, elolvassuk és ellenőrizzük a kódot, hibakeresést végezzünk, és soha ne futtassuk vakon. Az AI percek helyett másodpercek alatt írja ki az ismétlődő kódot; De az Ön feladata annak biztosítása, hogy az általa előállított kód a megfelelő oszlopot a megfelelő logikával dolgozza fel. A működő kód nem jelent helyes kódot.

Miért hatékony, de kockázatos kódot előállítani mesterséges intelligencia segítségével?

A mesterséges intelligencia három nagy előnyt biztosít a kódgenerálás során: sebesség (másodpercek alatt megír egy 30 soros groupby-pivot műveletet), emlékeztető (egy elfelejtett panda-funkcióra emlékeztet) és tanítás (sorról sorra magyarázza a kódot). De három kockázatot rejt magában: csendes logikai hiba (hibás oszlopot összegző kód hiba nélkül fut), illesztett függvény (nem létező módszert javasol) és hozamcsapda (kis adatokon működő kód, de 10 millió sornál összeomlik). Tehát az aranyszabály: Olvassa el az AI kódját, mintha maga írta volna. Ne szaladj azon a vonalon, amit nem értesz.

SQL: az adatok feldolgozása a forrásnál

Az SQL lehetővé teszi az adatok lekérését az adatbázisból, és ott feldolgozza azokat; Sorok millióit összegezheti anélkül, hogy behúzná őket a Pythonba. Alapvető építőelemek: SELECT (mely oszlopok), WHERE (mely sorok), GROUP BY (csoportosítás és összegzés), JOIN (táblázatok összekapcsolása), HAVING (csoport utáni szűrő). A mesterséges intelligencia nagyon hasznos az összetett JOIN-ok és ablakfüggvények írásakor, de mindenképpen ellenőrizzen két dolgot: a JOIN a megfelelő kulcson keresztül történik-e (a rossz kulcs a sorokat duplikálja), és a szűrőlogika helyes-e (különösen a NULL viselkedés és dátumtartományok).

Vigyázat: Ne futtasson mesterséges intelligencia által generált SQL-lekérdezést közvetlenül az éles adatbázison. Először tesztelje egy kis példányt vagy LIMIT-et. Soha ne futtasson UPDATE/DELETE lekérdezést a WHERE feltétel érvényesítése nélkül; A helytelen WHERE törölheti a teljes táblázatot.

Python/pandas: rugalmas elemzés

A pandas a táblák (DataFrame) kezelésének szabványos módja a Pythonban. Az AI leghatékonyabb felhasználása az, ha világos sémát és célt adunk neki. Leggyakrabban használt műveletek: filter, groupby, merge, pivot_table, apply. Az AI gyorsan megírja ezeket; Amit ellenőrizni szeretne, az a logika: a csoportosítás a megfelelő oszlopban van-e, az összevonás nem változtatta-e meg váratlanul a sorok számát (mindig ellenőrizze a sorok számát az összevonás után), a láncműveletek megváltoztatják-e az eredetit.

tranzakciót

SQL

pandák

ellenőrzőpont

Szűrés

HOL

df[df.x > 5]

NULL/NaN viselkedés

csoportosítás

GROUP BY

df.groupby()

Ez a jobb oszlop?

összevonni

CSATLAKOZZ

df.merge()

Sorszám módosítása

Összegzés

AVG(), SUM()

.mean(), .sum()

Melyik oszlopot gyűjtötték össze

Rendezés

MEGRENDELÉS

.sort_values()

Irány (emelkedő/csökkenő)

deduplikáció

KÜLÖNBÖZŐ

.drop_duplicates()

Melyik oszlopokban?

Hibakeresés: AI-val

Ha a kód sikertelen, az AI kiváló hibakereső partner. Add meg neki a teljes hibaüzenetet és a megfelelő kódrészletet. De vigyázz két csapdával. Először is, az AI olyan megoldást javasolhat, amely „elnémítja” a hibát (pl. riasztások elrejtése) – ez nem javítja a hibát, hanem elrejti. Másodszor, a mesterséges intelligencia néha csendben megváltoztat egy másik viselkedést a probléma „megoldása” során. Szabály: értse meg a javítást, oldja meg, ne némítsa el, és ellenőrizze, hogy a kimenet helyes-e a javítás után.

Értelmezhető és karbantartható kódot szeretne

Amikor mesterséges intelligenciától vásárol kódot, kérjen olyan kódot, amely olvasható és karbantartható, ne csak "működő" kódot. Amikor Ön vagy egy kollégája hónapokkal később megnyitja a kódot, képesnek kell lennie megérteni, hogy mit csinál. Ehhez tegye szokássá, hogy a mesterséges intelligencia három dolgot tartalmaz: értelmes változóneveket (orders_temiz, nem df2), rövid megjegyzéssorokat a kritikus lépéseknél (megmagyarázza, hogy miért, nem pedig azt, hogy mit csinál), és egy elnevezett konstanst varázsszám helyett (ACCEPT_ESIGI = 0,85 helyett 0,85 a kódban). Kerülje el a hosszú egysoros láncokat is (öt akció összekapcsolása egy sorban); ezek megnehezítik a hibakeresést. Alapértelmezés szerint az AI gyakran tömör és „okos” kódot állít elő; Ha egyértelműen azt mondod, hogy "írható olvasható, értelmezhető, karbantartható írás", akkor sokkal karbantarthatóbb kimenetet kapsz. Ez a reprodukálhatóság alapja is (10. egység): a meg nem értett kód az, amelyet nem lehet biztonságosan újra futtatni.

három mini tok

1. eset – JOIN replikáció. Egy elemző egyesítette a rendeléseket a terméktáblázattal, és a teljes forgalom háromszorosa volt. Ok: minden terméknek több sora (különböző szín) volt a terméktáblázatban; A JOIN duplikált minden egyes rendelést. Az AI kódja „működött”, de a sorok száma 240 ezerről 690 ezerre ugrott. Tanulság: Egyesítés/JOIN után mindig ellenőrizze a sorok számát.

2. eset – Illesztési funkció. Az AI df.groupby('x').summarize()-t javasolta egy gyakornoknak; A pandákban nincs ilyen módszer (van .agg()). A kód nem működött, a gyakornok 20 percre elveszett. Tanulság: ellenőrizze a függvényt, amelyet nem ismer fel a dokumentumból; Az AI módszereket tud kitalálni.

3. eset – Hozamcsökkenés. Egy kód lekérdezte az adatbázist minden sorhoz; 5000 vonalon futott, 4 millió vonalon 9 órát vett igénybe, és leállt. Amikor az AI vektorizált (szakaszos) megoldást javasolt, az idő 40 másodpercre csökkent. Tanulság: a kisméretű adatokon működő kód összeomolhat nagy adatokon; Fontolja meg a hatékonyságot.

Négy másolható sablon

1) SQL kérése sémával:

Az Ön szerepe: SQL-asszisztens (PostgreSQL). Táblázatok:- rendelések(azonosító, ügyfél_azonosító, dátum időbélyeg, összeg numerikus)- vevők(azonosító, város szövege)Feladat: A 2024-es városonkénti teljes forgalom és a megrendelések száma forgalom szerint rendezve, csökkenő sorrendben. Magyarázza el, hogyan kezeli a NULL városokat. Először tesztelem a lekérdezést LIMIT-tel; FRISSÍTÉS/TÖRLÉS generáció.

2) Panda folyamat ellenőrzési ponttal:

DataFrames df (rendelések) és df_customers (vevők) van. Számítsa ki az átlagos összeget városonként. FONTOS: nyomtassa ki az egyesítés előtti és utáni sorok számát, hogy lássam, van-e duplikáció. Magyarázza el, hogy melyik oszlopban egyesítette, és miért választotta a belső/bal oldalt.

3) A kód magyarázata és ellenőrzése:

Soronként magyarázza el a következő pandák kódját: mit csinálnak az egyes sorok, milyen feltételezéseket tesznek, milyen esetekben adhatnak rossz eredményt? Szólj, ha fudge funkciót használtam. Kód: [beillesztés]

4) Hibakeresés:

Ez a kód ezt a hibát adja. Teljes hibaüzenet: [beillesztés]. Kód: [beillesztés]. Magyarázza el a hiba ROOT okát, és javítsa ki. Javítsa ki a probléma tényleges megoldásával, ne pedig a riasztás elnémításával. Jelezze azt is, hogy a javítás megváltoztatta-e a kimenetet.

Gyenge felszólítás / Erős felszólítás

Gyenge felszólítás:

Írjon egy lekérdezést, amely megadja nekem az eladásokat városonként.

A táblanevek, az oszlopok, az adatbázis típusa, a NULL viselkedése nem egyértelmű. Az AI gyakori, valószínűleg olyan lekérdezést fog készíteni, amely nem illik a táblázathoz.

Erőteljes felszólítás:

Az Ön szerepe: SQL asszisztens (MySQL 8). Táblázat: eladások (azonosító, város varchar, tizedes szám, dátum dátum). Feladat: Szerezze meg a 2024-es év össz- és átlagösszegét, városonkénti megrendelések számát; Rendezés a teljes összeg szerint csökkenőben; Csak a 100-nál több megrendeléssel rendelkező városok megjelenítése (HAVING).NULL város kizárása. Magyarázza el a lekérdezést; LIMIT-el fogom tesztelni.

Itt nyilvánvaló az adatbázis, a séma, a szűrő, a rendezés és a NULL szabály.

Gyakori hibák

  • A kód futtatása olvasás nélkül. A működő kód nem megfelelő kód; A rossz oszlopot manipuláló kód is hiba nélkül fut.
  • Nem ellenőrzi a sorok számát az összevonás/JOIN után. A rossz billentyű hangtalanul megkettőzi a sorokat és növeli az összegeket.
  • Nem ellenőrzi az illesztési funkciót. Az AI olyan módszereket javasolhat, amelyek nem léteznek; Erősítse meg a dokumentumból, hogy nem ismeri fel.
  • Nem a hatékonyságra gondolva. alkalmazza/hurkolja a kis adatösszeomlásokat több millió soron; vektorizálni.
  • Futtassa közvetlenül a termelési adatbázison. Különösen az UPDATE/DELETE futtatása WHERE vagy tesztelés nélkül katasztrofális.
Tipp: Szokjon hozzá egy "érvényesítési sort" minden kódrészlethez, amelyet az AI-tól kap: egy sor elő- és utófeldolgozása, néhány mintasor és egy kritikus összeg kézzel. Ez a három ellenőrzés észleli a legtöbb csendes logikai hibát.

Összefoglalva

Az AI egy erős partner, amely gyorsan állít elő SQL- és pandakódokat, de nem vak tekintély. Világosan adja meg neki a tervet és a célt; Olvassa el az általa előállított kódot, mintha maga írta volna; Ellenőrizze a sorok számát, az illesztési funkciókat és az átviteli sebességet egyesítés/JOIN után; Ne futtassa anélkül, hogy tesztelné az éles adatbázisban. Hibakereséskor a probléma megoldására törekedjen, ne elhallgattatására. A működő kód nem a megfelelő kód; Csak Ön tudja garantálni a pontosságot.

Pályázati feladat

Válasszon egy elemző kérdést (pl. „havi forgalom csatornánként”), és kérjen kódot az AI-tól az SQL-lel és a pandákkal egyaránt. Olvassa el mindkét kódot soronként, ellenőrizze a sorok számát az egyesítés/JOIN után, és manuálisan ellenőrizze legalább egy kritikus összeget. Hasonlítsa össze, hogy a két kód ugyanazt az eredményt adja-e; Ha más, derítse ki, miért.

ellenőrző lista

  • [ ] Világosan megadtam a táblázatot/sémát és a célt az MI-nek?
  • [ ] Elolvastam és megértettem az általa készített kódot soronként?
  • [ ] Ellenőriztem a sorok számát egyesítés/csatlakozás után?
  • [ ] Ellenőriztem azokat a funkciókat, amelyeket nem ismerek fel a dokumentációból?
  • [ ] A kódot először biztonságos/kis adatokon teszteltem, és nem éles környezetben?