Enhed 9 / 11

Kodegenerering: AI-assisteret analyse med Python (pandaer) og SQL

Gevinster:

  • Evne til at tage robust SQL og pandas kode og læse og verificere den linje for linje ved at give et klart skema og formål til kunstig intelligens
  • Mulighed for at fange tavse fejl såsom rækkeantal, tilpasningsfunktion og gennemløb efter fletning/JOIN
  • Evne til at løse problemet i debug uden at dæmpe det og undgå at køre koden uden at teste den i produktionsmiljøet

Datavidenskab har to primære sprog: SQL (Structured Query Language - sproget til at forespørge data fra databaser) og Python (specifikt pandas-biblioteket - standardværktøjet til at manipulere tabeller programmatisk). I denne enhed lærer vi at bruge AI som en kodepartner: Få solid SQL- og pandaskode fra den med de rigtige spørgsmål, læse og validere den kode, fejlfinde den og aldrig køre den blindt. AI skriver gentagende kode på sekunder i stedet for minutter; Men det er din opgave at sørge for, at den kode, den producerer, behandler den korrekte kolonne med den korrekte logik. Arbejdskode betyder ikke korrekt kode.

Hvorfor det er kraftfuldt, men risikabelt at producere kode med AI

AI giver tre store fordele ved kodegenerering: hastighed (skriver en 30-linjers gruppe-for-pivot-operation på sekunder), påmindelse (minder dig om en pandafunktion, du har glemt) og undervisning (forklarer koden linje for linje). Men det indebærer tre risici: tavs logisk fejl (kode, der summerer den forkerte kolonne, kører uden fejl), tilpasset funktion (foreslår en metode, der ikke eksisterer) og udbyttefælde (kode, der fungerer på små data, men går ned ved 10 millioner rækker). Så den gyldne regel: Læs AI's kode, som om du selv skrev den. Løb ikke den linje, du ikke forstår.

SQL: behandle data ved kilden

SQL giver dig mulighed for at hente data fra databasen og behandle dem der; Du kan opsummere millioner af linjer uden at trække dem ind i Python. Grundlæggende byggeklodser: SELECT (hvilke kolonner), WHERE (hvilke rækker), GROUP BY (grupper og opsummer), JOIN (sammenføj tabeller), HAVING (post-group filter). AI er meget nyttig til at skrive komplekse JOINs og vinduesfunktioner, men sørg for at kontrollere to ting: er JOIN via den korrekte nøgle (den forkerte nøgle dublerer rækker) og er filterlogikken korrekt (især NULL-adfærd og datointervaller).

Forsigtig: Kør ikke en AI-genereret SQL-forespørgsel direkte mod produktionsdatabasen. Test med en lille kopi eller LIMIT først. Kør aldrig en UPDATE/DELETE-forespørgsel uden at validere WHERE-betingelsen; En forkert WHERE kan slette hele tabellen.

Python/pandaer: fleksibel analyse

pandas er standardmåden til at manipulere tabeller (DataFrame) i Python. Den mest effektive brug af AI er at give den et klart skema og formål. Mest almindeligt anvendte operationer: filter, groupby, merge, pivot_table, apply. AI skriver disse hurtigt; Det du vil kontrollere er logikken: er grupperingen i den korrekte kolonne, har fletningen ændret antallet af rækker uventet (kontroller altid antallet af rækker efter fletningen), ændrer kædeoperationerne originalen.

transaktion

SQL

pandaer

kontrolpunkt

Filtrering

HVOR

df[df.x > 5]

NULL/NaN adfærd

gruppering

GRUPPE EFTER

df.groupby()

Er det den rigtige kolonne?

fusionere

VÆR MED

df.merge()

Ændring af rækkeantal

Resumé

AVG(), SUM()

.mean(), .sum()

Hvilken kolonne blev indsamlet

Sorter efter

BESTIL EFTER

.sort_values()

Retning (stigende/faldende)

deduplikation

DISTINKT

.drop_duplicates()

I hvilke kolonner?

Fejlretning: med AI

Når koden fejler, er AI en fremragende fejlfindingspartner. Giv den hele fejlmeddelelsen og det relevante kodestykke. Men pas på to fælder. For det første kan AI foreslå en løsning, der "dæmper" fejlen (f.eks. skjuler advarsler) - dette retter ikke fejlen, det skjuler den. For det andet ændrer AI nogle gange lydløst en anden adfærd, mens den "løser" et problem. Regel: forstå rettelsen, løs ikke mute, og bekræft, at outputtet stadig er korrekt efter rettelsen.

Ønsker fortolkelig og vedligeholdelig kode

Når du køber kode fra AI, skal du bede om kode, der kan læses og vedligeholdes, ikke kun kode, der "virker". Når du eller en kollega åbner den kode måneder senere, burde den være i stand til at forstå, hvad den gør. For at gøre dette skal du gøre det til en vane at få AI til at inkludere tre ting: meningsfulde variabelnavne (orders_temiz, ikke df2), korte kommentarlinjer ved kritiske trin (forklarer hvorfor, ikke hvad der bliver gjort) og en navngiven konstant i stedet for et magisk tal (ACCEPT_ESIGI = 0,85 i stedet for 0,85 begravet i koden). Undgå også lange enkelt-line kæder (forbinder fem handlinger i en linje); disse gør fejlfinding vanskelig. Som standard producerer AI ofte kortfattet og "smart" kode; Hvis du tydeligt siger "skrive læsbar, fortolkelig, vedligeholdelig", vil du få et meget mere vedligeholdelsesvenligt output. Dette er også grundlaget for reproducerbarhed (Enhed 10): kode, der ikke forstås, er kode, der ikke kan køres sikkert igen.

tre minisager

Tilfælde 1 — JOIN replikering. En analytiker kombinerede ordrerne med produkttabellen og fandt, at den samlede omsætning var 3 gange højere. Årsag: hvert produkt havde flere rækker (forskellige farver) i produkttabellen; JOIN duplikerede hver ordre. AI'ens kode "virkede", men antallet af linjer var hoppet fra 240 tusind til 690 tusind. Lektion: Kontroller altid antallet af linjer efter fletning/JOIN.

Case 2 — Tilpasningsfunktion. Han foreslog AI df.groupby('x').summarize() til en praktikant; Der er ingen sådan metode i pandaer (der er .agg()). Koden virkede ikke, praktikanten var tabt i 20 minutter. Lektion: bekræft en funktion, du ikke genkender fra dokumentet; AI kan finde på metoder.

Tilfælde 3 — Udbyttekollaps. Én kode forespurgte databasen i Application for hver række; Den kørte på 5.000 linjer, tog 9 timer på 4 millioner linjer og stoppede. Da AI foreslog en vektoriseret (batch) løsning, blev tiden reduceret til 40 sekunder. Lektion: kode, der virker på små data kan gå ned på big data; Overvej effektivitet.

Fire kopierbare skabeloner

1) Anmodning om SQL med skema:

Din rolle: SQL-assistent (PostgreSQL). Tabeller:- ordrer(id, kunde_id, dato tidsstempel, beløb numerisk)- kunder(id, bytekst)Opgave: Få den samlede omsætning og antal ordrer pr. by i 2024, sorteret efter omsætning i faldende rækkefølge. Forklar, hvordan du håndterer NULL-byer. Jeg vil først teste forespørgslen med LIMIT; OPDATERING/SLET generation.

2) pandaproces med kontrolpunkt:

Jeg har DataFrames df (ordrer) og df_customers (kunder). Beregn gennemsnitsbeløb pr. by. VIGTIGT: udskriv antallet af rækker før og efter fletning, så jeg kan se om der er duplikering. Forklar, i hvilken kolonne du slog sammen, og hvorfor du valgte indre/venstre.

3) Kodeforklaring og verifikation:

Forklar følgende pandaer kode linje for linje: hvad gør hver linje, hvilke antagelser gør den, i hvilke tilfælde kan den give forkerte resultater? Lad mig vide, hvis jeg brugte en fudge-funktion. Kode: [indsæt]

4) Fejlretning:

Denne kode giver denne fejl. Fuld fejlmeddelelse: [indsæt]. Kode: [indsæt]. Forklar ROOT-årsagen til fejlen og ret den. Løs det ved faktisk at løse problemet, ikke ved at slå alarmen fra. Angiv også, om rettelsen ændrede outputtet.

Svag prompt / Stærk prompt

Svag prompt:

Skriv en forespørgsel, der giver mig salg pr. by.

Tabelnavne, kolonner, databasetype, NULL-adfærd er uklare. AI er almindelig, det vil sandsynligvis producere en forespørgsel, der ikke passer til dit bord.

Kraftig prompt:

Din rolle: SQL-assistent (MySQL 8). Tabel: salg (id, by varchar, beløb decimal, dato dato). Opgave: Få det samlede og gennemsnitlige beløb, antal ordrer pr. by for år 2024; Sorter faldende efter samlet beløb; Vis kun byer med mere end 100 ordrer (HAVING). NULL ekskluder by. Forklar forespørgslen; Jeg vil teste med LIMIT.

Her er database, skema, filter, sortering og NULL-regel åbenlyse.

Almindelige fejl

  • Kører koden uden at læse den. Arbejdskode er ikke korrekt kode; Den kode, der manipulerer den forkerte kolonne, kører også uden fejl.
  • Kontrollerer ikke antallet af rækker efter fletning/JOIN. Den forkerte tast dublerer lydløst rækker og puster totalerne op.
  • Kontrollerer ikke tilpasningsfunktionen. AI kan foreslå metoder, der ikke eksisterer; Bekræft fra dokumentet, at du ikke genkender det.
  • Tænker ikke på effektivitet. anvende/loop arbejde på små datanedbrud på millioner af rækker; vektorisere.
  • Kør direkte på produktionsdatabase. Især at køre UPDATE/DELETE uden WHERE eller test er katastrofalt.
Tip: Få for vane at tilføje en "valideringslinje" til hvert stykke kode, du modtager fra AI: et antal linjer før og efter behandling, et par prøvelinjer og en kritisk total i hånden. Disse tre kontroller fanger de fleste tavse logiske fejl.

Sammenfattende

AI er en stærk partner, der hurtigt producerer SQL og pandas-kode, men det er ikke en blind autoritet. Giv ham ordningen og formålet klart; Læs koden, den producerer, som om du selv skrev den; Tjek antal rækker, tilpasningsfunktioner og gennemløb efter fletning/JOIN; Kør det ikke uden at teste det på produktionsdatabasen. Når du fejlfinder, skal du forsøge at løse problemet, ikke gøre det tavst. Den kode, der virker, er ikke den rigtige kode; Kun du kan garantere nøjagtighed.

Ansøgningsopgave

Vælg et analysespørgsmål (f.eks. "månedlig omsætning pr. kanal") og anmod om kode fra AI med både SQL og pandaer. Læs begge kode linje for linje, kontroller antallet af linjer efter fletning/JOIN og kontroller manuelt mindst én kritisk sum. Sammenlign om de to koder giver det samme resultat; Hvis anderledes, så find ud af hvorfor.

tjekliste

  • [ ] Har jeg givet tabellen/skemaet og formålet klart til AI?
  • [ ] Har jeg læst og forstået den kode, den producerede linje for linje?
  • [ ] Har jeg tjekket antallet af linjer efter fletning/JOIN?
  • [ ] Har jeg verificeret de funktioner, jeg ikke genkender fra dokumentationen?
  • [ ] Har jeg testet koden på sikre/små data først og ikke i produktionsmiljøet?