Unità 9 / 11

Ġenerazzjoni tal-Kodiċi: Analiżi Megħjuna mill-AI b'Python (pandas) u SQL

Qligħ:

  • Kapaċità li tieħu kodiċi robust SQL u pandas u taqrah u tivverifikah linja b'linja billi tagħti skema u skop ċari lill-intelliġenza artifiċjali
  • Kapaċità li taqbad żbalji siekta bħal għadd ta 'ringieli, funzjoni ta' twaħħil u throughput wara l-għaqda / JOIN
  • Kapaċità li ssolvi l-problema fid-debug mingħajr sajlens tagħha u tevita li tħaddem il-kodiċi mingħajr ma tittestjah fl-ambjent tal-produzzjoni

Ix-xjenza tad-dejta għandha żewġ lingwi primarji: SQL (Structured Query Language — il-lingwa għall-mistoqsija tad-dejta minn databases) u Python (speċifikament, il-librerija tal-pandas — l-għodda standard għall-manipulazzjoni ta’ tabelli b’mod programmatiku). F'din l-unità, se nitgħallmu nużaw l-AI bħala sieħeb tal-kodiċi: niksbu kodiċi solidu SQL u pandas minnha bil-mistoqsijiet it-tajba, naqraw u nivvalidaw dak il-kodiċi, niddebuggjawh, u qatt ma nħaddmuh bl-addoċċ. AI jikteb kodiċi ripetittiv f'sekondi minflok minuti; Iżda huwa xogħolek li tiżgura li l-kodiċi li tipproduċi tipproċessa l-kolonna t-tajba bil-loġika korretta. Kodiċi tax-xogħol ma jfissirx kodiċi korrett.

Għaliex il-produzzjoni ta 'kodiċi bl-AI hija qawwija iżda riskjuża

L-AI tipprovdi tliet benefiċċji kbar fil-ġenerazzjoni tal-kodiċi: veloċità (tikteb operazzjoni groupby-pivot ta’ 30 linja f’sekondi), tfakkira (tfakkarkom f’funzjoni tal-pandas li insejt), u tagħlim (jispjega l-kodiċi linja b’linja). Iżda ġġorr tliet riskji: żball ta 'loġika siekta (kodiċi li jgħodd il-kolonna ħażina taħdem mingħajr żbalji), funzjoni mwaħħla (jissuġġerixxi metodu li ma jeżistix), u nassa ta' rendiment (kodiċi li jaħdem fuq data żgħira iżda ġġarraf f'10 miljun ringieli). Allura r-regola tad-deheb: Aqra l-kodiċi tal-AI bħallikieku ktibtu lilek innifsek. Tmexxix il-linja li ma tifhimx.

SQL: ipproċessa d-data fis-sors

SQL jippermettilek li tirkupra data mid-database u tipproċessaha hemmhekk; Tista' tiġbor fil-qosor miljuni ta' linji mingħajr ma tiġbedhom f'Python. Blokki bażiċi tal-bini: SELECT (liema kolonni), WHERE (liema ringieli), GROUP BY (grupp u sommarju), JOIN (għaqqad it-tabelli), HAVING (filtru ta 'wara l-grupp). L-AI hija utli ħafna fil-kitba ta 'JOINs kumplessi u funzjonijiet ta' tieqa, iżda kun żgur li tiċċekkja żewġ affarijiet: hija l-JOIN permezz taċ-ċavetta korretta (iċ-ċavetta ħażina tidduplika ringieli) u hija l-loġika tal-filtru korretta (speċjalment imġieba NULL u meded ta 'data).

Attenzjoni: Tħaddimx mistoqsija SQL ġenerata mill-AI direttament kontra d-database tal-produzzjoni. Ittestja l-ewwel b'kopja żgħira jew LIMIT. Qatt mmexxi mistoqsija UPDATE/DELETE mingħajr ma tivvalida l-kundizzjoni WHERE; FEJN ħażin jista' jħassar it-tabella kollha.

Python/pandas: analiżi flessibbli

pandas huwa l-mod standard biex jimmanipulaw it-tabelli (DataFrame) f'Python. L-aktar użu effiċjenti tal-IA huwa li tagħtiha skema u skop ċari. L-aktar operazzjonijiet użati b'mod komuni: iffiltra, groupby, merge, pivot_table, japplikaw. AI tikteb dawn malajr; Dak li trid tiċċekkja hija l-loġika: huwa r-raggruppament fil-kolonna korretta, l-għaqda biddel in-numru ta 'ringieli bla mistenni (dejjem iċċekkja n-numru ta' ringieli wara l-għaqda), huma l-operazzjonijiet tal-katina li jbiddlu l-oriġinal.

transazzjoni

SQL

pandas

punt ta' kontroll

Iffiltrar

FEJN

df[df.x > 5]

imġieba NULL/NaN

raggruppament

GRUPP MINN

df.groupby()

Hija l-kolonna t-tajba?

jingħaqdu

JINGĦABBA

df.merge()

Bidla fl-għadd ta' ringieli

Sommarju

AVG(), SOMMA()

.mean (), .sum ()

Liema kolonna nġabret

Issortja minn

ORDNI MINN

.sort_values()

Direzzjoni (li jitla'/nieżla)

deduplikazzjoni

DISTINTI

.drop_duplicates()

F'liema kolonni?

Debugging: bl-AI

Meta l-kodiċi jonqos, AI hija sieħba eċċellenti tad-debugging. Agħtih il-messaġġ ta' żball sħiħ u s-snippet tal-kodiċi rilevanti. Imma oqgħod attent minn żewġ nases. L-ewwel, l-AI tista 'tissuġġerixxi soluzzjoni li "sikket" l-iżball (eż., taħbi twissijiet) - dan ma jirranġax l-iżball, jaħbih. It-tieni, l-AI kultant tbiddel imġieba oħra fis-skiet filwaqt li "issolvi" problema. Regola: tifhem it-tiswija, issolvi mhux mute, u vverifika li l-output għadu korrett wara l-iffissar.

Trid kodiċi interpretabbli u manutenzjoni

Meta tixtri kodiċi minn AI, staqsi għal kodiċi li jista 'jinqara u jinżamm, mhux biss kodiċi li "jaħdem". Meta inti jew kollega jiftaħ dak il-kodiċi xhur wara, għandu jkun kapaċi jifhem x'jagħmel. Biex tagħmel dan, agħmel drawwa li l-AI tinkludi tliet affarijiet: ismijiet varjabbli sinifikanti (orders_temiz, mhux df2), linji ta 'kummenti qosra f'passi kritiċi (li jispjegaw għaliex, mhux dak li qed isir), u kostanti msemmija minflok numru maġiku (ACCEPT_ESIGI = 0.85 minflok 0.85 midfun fil-kodiċi). Evita wkoll ktajjen twal b'linja waħda (li tgħaqqad ħames azzjonijiet f'linja waħda); dawn jagħmlu debugging diffiċli. B'mod awtomatiku, l-AI ħafna drabi tipproduċi kodiċi konċiż u "intelliġenti"; Jekk tgħid b'mod ċar "tikteb li tista' tinqara, li tista' tiġi interpretata, li tista' tinżamm", ikollok output ferm aktar li jista' jinżamm. Din hija wkoll il-bażi tar-riproduċibbiltà (Unità 10): kodiċi li ma jinftiehemx huwa kodiċi li ma jistax jerġa' jitħaddem b'mod sigur.

tliet każijiet żgħar

Każ 1 — Replikazzjoni JOIN. Analista għaqqad l-ordnijiet mat-tabella tal-prodott u sab li l-fatturat totali kien 3 darbiet ogħla. Kawża: kull prodott kellu ringieli multipli (kuluri differenti) fit-tabella tal-prodott; JOIN duplikat kull ordni. Il-kodiċi tal-AI kien "jaħdem", iżda n-numru ta 'linji kien qabeż minn 240 elf għal 690 elf. Lezzjoni: dejjem iċċekkja n-numru ta' linji wara l-għaqda/l-ISSIB.

Każ 2 — Funzjoni ta' twaħħil. Huwa ssuġġerixxa AI df.groupby('x').summarize() lil intern; M'hemm l-ebda metodu bħal dan fil-pandas (hemm .agg()). Il-kodiċi ma ħadimx, l-intern intilef għal 20 minuta. Lezzjoni: ivverifika funzjoni li ma tagħrafx mid-dok; AI tista 'tagħmel metodi.

Każ 3 — Kollass tar-rendiment. Kodiċi wieħed kien qed ifittex id-database fl-applika għal kull ringiela; Dam fuq 5,000 linja, ħadet 9 sigħat fuq 4 miljun linja, u waqfet. Meta AI ssuġġeriet soluzzjoni vettorizzata (lott), il-ħin tnaqqas għal 40 sekonda. Lezzjoni: kodiċi li jaħdem fuq data żgħira jista 'jiġġarraf fuq data kbira; Ikkunsidra l-effiċjenza.

Erba' mudelli li jistgħu jiġu kkupjati

1) Talba SQL bi skema:

Ir-rwol tiegħek: Assistent SQL (PostgreSQL). Tabelli:- ordnijiet(id, customer_id, data timestamp, ammont numeriku)- klijenti(id, test tal-belt)Kompitu: Ikseb il-fatturat totali u n-numru ta’ ordnijiet għal kull belt fl-2024, magħżula skont il-fatturat f’ordni dixxendenti. Spjega kif timmaniġġja bliet NULL. L-ewwel se nittestja l-mistoqsija b'LIMIT; AĠĠORNAMENT/ĦASSAR ġenerazzjoni.

2) pandas proċess bil-punt ta 'kontroll:

Għandi DataFrames df (ordnijiet) u df_customers (klijenti). Ikkalkula l-ammont medju għal kull belt. IMPORTANTI: ipprintja n-numru ta' ringieli qabel u wara l-għaqda sabiex inkun nista' nara jekk hemmx duplikazzjoni. Spjega f'liema kolonna għaqqadt u għaliex għażilt ġewwa/xellug.

3) Spjegazzjoni tal-kodiċi u verifika:

Spjega l-kodiċi tal-pandas li ġej linja b’linja: x’tagħmel kull linja, liema suppożizzjonijiet tagħmel, f’liema każijiet tista’ tagħti riżultati żbaljati? Let me know jekk użajtx funzjoni fudge. Kodiċi: [paste]

4) Debugging:

Dan il-kodiċi jagħti dan l-iżball. Messaġġ sħiħ ta' żball: [paste]. Kodiċi: [pejst]. Spjega l-kawża ROOT tal-iżball u waħħalha. Waħħalha billi fil-fatt issolvi l-problema, mhux billi tgħaxxaq it-twissija. Indika wkoll jekk il-fiss bidlitx l-output.

Pront dgħajjef / Pront qawwi

Pront dgħajjef:

Ikteb mistoqsija li tagħtini bejgħ għal kull belt.

L-ismijiet tat-tabella, il-kolonni, it-tip tad-database, l-imġieba NULL mhumiex ċari. L-AI hija komuni, probabbilment se tipproduċi mistoqsija li ma taqbilx mal-mejda tiegħek.

Pront qawwi:

Ir-rwol tiegħek: assistent SQL (MySQL 8). Tabella: bejgħ (id, belt varchar, ammont deċimali, data data). Kompitu: Ikseb l-ammont totali u medju, in-numru ta 'ordnijiet għal kull belt għas-sena 2024; Issortja jonqos bl-ammont totali; Uri biss bliet b'aktar minn 100 ordni (HAVING). NULL jeskludi l-belt. Spjega l-mistoqsija; Se nittestja b'LIMIT.

Hawnhekk id-database, l-iskema, il-filtru, l-issortjar u r-regola NULL huma ovvji.

Żbalji komuni

  • Tmexxi l-kodiċi mingħajr ma taqrah. Il-kodiċi tax-xogħol mhuwiex kodiċi korrett; Il-kodiċi li jimmanipula l-kolonna ħażina wkoll taħdem mingħajr żbalji.
  • Mhux qed jiċċekkja n-numru ta' ringieli wara l-għaqda/l-JOIN. Iċ-ċavetta ħażina tidduplika r-ringieli fis-skiet u tgħolli t-totali.
  • Mhux jivverifika l-funzjoni tat-twaħħil. L-AI tista' tissuġġerixxi metodi li ma jeżistux; Ikkonferma mid-dokument li ma tagħrafhiex.
  • Mhux taħseb dwar l-effiċjenza. applika/loop taħdem fuq ħabtiet żgħar tad-dejta fuq miljuni ta’ ringieli; vectorize.
  • Mexxi direttament fuq id-database tal-produzzjoni. Speċjalment it-tħaddim UPDATE/DELETE mingħajr FEJN jew l-ittestjar huwa diżastruż.
Tip: Ikseb id-drawwa li żżid "linja ta 'validazzjoni" ma' kull biċċa kodiċi li tirċievi mill-AI: numru ta 'linji ta' qabel u ta 'wara l-ipproċessar, ftit linji ta' kampjun, u total kritiku bl-idejn. Dawn it-tliet kontrolli jaqbdu l-aktar żbalji ta’ loġika siekta.

Fil-qosor

L-AI hija sieħba b'saħħitha li tipproduċi malajr SQL u kodiċi tal-pandas, iżda mhix awtorità għomja. Agħtih l-iskema u l-iskop b’mod ċar; Aqra l-kodiċi li tipproduċi bħallikieku ktibtu lilek innifsek; Iċċekkja n-numru ta 'ringieli, funzjonijiet ta' twaħħil u throughput wara l-għaqda / JOIN; Tħaddemx mingħajr ma tittestjah fuq id-database tal-produzzjoni. Meta tiddibaggja, timmira li ssolvi l-problema, mhux isikketha. Il-kodiċi li jaħdem mhuwiex il-kodiċi korrett; Inti biss tista 'tiggarantixxi l-eżattezza.

Kompitu ta' applikazzjoni

Agħżel mistoqsija ta 'analiżi (eż. "fatturat ta' kull xahar għal kull kanal") u itlob kodiċi mill-AI kemm bl-SQL kif ukoll bil-pandas. Aqra ż-żewġ kodiċi linja b'linja, iċċekkja n-numru ta 'linji wara jingħaqdu/JOIN u manwalment ivverifika mill-inqas somma waħda kritika. Qabbel jekk iż-żewġ kodiċi jipproduċux l-istess riżultat; Jekk differenti, sib għaliex.

lista ta' kontroll

  • [ ] Jien tajt it-tabella/l-iskema u l-iskop b'mod ċar lill-AI?
  • [ ] Qrajt u fhimt il-kodiċi li pproduċiet linja b'linja?
  • [ ] Iċċekkja n-numru ta' linji wara li jingħaqdu/Jingħaqdu?
  • [ ] Ivverifikajt il-funzjonijiet li ma nagħrafx mid-dokumentazzjoni?
  • [ ] Ittestjajt il-kodiċi fuq data sigura/żgħira l-ewwel u mhux fl-ambjent tal-produzzjoni?