Kasu:
- Võimalus võtta vastu tugevat SQL-i ja pandade koodi ning lugeda ja kontrollida seda rida-realt, andes tehisintellektile selge skeemi ja eesmärgi
- Võime tabada vaikivaid vigu, nagu ridade arv, sobitusfunktsioon ja läbilaskevõime pärast ühendamist/liitumist
- Võimalus lahendada probleem silumisel ilma seda vaigistamata ja vältida koodi käivitamist ilma seda tootmiskeskkonnas testimata
Andmeteadusel on kaks peamist keelt: SQL (struktureeritud päringukeel – andmebaasist andmete pärimise keel) ja Python (täpsemalt pandade teek – standardne tööriist tabelite programmiliseks manipuleerimiseks). Selles üksuses õpime kasutama AI-d koodipartnerina: hankime sellest õigete küsimustega kindla SQL-i ja pandakoodi, lugeme ja valideerime selle koodi, silume seda ja ei kasuta seda kunagi pimesi. AI kirjutab korduvat koodi minutite asemel sekundites; Kuid teie ülesanne on tagada, et selle loodud kood töötleks õiget veergu õige loogikaga. Töötav kood ei tähenda õiget koodi.
Miks on AI-ga koodi tootmine võimas, kuid riskantne
AI pakub koodi genereerimisel kolme suurt eelist: kiirus (kirjutab 30-realise grupipõhise pöörde toimingu sekunditega), meeldetuletus (tuletab meelde pandafunktsiooni, mille olete unustanud) ja õpetamine (selgitab koodi rida rea haaval). Kuid sellega kaasneb kolm riski: vaikne loogikaviga (kood, mis summeerib vale veeru, jookseb vigadeta), sobitatud funktsioon (soovitab meetodit, mida pole olemas) ja saagilõks (kood, mis töötab väikeste andmete puhul, kuid jookseb kokku 10 miljoni rea korral). Nii et kuldreegel: lugege tehisintellekti koodi nii, nagu oleksite selle ise kirjutanud. Ära jookse seda rida, millest sa aru ei saa.
SQL: töötle andmeid lähtekohas
SQL võimaldab hankida andmeid andmebaasist ja neid seal töödelda; Saate kokku võtta miljoneid ridu ilma neid Pythoni tõmbamata. Põhilised ehitusplokid: SELECT (millised veerud), WHERE (mis read), GROUP BY (rühmitamine ja kokkuvõte), JOIN (ühenda tabelid), HAVING (grupijärgne filter). AI on väga abiks keeruliste JOIN-ide ja aknafunktsioonide kirjutamisel, kuid kontrollige kindlasti kahte asja: kas JOIN on õige võtme kaudu (vale võti dubleerib ridu) ja kas filtri loogika on õige (eriti NULL käitumine ja kuupäevavahemikud).
Ettevaatust. Ärge käivitage tehisintellekti loodud SQL-päringut otse tootmisandmebaasi vastu. Testige esmalt väikese koopiaga või LIMITiga. Ärge kunagi käivitage päringut UPDATE/DELETE ilma WHERE tingimuse kinnitamiseta; Vale WHERE võib kogu tabeli kustutada.
Python/pandad: paindlik analüüs
pandas on Pythonis tabelite (DataFrame) tavapärane manipuleerimine. Tehisintellekti kõige tõhusam kasutamine on anda sellele selge skeem ja eesmärk. Kõige sagedamini kasutatavad toimingud: filter, groupby, merge, pivot_table, apply. AI kirjutab need kiiresti; Kontrollida tahate loogikat: kas rühmitus on õiges veerus, kas ühendamine on ootamatult muutnud ridade arvu (kontrollige alati ridade arvu pärast ühendamist), kas aheloperatsioonid muudavad originaali.
tehing
SQL
pandad
kontrollpunkt
Filtreerimine
KUS
df[df.x > 5]
NULL/NaN käitumine
rühmitamine
GROUP BY
df.groupby()
Kas see on õige veerg?
liita
LIITU
df.merge()
Muuda ridade arvu
Kokkuvõte
AVG(), SUM()
.mean(), .sum()
Milline veerg koguti
Sorteeri
TELLI
.sort_values()
Suund (tõusev/langev)
deduplikatsioon
ERINEV
.drop_duplicates()
Millistes veergudes?
Silumine: AI-ga
Kui kood ebaõnnestub, on AI suurepärane silumispartner. Andke sellele täielik veateade ja vastav koodilõik. Kuid ole ettevaatlik kahe lõksu eest. Esiteks võib AI soovitada lahendust, mis tõrke "vaigistab" (nt hoiatuste peitmine) – see ei paranda viga, vaid peidab selle. Teiseks muudab AI mõnikord probleemi "lahendamise" ajal vaikselt teist käitumist. Reegel: mõistke parandust, lahendage mitte vaigistamine ja kontrollige, kas väljund on pärast parandamist ikka õige.
Tahad tõlgendatavat ja hooldatavat koodi
AI-st koodi ostes küsige koodi, mis on loetav ja hooldatav, mitte ainult koodi, mis "töötab". Kui teie või kolleeg selle koodi kuud hiljem avab, peaks see saama aru, mida see teeb. Selleks tehke harjumuseks, et tehisintellekt sisaldab kolme asja: tähenduslikud muutujate nimed (orders_temiz, mitte df2), lühikesed kommentaariread kriitiliste sammude juures (selgitades, miks, mitte mida tehakse) ja maagilise numbri asemel nimega konstant (ACCEPT_ESIGI = 0,85 asemel 0,85, mis on koodi maetud). Samuti vältige pikki üherealisi ahelaid (viie toimingu ühendamine ühel real); need muudavad silumise keeruliseks. Vaikimisi toodab AI sageli kokkuvõtlikku ja "nutikat" koodi; Kui öelda selgelt "kirjuta loetav, tõlgendatav, hooldatav", saate palju paremini hooldatava väljundi. See on ka reprodutseeritavuse alus (üksus 10): kood, mida ei mõisteta, on kood, mida ei saa ohutult uuesti käivitada.
kolm minikarpi
Juhtum 1 – JOIN-i replikatsioon. Analüütik ühendas tellimused tootetabeliga ja leidis, et kogukäive on 3 korda suurem. Põhjus: igal tootel oli tootetabelis mitu rida (erinevat värvi); JOIN dubleeris iga tellimuse. AI kood oli "töötav", kuid ridade arv oli hüpanud 240 tuhandelt 690 tuhandele. Õppetund: pärast ühendamist/JOIN-i kontrolli alati ridade arvu.
Juhtum 2 – paigaldusfunktsioon. Ta soovitas praktikandile AI df.groupby('x').summarize(); Pandades sellist meetodit pole (on olemas .agg()). Kood ei töötanud, praktikant oli 20 minutiks kadunud. Õppetund: kontrollige funktsiooni, mida te dokumendist ära ei tunne; AI võib välja mõelda meetodeid.
Juhtum 3 – saagikuse langus. Üks kood tegi päringu andmebaasist iga rea kohta; See töötas 5000 liinil, võttis 9 tundi 4 miljonil liinil ja peatus. Kui AI soovitas vektoriseeritud (partii) lahendust, vähendati aega 40 sekundini. Õppetund: kood, mis töötab väikeste andmetega, võib suurtel andmetel kokku kukkuda; Kaaluge tõhusust.
Neli kopeeritavat malli
1) SQL-i taotlemine skeemiga:
Teie roll: SQL-i assistent (PostgreSQL). Tabelid:- tellimused(id, kliendi_id, kuupäeva ajatempel, summa numbriline)- kliendid(id, linna tekst)Ülesanne: Hankige 2024. aasta kogukäive ja tellimuste arv linna kohta, sorteerituna käibe järgi kahanevas järjekorras. Selgitage, kuidas te NULL-linnadega tegelete. Testin päringut esmalt LIMIT-iga; VÄRSKENDAMINE/KUSUTA põlvkond.
2) pandaprotsess kontrollpunktiga:
Mul on DataFrames df (tellimused) ja df_customers (kliendid). Arvutage keskmine summa linna kohta. TÄHTIS: printige ridade arv enne ja pärast ühendamist, et saaksin näha, kas tegemist on dubleerimisega. Selgitage, millises veerus ühendasite ja miks valisite sisemise/vasakpoolse.
3) Koodi selgitus ja kontrollimine:
Selgitage rida rea haaval järgmist panda koodi: mida iga rida teeb, milliseid eeldusi see teeb, millistel juhtudel võib see anda valesid tulemusi? Andke mulle teada, kui kasutasin fudge funktsiooni. Kood: [kleebi]
4) Silumine:
See kood annab selle vea. Täielik veateade: [kleebi]. Kood: [kleebi]. Selgitage vea ROOT põhjust ja parandage see. Parandage see probleemi lahendamisega, mitte hoiatuse vaigistamisega. Märkige ka, kas parandus muutis väljundit.
Nõrk viip / Tugev viip
Nõrk viip:
Kirjutage päring, mis näitab müüki linna kohta.
Tabelite nimed, veerud, andmebaasi tüüp, NULL käitumine on ebaselged. Tehisintellekt on tavaline, tõenäoliselt loob see päringu, mis teie tabelile ei sobi.
Võimas viip:
Teie roll: SQL-i assistent (MySQL 8). Tabel: müük (id, linna varchar, summa kümnendkohani, kuupäeva kuupäev). Ülesanne: Hankige 2024. aasta kogu- ja keskmine summa, tellimuste arv linna kohta; Järjesta kogusumma järgi kahanevalt; Kuva ainult linnad, kus on rohkem kui 100 tellimust (HAVING).NULL välista linn. Selgitage päringut; Testin LIMITiga.
Siin on andmebaas, skeem, filter, sortimine ja NULL-reegel ilmselged.
Levinud vead
- Koodi käivitamine ilma seda lugemata. Töökood ei ole õige kood; Vale veeruga manipuleeriv kood töötab samuti vigadeta.
- Pärast ühendamist/JOIN-i ei kontrollita ridade arvu. Vale klahv dubleerib vaikselt ridu ja suurendab kogusummasid.
- Sobivusfunktsiooni ei kontrollita. AI võib soovitada meetodeid, mida pole olemas; Kinnitage dokumendist, et te ei tunne seda ära.
- Ei mõtle efektiivsusele. rakendus/silmus töötab väikeste andmekrahhidega miljonitel ridadel; vektoriseerida.
- Käitage otse tootmisandmebaasis. Eriti katastroofiline on UPDATE/DELETE käivitamine ilma WHERE-i või testimiseta.
Näpunäide: harjuge lisama igale tehisintellektilt saadud koodijupile "valideerimisrida": eel- ja järeltöötluse rida ridu, paar näidisrida ja käsitsi kriitiline kogusumma. Need kolm kontrolli tuvastavad enamiku vaikse loogika vigu.
Kokkuvõttes
AI on võimas partner, kes toodab kiiresti SQL-i ja pandade koodi, kuid see pole pime autoriteet. Andke talle selgelt skeem ja eesmärk; Lugege selle loodud koodi nii, nagu oleksite selle ise kirjutanud; Kontrollige pärast ühendamist/JOIN ridade arvu, sobitusfunktsioone ja läbilaskevõimet; Ärge käivitage seda tootmisandmebaasis testimata. Silumisel püüdke probleem lahendada, mitte seda vaigistada. Töötav kood ei ole õige kood; Ainult teie saate tagada täpsuse.
Rakenduse ülesanne
Valige analüüsiküsimus (nt "kuukäive kanali kohta") ja küsige AI-lt koodi nii SQL-i kui ka pandadega. Lugege mõlemat koodi rida rea haaval, kontrollige pärast ühendamist/JOIN ridade arvu ja kontrollige käsitsi vähemalt ühte kriitilist summat. Võrrelge, kas need kaks koodi annavad sama tulemuse; Kui see erineb, uurige, miks.
kontrollnimekiri
- [ ] Kas ma andsin tehisintellektile selgelt tabeli/skeemi ja eesmärgi?
- [ ] Kas ma lugesin selle loodud koodi rida rea haaval läbi ja sain sellest aru?
- [ ] Kas ma kontrollisin pärast ühendamist/JOIN ridade arvu?
- [ ] Kas olen kontrollinud funktsioone, mida ma dokumentatsioonist ära ei tunne?
- [ ] Kas olen testinud koodi esmalt turvalistel/väikeandmetel, mitte tootmiskeskkonnas?