Dobici:
- Sposobnost preuzimanja robusnog SQL i pandas koda te čitanja i provjere redak po redak dajući jasnu shemu i svrhu umjetnoj inteligenciji
- Sposobnost hvatanja tihih pogrešaka kao što su broj redaka, funkcija uklapanja i propusnost nakon spajanja/JOIN-a
- Sposobnost rješavanja problema u ispravljanju pogrešaka bez utišavanja i izbjegavanje pokretanja koda bez testiranja u produkcijskom okruženju
Znanost o podacima ima dva primarna jezika: SQL (Structured Query Language — jezik za upite podataka iz baza podataka) i Python (konkretno, biblioteka pandas — standardni alat za programsko rukovanje tablicama). U ovoj jedinici naučit ćemo koristiti umjetnu inteligenciju kao partnera koda: dobivanje solidnog SQL i pandas koda iz njega s pravim pitanjima, čitanje i provjera valjanosti tog koda, otklanjanje pogrešaka u njemu, a nikada ga ne izvoditi naslijepo. AI piše kod koji se ponavlja u sekundama umjesto u minutama; Ali vaš je posao osigurati da kod koji proizvodi obrađuje ispravan stupac s ispravnom logikom. Radni kod ne znači ispravan kod.
Zašto je stvaranje koda pomoću umjetne inteligencije moćno, ali riskantno
Umjetna inteligencija pruža tri velike prednosti u generiranju koda: brzinu (piše operaciju grupa po zaokret od 30 redaka u sekundi), podsjetnik (podsjeća vas na funkciju pande koju ste zaboravili) i podučavanje (objašnjava kod redak po redak). Ali nosi tri rizika: tihu logičku pogrešku (kod koji zbraja pogrešan stupac radi bez pogrešaka), prilagođenu funkciju (predlaže metodu koja ne postoji) i zamku prinosa (kod koji radi na malim podacima, ali se ruši na 10 milijuna redaka). Dakle, zlatno pravilo: čitajte kod umjetne inteligencije kao da ste ga sami napisali. Ne ponavljaj ono što ne razumiješ.
SQL: obraditi podatke na izvoru
SQL vam omogućuje dohvaćanje podataka iz baze podataka i njihovu obradu tamo; Možete sažeti milijune redaka bez da ih povučete u Python. Osnovni sastavni elementi: SELECT (koji stupci), WHERE (koji redovi), GROUP BY (grupiranje i sažimanje), JOIN (spajanje tablica), HAVING (filter nakon grupiranja). AI je od velike pomoći u pisanju složenih JOIN-ova i funkcija prozora, ali svakako provjerite dvije stvari: je li JOIN putem ispravnog ključa (pogrešni ključ duplicira retke) i je li logika filtra ispravna (osobito ponašanje NULL i rasponi datuma).
Oprez: Nemojte pokretati SQL upit generiran umjetnom inteligencijom izravno prema proizvodnoj bazi podataka. Testirajte s malom kopijom ili prvo OGRANIČITE. Nikada nemojte pokretati UPDATE/DELETE upit bez provjere uvjeta WHERE; Pogrešno WHERE može izbrisati cijelu tablicu.
Python/pande: fleksibilna analiza
pandas je standardni način za manipuliranje tablicama (DataFrame) u Pythonu. Najučinkovitija upotreba umjetne inteligencije je dati joj jasnu shemu i svrhu. Najčešće korištene operacije: filter, groupby, merge, pivot_table, apply. AI ih brzo piše; Ono što želite provjeriti je logika: je li grupiranje u ispravnom stupcu, je li spajanje neočekivano promijenilo broj redaka (uvijek provjerite broj redaka nakon spajanja), mijenjaju li lančane operacije original.
transakcija
SQL
pande
kontrolna točka
Filtriranje
GDJE
df[df.x > 5]
NULL/NaN ponašanje
grupiranje
GRUPIRAJ PO
df.groupby()
Je li to desni stupac?
spojiti
PRIDRUŽITE SE
df.merge()
Promjena broja redaka
Sažetak
AVG(), SUM()
.mean(), .sum()
Koji je stupac prikupljen
Poredaj po
NARUČI PO
.sort_values()
Smjer (uzlazno/silazno)
deduplikacija
DISTINKTAN
.drop_duplicates()
U kojim stupcima?
Otklanjanje pogrešaka: s AI
Kada kod ne uspije, AI je izvrstan partner za otklanjanje pogrešaka. Dajte mu potpunu poruku o pogrešci i relevantni isječak koda. Ali čuvajte se dvije zamke. Prvo, AI može predložiti rješenje koje "utišava" pogrešku (npr. skrivanje upozorenja) - to ne ispravlja pogrešku, već je skriva. Drugo, AI ponekad tiho mijenja drugo ponašanje dok "rješava" problem. Pravilo: razumjeti popravak, riješiti ne utišati i potvrditi da je izlaz još uvijek ispravan nakon popravka.
Želite kod koji se može interpretirati i održavati
Kada kupujete kod od umjetne inteligencije, tražite kod koji je čitljiv i održavan, a ne samo kod koji "radi". Kada vi ili vaš kolega otvorite taj kod nekoliko mjeseci kasnije, trebao bi moći razumjeti što radi. Da biste to učinili, stvorite naviku da AI uključuje tri stvari: smislena imena varijabli (orders_temiz, ne df2), kratke retke komentara u kritičnim koracima (objašnjavajući zašto, a ne što se radi) i imenovanu konstantu umjesto magičnog broja (ACCEPT_ESIGI = 0,85 umjesto 0,85 zakopanog u kodu). Također izbjegavajte duge jednolinijske lance (povezivanje pet radnji u jednom redu); ovo otežava otklanjanje pogrešaka. Prema zadanim postavkama, AI često proizvodi koncizan i "pametan" kod; Ako jasno kažete "pisati čitljivo, interpretabilno, održivo", dobit ćete mnogo održiviji izlaz. Ovo je također osnova ponovljivosti (jedinica 10): kod koji se ne razumije je kod koji se ne može ponovno sigurno pokrenuti.
tri mini kućišta
Slučaj 1 — JOIN replikacija. Analitičar je kombinirao narudžbe s tablicom proizvoda i otkrio da je ukupni promet 3 puta veći. Uzrok: svaki proizvod je imao više redaka (različitih boja) u tablici proizvoda; JOIN je duplicirao svaku narudžbu. AI kod je "radio", ali je broj redaka skočio sa 240 tisuća na 690 tisuća. Lekcija: uvijek provjerite broj redaka nakon spajanja/JOIN-a.
Slučaj 2 — Funkcija prilagodbe. Predložio je AI df.groupby('x').summarize() pripravniku; Ne postoji takva metoda u pandama (postoji .agg()). Šifra nije radila, pripravnik je izgubljen na 20 minuta. Lekcija: provjerite funkciju koju ne prepoznajete iz dokumenta; AI može izmisliti metode.
Slučaj 3 — Pad prinosa. Jedan kod je postavljao upit bazi podataka u aplikaciji za svaki redak; Radio je na 5000 linija, trebalo mu je 9 sati na 4 milijuna linija i prestao je. Kada je AI predložio vektorizirano (šaržno) rješenje, vrijeme je smanjeno na 40 sekundi. Lekcija: kod koji radi na malim podacima može se srušiti na velikim podacima; Razmotrite učinkovitost.
Četiri predloška za kopiranje
1) Zahtjev za SQL sa shemom:
Vaša uloga: SQL pomoćnik (PostgreSQL). Tablice:- narudžbe(id, customer_id, vremenska oznaka datuma, numerički iznos)- kupci(id, tekst grada) Zadatak: Dohvatite ukupan promet i broj narudžbi po gradu u 2024., poredan prema prometu silaznim redoslijedom. Objasnite kako upravljate NULL gradovima. Prvo ću testirati upit s LIMIT; UPDATE/DELETE generacija.
2) panda proces s kontrolnom točkom:
Imam DataFrames df (narudžbe) i df_customers (kupci). Izračunajte prosječni iznos po gradu. VAŽNO: ispišite broj redaka prije i poslije spajanja kako bih mogao vidjeti ima li dupliranja. Objasnite u kojem ste stupcu spojili i zašto ste odabrali unutarnji/lijevi.
3) Objašnjenje koda i provjera:
Objasnite sljedeći pandas kod redak po redak: što svaki redak radi, koje pretpostavke donosi, u kojim slučajevima može dati pogrešne rezultate? Obavijestite me jesam li koristio fudge funkciju. Šifra: [zalijepi]
4) Otklanjanje pogrešaka:
Ovaj kod daje ovu grešku. Potpuna poruka o pogrešci: [zalijepi]. Šifra: [zalijepi]. Objasnite glavni uzrok greške i popravite je. Riješite to stvarnim rješavanjem problema, a ne utišavanjem upozorenja. Također označite je li popravak promijenio izlaz.
Slab upit / Jak upit
Slab upit:
Napišite upit koji će mi dati prodaju po gradu.
Nazivi tablica, stupci, vrsta baze podataka, ponašanje NULL nisu jasni. AI je uobičajen, vjerojatno će proizvesti upit koji ne odgovara vašoj tablici.
Snažan upit:
Vaša uloga: SQL pomoćnik (MySQL 8). Tablica: prodaja (id, varchar grada, decimalni iznos, datum datum). Zadatak: Dobiti ukupni i prosječni iznos, broj narudžbi po gradu za 2024. godinu; Poredaj padajući prema ukupnom iznosu; Prikaži samo gradove s više od 100 narudžbi (HAVING).NULL isključi grad. Objasnite upit; Testirat ću s LIMIT.
Ovdje su baza podataka, shema, filter, sortiranje i pravilo NULL očigledni.
Uobičajene greške
- Pokretanje koda bez čitanja. Radni kod nije točan kod; Kôd koji manipulira pogrešnim stupcem također radi bez grešaka.
- Ne provjerava se broj redaka nakon spajanja/JOIN-a. Pogrešna tipka tiho duplicira retke i napuhava ukupne iznose.
- Ne provjerava funkciju ugradnje. AI može predložiti metode koje ne postoje; Iz dokumenta potvrdite da ga ne prepoznajete.
- Ne razmišljajući o učinkovitosti. primjena/petlja koja radi na malim padovima podataka na milijunima redaka; vektorizirati.
- Izvršite izravno na proizvodnoj bazi podataka. Posebno pokretanje UPDATE/DELETE bez WHERE ili testiranja je katastrofalno.
Savjet: steknite naviku dodavanja "linije za provjeru valjanosti" svakom dijelu koda koji primite od umjetne inteligencije: broj redaka prije i nakon obrade, nekoliko redova uzorka i kritični ukupni iznos ručno. Ove tri provjere otkrivaju većinu tihih logičkih pogrešaka.
Ukratko
AI je moćan partner koji brzo proizvodi SQL i pandas kod, ali nije slijepi autoritet. Jasno mu dajte shemu i svrhu; Čitajte kod koji proizvodi kao da ste ga sami napisali; Provjerite broj redaka, funkcije uklapanja i propusnost nakon spajanja/JOIN-a; Nemojte ga pokretati bez testiranja na proizvodnoj bazi podataka. Prilikom otklanjanja pogrešaka pokušajte riješiti problem, a ne ga ušutkati. Kod koji radi nije ispravan kod; Samo vi možete jamčiti točnost.
Zadatak aplikacije
Odaberite pitanje za analizu (npr. “mjesečni promet po kanalu”) i zatražite kod od umjetne inteligencije sa SQL-om i pandama. Pročitajte oba koda red po red, provjerite broj redaka nakon spajanja/JOIN-a i ručno provjerite barem jedan kritični zbroj. Usporedite da li dva koda daju isti rezultat; Ako je drugačije, saznajte zašto.
popis za provjeru
- [ ] Jesam li AI-ju jasno dao tablicu/shemu i svrhu?
- [ ] Jesam li pročitao i razumio kod koji je proizveo redak po redak?
- [ ] Jesam li provjerio broj redaka nakon spajanja/JOIN-a?
- [ ] Jesam li provjerio funkcije koje ne prepoznajem iz dokumentacije?
- [ ] Jesam li prvo testirao kôd na sigurnim/malim podacima, a ne u proizvodnom okruženju?