Unità 9 / 11

Generazione di codice: analisi assistita dall'intelligenza artificiale con Python (panda) e SQL

Guadagni:

  • Capacità di prendere codice SQL e Panda robusto e di leggerlo e verificarlo riga per riga fornendo uno schema e uno scopo chiari all'intelligenza artificiale
  • Capacità di rilevare errori silenziosi come conteggio delle righe, funzione di adattamento e velocità effettiva dopo l'unione/JOIN
  • Possibilità di risolvere il problema in debug senza silenziarlo ed evitare di eseguire il codice senza testarlo nell'ambiente di produzione

La scienza dei dati ha due linguaggi principali: SQL (Structured Query Language, il linguaggio per interrogare i dati dai database) e Python (in particolare, la libreria pandas, lo strumento standard per manipolare le tabelle a livello di codice). In questa unità impareremo a utilizzare l'intelligenza artificiale come partner del codice: ottenendo da essa un solido codice SQL e Panda con le domande giuste, leggendo e convalidando quel codice, eseguendone il debug e non eseguirlo mai alla cieca. L’intelligenza artificiale scrive codice ripetitivo in pochi secondi invece che in minuti; Ma è tuo compito assicurarti che il codice prodotto elabori la colonna corretta con la logica corretta. Il codice funzionante non significa il codice corretto.

Perché produrre codice con l'intelligenza artificiale è potente ma rischioso

L'intelligenza artificiale offre tre grandi vantaggi nella generazione del codice: velocità (scrive un'operazione di raggruppamento per pivot di 30 righe in pochi secondi), promemoria (ti ricorda una funzione del panda che hai dimenticato) e insegnamento (spiega il codice riga per riga). Ma comporta tre rischi: errore logico silenzioso (il codice che somma la colonna sbagliata viene eseguito senza errori), funzione adattata (suggerisce un metodo che non esiste) e trappola del rendimento (codice che funziona su dati di piccole dimensioni ma si blocca a 10 milioni di righe). Quindi la regola d'oro: leggi il codice dell'IA come se lo avessi scritto tu stesso. Non seguire la linea che non capisci.

SQL: elabora i dati alla fonte

SQL consente di recuperare i dati dal database e di elaborarli lì; Puoi riassumere milioni di righe senza inserirle in Python. Elementi costitutivi di base: SELECT (quali colonne), WHERE (quali righe), GROUP BY (raggruppa e riepiloga), JOIN (unisci tabelle), HAVING (filtro post-raggruppamento). L'intelligenza artificiale è molto utile per scrivere JOIN complessi e funzioni finestra, ma assicurati di controllare due cose: il JOIN avviene tramite la chiave corretta (la chiave sbagliata duplica le righe) e la logica del filtro è corretta (in particolare il comportamento NULL e gli intervalli di date).

Attenzione: non eseguire una query SQL generata dall'intelligenza artificiale direttamente sul database di produzione. Prova prima con una piccola copia o LIMIT. Non eseguire mai una query UPDATE/DELETE senza convalidare la condizione WHERE; Un WHERE sbagliato può cancellare l'intera tabella.

Python/panda: analisi flessibile

pandas è il modo standard per manipolare le tabelle (DataFrame) in Python. L’uso più efficiente dell’IA è darle uno schema e uno scopo chiari. Operazioni più comunemente utilizzate: filtro, raggruppamento, unione, tabella_pivot, applicazione. L'intelligenza artificiale li scrive rapidamente; Ciò che vuoi verificare è la logica: il raggruppamento nella colonna corretta, l'unione ha modificato il numero di righe in modo imprevisto (controlla sempre il numero di righe dopo l'unione), le operazioni a catena stanno modificando l'originale.

transazione

SQL

panda

punto di controllo

Filtraggio

DOVE

df[df.x > 5]

Comportamento NULL/NaN

raggruppamento

GRUPPO PER

df.groupby()

È la colonna giusta?

unire

ISCRIVITI

df.merge()

Modifica del conteggio delle righe

Sommario

AVG(), SOMMA()

.media(), .somma()

Quale colonna è stata raccolta

Ordina per

ORDINA PER

.sort_values()

Direzione (ascendente/discendente)

deduplicazione

DISTINTO

.drop_duplicates()

In quali colonne?

Debug: con AI

Quando il codice fallisce, l'intelligenza artificiale è un eccellente partner di debug. Forniscigli il messaggio di errore completo e il relativo snippet di codice. Ma attenzione a due trappole. Innanzitutto, l’intelligenza artificiale può suggerire una soluzione che “silenzia” l’errore (ad esempio, nascondendo gli avvisi): questo non risolve l’errore, lo nasconde. In secondo luogo, l’intelligenza artificiale a volte modifica silenziosamente un altro comportamento mentre “risolve” un problema. Regola: comprendere la correzione, risolvere senza disattivare l'audio e verificare che l'output sia ancora corretto dopo la correzione.

Vuoi codice interpretabile e manutenibile

Quando acquisti codice dall'intelligenza artificiale, chiedi codice che sia leggibile e gestibile, non solo codice che "funzioni". Quando tu o un collega aprite quel codice mesi dopo, dovrebbe essere in grado di capire cosa fa. Per fare ciò, prendi l'abitudine di fare in modo che l'intelligenza artificiale includa tre cose: nomi di variabili significativi (orders_temiz, non df2), brevi righe di commento nei passaggi critici (che spiegano perché, non cosa viene fatto) e una costante con nome invece di un numero magico (ACCEPT_ESIGI = 0,85 invece di 0,85 sepolto nel codice). Evitare inoltre lunghe catene a linea singola (che collegano cinque azioni in una linea); questi rendono difficile il debug. Per impostazione predefinita, l’intelligenza artificiale spesso produce codice conciso e “intelligente”; Se dici chiaramente "scrivi leggibile, interpretabile, manutenibile", otterrai un output molto più gestibile. Questa è anche la base della riproducibilità (Unità 10): il codice che non viene compreso è un codice che non può essere rieseguito in modo sicuro.

tre mini custodie

Caso 1: replica JOIN. Un analista ha combinato gli ordini con la tabella dei prodotti e ha riscontrato che il fatturato totale è 3 volte superiore. Causa: ogni prodotto aveva più righe (colori diversi) nella tabella prodotti; ISCRIVITI duplicato ogni ordine. Il codice dell'IA "funzionava", ma il numero di linee era balzato da 240mila a 690mila. Lezione: controlla sempre il numero di righe dopo l'unione/JOIN.

Caso 2 — Funzione di adattamento. Ha suggerito AI df.groupby('x').summarize() a uno stagista; Non esiste un metodo simile nei panda (esiste .agg()). Il codice non ha funzionato, lo stagista è rimasto disperso per 20 minuti. Lezione: verifica una funzione che non riconosci dal documento; L’intelligenza artificiale può inventare metodi.

Caso 3 – Crollo dei rendimenti. Un codice stava interrogando il database in applicazione per ogni riga; Funzionava su 5.000 linee, impiegava 9 ore su 4 milioni di linee e si fermava. Quando l’intelligenza artificiale ha suggerito una soluzione vettorizzata (batch), il tempo è stato ridotto a 40 secondi. Lezione: il codice che funziona su Small Data potrebbe bloccarsi su Big Data; Considera l'efficienza.

Quattro modelli copiabili

1) Richiesta SQL con schema:

Il tuo ruolo: assistente SQL (PostgreSQL). Tabelle:- ordini(id, customer_id, data timestamp, importo numerico)- clienti(id, testo città)Attività: ottenere il fatturato totale e il numero di ordini per città nel 2024, ordinati per fatturato in ordine decrescente. Spiega come gestisci le città NULL. Testerò prima la query con LIMIT; Generazione AGGIORNA/ELIMINA.

2) processo panda con checkpoint:

Ho DataFrames df (ordini) e df_customers (clienti). Calcola l'importo medio per città. IMPORTANTE: stampa il numero di righe prima e dopo l'unione in modo da poter vedere se c'è duplicazione. Spiega in quale colonna hai effettuato l'unione e perché hai scelto interno/sinistra.

3) Spiegazione e verifica del codice:

Spiega il seguente codice panda riga per riga: cosa fa ogni riga, quali presupposti fa, in quali casi potrebbe dare risultati errati? Fammi sapere se ho usato la funzione fudge. Codice: [incolla]

4) Debug:

Questo codice dà questo errore. Messaggio di errore completo: [incolla]. Codice: [incolla]. Spiegare la causa RADICE dell'errore e correggerla. Risolvilo risolvendo effettivamente il problema, non silenziando l'avviso. Indicare inoltre se la correzione ha modificato l'output.

Prompt debole / Prompt forte

Suggerimento debole:

Scrivi una query che mi fornisca le vendite per città.

I nomi delle tabelle, le colonne, il tipo di database e il comportamento NULL non sono chiari. L'intelligenza artificiale è comune, probabilmente produrrà una query che non si adatta alla tua tabella.

Suggerimento potente:

Il tuo ruolo: assistente SQL (MySQL 8). Tabella: vendite (id, città varchar, importo decimale, data). Compito: ottenere l'importo totale e medio, il numero di ordini per città per l'anno 2024; Ordina decrescente per importo totale; Mostra solo le città con più di 100 ordini (HAVING).NULL esclude la città. Spiegare la domanda; Proverò con LIMIT.

Qui database, schema, filtro, ordinamento e regola NULL sono evidenti.

Errori comuni

  • Eseguire il codice senza leggerlo. Il codice funzionante non è corretto; Anche il codice che manipola la colonna sbagliata viene eseguito senza errori.
  • Non controllare il numero di righe dopo l'unione/JOIN. La chiave sbagliata duplica silenziosamente le righe e gonfia i totali.
  • Non verificare la funzione di adattamento. L’intelligenza artificiale può suggerire metodi che non esistono; Conferma dal documento che non lo riconosci.
  • Non pensare all'efficienza. applicare/lavorare in loop su piccoli arresti anomali di dati su milioni di righe; vettorizzare.
  • Esegui direttamente sul database di produzione. Soprattutto eseguire UPDATE/DELETE senza WHERE o testing è disastroso.
Suggerimento: prendi l'abitudine di aggiungere una "riga di convalida" a ogni pezzo di codice che ricevi dall'intelligenza artificiale: un numero di righe pre e post-elaborazione, alcune righe campione e un totale critico manuale. Questi tre controlli rilevano gli errori logici più silenziosi.

In sintesi

L’intelligenza artificiale è un partner potente che produce rapidamente codice SQL e Panda, ma non è un’autorità cieca. Dategli chiaramente lo schema e lo scopo; Leggi il codice che produce come se lo avessi scritto tu stesso; Controlla il numero di righe, le funzioni di adattamento e la velocità effettiva dopo l'unione/JOIN; Non eseguirlo senza testarlo sul database di produzione. Durante il debug, mira a risolvere il problema, non a metterlo a tacere. Il codice che funziona non è il codice corretto; Solo tu puoi garantire la precisione.

Compito dell'applicazione

Scegli una domanda di analisi (ad esempio "fatturato mensile per canale") e richiedi il codice all'intelligenza artificiale sia con SQL che con panda. Leggi entrambi i codici riga per riga, controlla il numero di righe dopo l'unione/JOIN e verifica manualmente almeno una somma critica. Confronta se i due codici producono lo stesso risultato; Se diverso, scopri perché.

lista di controllo

  • [ ] Ho fornito chiaramente la tabella/schema e lo scopo all'IA?
  • [ ] Ho letto e compreso il codice prodotto riga per riga?
  • [ ] Ho controllato il numero di righe dopo l'unione/JOIN?
  • [ ] Ho verificato le funzioni che non riconosco dalla documentazione?
  • [ ] Ho testato prima il codice su Safe/Small Data e non nell'ambiente di produzione?