Dobici:
- Sposobnost preuzimanja robusnog SQL i pandas koda i čitanja i verifikacije red po red dajući jasnu shemu i svrhu umjetnoj inteligenciji
- Sposobnost hvatanja tihih grešaka kao što su broj redova, funkcija uklapanja i protok nakon spajanja/JOIN
- Sposobnost rješavanja problema u debug-u bez utišavanja i izbjegavanja pokretanja koda bez testiranja u proizvodnom okruženju
Nauka o podacima ima dva osnovna jezika: SQL (Structured Query Language — jezik za upite podataka iz baza podataka) i Python (konkretno, biblioteku pandas — standardni alat za programsko manipulisanje tabelama). U ovoj jedinici ćemo naučiti da koristimo AI kao partnera za kod: dobijamo solidan SQL i pandas kod od njega sa pravim pitanjima, čitamo i potvrđujemo taj kod, otklanjamo greške i nikada ga ne pokrećemo naslijepo. AI piše kod koji se ponavlja u sekundama umjesto u minutama; Ali vaš je posao da osigurate da kod koji proizvodi obrađuje ispravan stupac s ispravnom logikom. Radni kod ne znači ispravan kod.
Zašto je proizvodnja koda pomoću AI moćna, ali rizična
AI pruža tri velike prednosti u generiranju koda: brzinu (piše operaciju od 30 redova grupa-za-pivot u sekundi), podsjetnik (podsjeća vas na funkciju pandas koju ste zaboravili) i podučavanje (objašnjava kod red po red). Ali nosi tri rizika: tihu logičku grešku (kod koji zbraja pogrešnu kolonu radi bez grešaka), ugrađenu funkciju (predlaže metodu koja ne postoji) i zamku prinosa (kod koji radi na malim podacima, ali se ruši na 10 miliona redova). Dakle, zlatno pravilo: čitajte AI kod kao da ste ga sami napisali. Ne izvodite liniju koju ne razumete.
SQL: procesni podaci na izvoru
SQL vam omogućava da preuzmete podatke iz baze podataka i tamo ih obradite; Možete sumirati milione redova bez uvlačenja u Python. Osnovni gradivni blokovi: SELECT (koje kolone), WHERE (koji redovi), GROUP BY (grupisati i sumirati), JOIN (spojiti tabele), HAVING (filter nakon grupe). AI je od velike pomoći u pisanju složenih JOIN-ova i funkcija prozora, ali svakako provjerite dvije stvari: da li je JOIN preko ispravnog ključa (pogrešan ključ duplira redove) i da li je logika filtera ispravna (posebno NULL ponašanje i rasponi datuma).
Oprez: Nemojte pokretati SQL upit generiran umjetnom inteligencijom direktno na proizvodnoj bazi podataka. Testirajte prvo s malom kopijom ili LIMIT. Nikada nemojte pokretati upit UPDATE/DELETE bez potvrđivanja uslova WHERE; Pogrešan WHERE može izbrisati cijelu tabelu.
Python/pande: fleksibilna analiza
pandas je standardni način za manipulisanje tabelama (DataFrame) u Pythonu. Najefikasnija upotreba AI je da joj se da jasna šema i svrha. Najčešće korištene operacije: filter, groupby, merge, pivot_table, apply. AI ih piše brzo; Ono što želite da proverite je logika: da li je grupisanje u ispravnoj koloni, da li je spajanje neočekivano promenilo broj redova (uvek proverite broj redova nakon spajanja), da li lančane operacije menjaju original.
transakcija
SQL
pande
kontrolni punkt
Filtriranje
GDJE
df[df.x > 5]
NULL/NaN ponašanje
grupisanje
GROUP BY
df.groupby()
Da li je to desna kolona?
spojiti
PRIDRUŽITE SE
df.merge()
Promjena broja redova
Rezime
AVG(), SUM()
.mean(), .sum()
Koja je kolona prikupljena
Sortiraj po
ORDER BY
.sort_values()
Smjer (uzlazno/silazno)
deduplikacija
DISTINCT
.drop_duplicates()
U kojim kolonama?
Otklanjanje grešaka: sa AI
Kada kod ne uspije, AI je odličan partner za otklanjanje grešaka. Dajte mu cijelu poruku o grešci i relevantni isječak koda. Ali čuvajte se dvije zamke. Prvo, AI može predložiti rješenje koje "utišava" grešku (npr. skrivanje upozorenja) - ovo ne popravlja grešku, već je skriva. Drugo, veštačka inteligencija ponekad tiho menja drugo ponašanje dok „rešava“ problem. Pravilo: razumite popravku, riješite da ne isključite zvuk i provjerite da li je izlaz i dalje ispravan nakon popravka.
Želite kod koji se može tumačiti i održavati
Kada kupujete kod od AI, tražite kod koji je čitljiv i održavan, a ne samo kod koji "radi". Kada vi ili kolega otvorite taj kod mjesecima kasnije, on bi trebao biti u stanju razumjeti šta radi. Da biste to učinili, stvorite naviku da AI uključuje tri stvari: smislena imena varijabli (orders_temiz, a ne df2), kratke redove komentara u kritičnim koracima (objašnjavajući zašto, a ne šta se radi) i imenovanu konstantu umjesto magičnog broja (ACCEPT_ESIGI = 0,85 umjesto 0,85 zakopano u kodu). Također izbjegavajte dugačke jednolinijske lance (povezivanje pet akcija u jednu liniju); ovo otežava otklanjanje grešaka. Podrazumevano, AI često proizvodi sažet i “pametan” kod; Ako jasno kažete "pisati čitljivo, interpretabilno, održavati", dobićete mnogo lakši izlaz za održavanje. Ovo je također osnova reproduktivnosti (jedinica 10): kod koji se ne razumije je kod koji se ne može bezbedno ponovo pokrenuti.
tri mini kofera
Slučaj 1 — JOIN replikacija. Analitičar je kombinovao narudžbe sa tabelom proizvoda i otkrio da je ukupan promet 3 puta veći. Uzrok: svaki proizvod je imao više redova (različite boje) u tabeli proizvoda; JOIN je duplirao svaku narudžbu. Kod AI je "radio", ali je broj linija skočio sa 240 hiljada na 690 hiljada. Lekcija: uvijek provjerite broj redova nakon spajanja/JOIN.
Slučaj 2 — Funkcija ugradnje. Predložio je AI df.groupby('x').summarize() pripravniku; Ne postoji takva metoda u pandama (postoji .agg()). Šifra nije radila, pripravnik je izgubljen 20 minuta. Lekcija: provjerite funkciju koju ne prepoznajete u dokumentu; AI može izmisliti metode.
Slučaj 3 — Pad prinosa. Jedan kod je ispitivao bazu podataka u aplikaciji za svaki red; Radio je na 5.000 linija, trajalo je 9 sati na 4 miliona linija i stalo. Kada je AI predložio vektorizirano (serijsko) rješenje, vrijeme je smanjeno na 40 sekundi. Lekcija: kod koji radi na malim podacima može se srušiti na velikim podacima; Razmotrite efikasnost.
Četiri šablona za kopiranje
1) Zahtjev za SQL sa shemom:
Vaša uloga: SQL asistent (PostgreSQL). Tabele:- porudžbine(id, customer_id, datum, vremenska oznaka, brojčana količina)- kupci(id, tekst grada) Zadatak: Dobiti ukupan promet i broj narudžbi po gradu u 2024., sortirano po prometu u opadajućem redoslijedu. Objasnite kako postupate sa NULL gradovima. Prvo ću testirati upit sa LIMIT; Generacija UPDATE/DELETE.
2) pande proces sa kontrolnom tačkom:
Imam DataFrames df (porudžbine) i df_customers (kupci). Izračunajte prosječan iznos po gradu. VAŽNO: odštampajte broj redova pre i posle spajanja kako bih mogao da vidim da li postoji dupliranje. Objasnite u kojoj ste koloni spojili i zašto ste odabrali unutrašnju/lijevu.
3) Objašnjenje koda i verifikacija:
Objasnite sljedeći pandas kod red po red: šta radi svaki red, koje pretpostavke daje, u kojim slučajevima može dati pogrešne rezultate? Javite mi jesam li koristio funkciju fudge. Šifra: [zalijepi]
4) Otklanjanje grešaka:
Ovaj kod daje ovu grešku. Cijela poruka o grešci: [paste]. Šifra: [zalijepi]. Objasnite KORENI uzrok greške i popravite ga. Popravite to stvarnim rješavanjem problema, a ne utišavanjem upozorenja. Također naznačite da li je popravka promijenila izlaz.
Slaba prompt / Jaka prompt
Slab upit:
Napišite upit koji mi daje prodaju po gradu.
Imena tabela, kolone, tip baze podataka, NULL ponašanje su nejasni. AI je uobičajen, vjerovatno će proizvesti upit koji ne odgovara vašoj tabeli.
Snažan upit:
Vaša uloga: SQL asistent (MySQL 8). Tabela: prodaja (id, varchar grada, decimalni iznos, datum datum). Zadatak: Dobiti ukupan i prosječan iznos, broj narudžbi po gradu za 2024. godinu; Razvrstaj prema smanjenju ukupnog iznosa; Prikaži samo gradove sa više od 100 narudžbi (IMA).NULL isključuje grad. Objasnite upit; Testirat ću sa LIMIT-om.
Ovdje su baza podataka, shema, filter, sortiranje i NULL pravilo očigledni.
Uobičajene greške
- Pokretanje koda bez čitanja. Radni kod nije ispravan kod; Kôd koji manipulira pogrešnom kolonom također radi bez grešaka.
- Ne provjerava se broj redova nakon spajanja/JOIN. Pogrešan ključ tiho duplicira redove i povećava ukupne vrijednosti.
- Ne provjerava se funkcija ugradnje. AI može predložiti metode koje ne postoje; Iz dokumenta potvrdite da ga ne prepoznajete.
- Ne razmišljam o efikasnosti. primjena/petlja radi na malim padovima podataka na milionima redova; vektorizovati.
- Pokrenite direktno na proizvodnoj bazi podataka. Naročito je katastrofalno pokretanje UPDATE/DELETE bez WHERE ili testiranja.
Savjet: Naviknite se da svakom komadu koda koji dobijete od AI dodajete "linu za provjeru valjanosti": broj linija prije i nakon obrade, nekoliko linija uzorka i kritični zbroj ručno. Ove tri provjere hvataju većinu tihih logičkih grešaka.
Ukratko
AI je moćan partner koji brzo proizvodi SQL i pandas kod, ali nije slijepi autoritet. Jasno mu dajte plan i svrhu; Pročitajte kod koji proizvodi kao da ste ga sami napisali; Provjerite broj redova, funkcije uklapanja i propusnost nakon spajanja/JOIN; Nemojte ga pokretati bez testiranja u proizvodnoj bazi podataka. Prilikom otklanjanja grešaka, nastojte riješiti problem, a ne ušutkati ga. Kod koji radi nije ispravan kod; Samo vi možete garantovati tačnost.
Zadatak aplikacije
Odaberite pitanje za analizu (npr. "mjesečni promet po kanalu") i zatražite kod od AI-a i sa SQL-om i sa pandama. Pročitajte oba koda red po red, provjerite broj redova nakon spajanja/JOIN i ručno provjerite barem jednu kritičnu sumu. Uporedite da li dva koda daju isti rezultat; Ako je drugačije, saznajte zašto.
kontrolna lista
- [ ] Da li sam jasno dao tabelu/šemu i svrhu AI?
- [ ] Da li sam pročitao i razumio kod koji je proizveo red po red?
- [ ] Da li sam provjerio broj redova nakon spajanja/JOIN?
- [ ] Jesam li provjerio funkcije koje ne prepoznajem iz dokumentacije?
- [ ] Jesam li prvo testirao kod na sigurnim/malim podacima, a ne u proizvodnom okruženju?