Faida:
- Uwezo wa kuchukua SQL kali na nambari ya pandas na kuisoma na kuithibitisha mstari kwa mstari kwa kutoa schema wazi na kusudi kwa akili ya bandia.
- Uwezo wa kupata hitilafu za kimya kama vile hesabu ya safu mlalo, utendakazi wa kufaa na upitishaji baada ya kuunganisha/KUJIUNGA
- Uwezo wa kutatua tatizo katika utatuzi bila kunyamazisha na kuepuka kuendesha msimbo bila kuipima katika mazingira ya uzalishaji
Sayansi ya data ina lugha mbili za msingi: SQL (Lugha ya Maswali Iliyoundwa - lugha ya kuuliza data kutoka kwa hifadhidata) na Python (haswa, maktaba ya pandas - zana ya kawaida ya kudhibiti majedwali kiprogramu). Katika kitengo hiki, tutajifunza kutumia AI kama mshirika wa msimbo: kupata msimbo thabiti wa SQL na pandas kutoka kwayo kwa maswali sahihi, kusoma na kuthibitisha msimbo huo, kusuluhisha, na kamwe kuiendesha bila upofu. AI huandika msimbo unaojirudia kwa sekunde badala ya dakika; Lakini ni kazi yako kuhakikisha kuwa nambari inayotoa inasindika safu sahihi na mantiki sahihi. Nambari ya kufanya kazi haimaanishi msimbo sahihi.
Kwa nini kutengeneza nambari na AI ni nguvu lakini ni hatari
AI hutoa faida tatu kubwa katika utengenezaji wa msimbo: kasi (huandika operesheni ya safu-30 ya kikundi kwa pivoti kwa sekunde), ukumbusho (inakukumbusha juu ya chaguo la kukokotoa la panda ulilosahau), na kufundisha (inafafanua mstari wa msimbo kwa mstari). Lakini hubeba hatari tatu: hitilafu ya kimantiki ya kimya (msimbo unaojumlisha safu wima isiyo sahihi huendeshwa bila hitilafu), chaguo za kukokotoa zilizowekwa (inapendekeza njia ambayo haipo), na mtego wa mavuno (msimbo unaofanya kazi kwenye data ndogo lakini huanguka kwenye safumlalo milioni 10). Kwa hivyo kanuni ya dhahabu: Soma msimbo wa AI kana kwamba umeandika mwenyewe. Usikimbie mstari usiyoielewa.
SQL: mchakato wa data katika chanzo
SQL hukuruhusu kupata data kutoka kwa hifadhidata na kuichakata hapo; Unaweza kufanya muhtasari wa mamilioni ya mistari bila kuivuta kwenye Python. Vizuizi vya msingi vya ujenzi: CHAGUA (safu zipi), WAPI (safu zipi), GROUP BY (kundi na ufanye muhtasari), JIUNGE (majedwali ya kujiunga), KUWA NA (kichujio cha baada ya kikundi). AI inasaidia sana katika kuandika JOIN changamano na vitendakazi vya dirisha, lakini hakikisha umeangalia vitu viwili: ni JIUNGE kupitia ufunguo sahihi (safu zisizo sahihi za nakala rudufu) na ni mantiki ya kichujio sahihi (hasa tabia NULL na safu za tarehe).
Tahadhari: Usikimbilie hoja ya SQL inayozalishwa na AI moja kwa moja dhidi ya hifadhidata ya uzalishaji. Jaribu kwa nakala ndogo au LIMIT kwanza. Usiwahi kutekeleza swali la KUSASISHA/FUTA bila kuthibitisha hali ya WHERE; WAPI vibaya kunaweza kufuta jedwali zima.
Python/pandas: uchanganuzi unaonyumbulika
pandas ndio njia ya kawaida ya kudhibiti meza (DataFrame) kwenye Python. Matumizi bora zaidi ya AI ni kuipa mpango wazi na kusudi. Operesheni zinazotumika sana: kichujio, kikundi kwa, unganisha, jedwali_ege, tumia. AI huandika haya haraka; Unachotaka kuangalia ni mantiki: ni kupanga katika safu wima sahihi, uunganisho umebadilisha idadi ya safu bila kutarajia (kila wakati angalia idadi ya safu baada ya kuunganishwa), ni shughuli za mnyororo zinazobadilisha asili.
shughuli
SQL
panda
kituo cha ukaguzi
Kuchuja
WAPI
df[df.x> 5]
Tabia NULL/NaN
kupanga vikundi
KUNDI KWA
df.groupby()
Je, ni safu sahihi?
kuunganisha
JIUNGE
df.unganisha()
Mabadiliko ya hesabu ya safu
Muhtasari
AVG(), SUM()
.maana(), .jumla()
Safu ipi ilikusanywa
Panga kwa
AGIZA KWA
.panga_maadili()
Mwelekeo (kupanda/kushuka)
upunguzaji
DISTINCT
.drop_duplicate()
Katika safu zipi?
Utatuzi: na AI
Wakati msimbo unashindwa, AI ni mshirika bora wa utatuzi. Ipe ujumbe kamili wa makosa na kijisehemu cha msimbo husika. Lakini jihadharini na mitego miwili. Kwanza, AI inaweza kupendekeza suluhisho ambalo "hunyamazisha" kosa (kwa mfano, kuficha arifa) - hii haisuluhishi kosa, inaificha. Pili, AI wakati mwingine hubadilisha tabia nyingine kimya wakati "kutatua" tatizo. Sheria: elewa urekebishaji, suluhisha usinyamazishe, na uthibitishe kuwa matokeo bado ni sahihi baada ya kurekebisha.
Unataka msimbo unaoweza kufasiriwa na kudumishwa
Unaponunua msimbo kutoka kwa AI, uliza msimbo unaosomeka na unaoweza kudumishwa, sio tu msimbo "unaofanya kazi". Wakati wewe au mfanyakazi mwenzako anafungua msimbo huo miezi kadhaa baadaye, inapaswa kuwa na uwezo wa kuelewa inafanya nini. Ili kufanya hivyo, fanya mazoea ya kufanya AI ijumuishe vitu vitatu: majina yenye maana ya kutofautisha (maagizo_temiz, sio df2), mistari fupi ya maoni katika hatua muhimu (kuelezea kwa nini, sio kile kinachofanywa), na jina la kudumu badala ya nambari ya kichawi (ACCEPT_ESIGI = 0.85 badala ya 0.85 iliyozikwa kwenye nambari). Pia epuka minyororo ndefu ya mstari mmoja (kuunganisha vitendo vitano kwenye mstari mmoja); haya hufanya utatuzi kuwa mgumu. Kwa chaguo-msingi, AI mara nyingi hutoa msimbo mfupi na "smart"; Ikiwa unasema wazi "andika inayosomeka, inayoweza kufasirika, inayoweza kudumishwa", utapata pato linaloweza kudumishwa zaidi. Huu pia ndio msingi wa kuzaliana (Kitengo cha 10): msimbo ambao haueleweki ni msimbo ambao hauwezi kuendeshwa tena kwa usalama.
kesi tatu ndogo
Kesi ya 1 - JIUNGE na marudio. Mchambuzi aliunganisha maagizo na jedwali la bidhaa na akapata mauzo yote kuwa mara 3 zaidi. Sababu: kila bidhaa ilikuwa na safu nyingi (rangi tofauti) kwenye jedwali la bidhaa; JOIN iliyorudiwa kwa kila agizo. Nambari ya AI ilikuwa "inafanya kazi", lakini idadi ya mistari ilikuwa imeruka kutoka 240 elfu hadi 690 elfu. Somo: kila mara angalia idadi ya mistari baada ya kuunganisha/JIUNGE.
Kesi ya 2 - Kitendaji cha kufaa. Alipendekeza AI df.groupby('x').summarize() kwa mwanafunzi wa ndani; Hakuna njia kama hiyo katika panda (kuna .agg()). Nambari hiyo haikufanya kazi, mwanafunzi alipotea kwa dakika 20. Somo: thibitisha chaguo la kukokotoa usilotambua kutoka kwa hati; AI inaweza kutengeneza njia.
Kesi ya 3 - Kuanguka kwa mavuno. Msimbo mmoja ulikuwa unauliza hifadhidata katika kuomba kila safu mlalo; Ilienda kwenye laini 5,000, ilichukua masaa 9 kwenye laini milioni 4, na ikasimama. Wakati AI ilipendekeza suluhisho la vectorized (bechi), muda ulipunguzwa hadi sekunde 40. Somo: msimbo unaofanya kazi kwenye data ndogo unaweza kuanguka kwenye data kubwa; Fikiria ufanisi.
Violezo vinne vinavyoweza kunakiliwa
1) Kuomba SQL na schema:
Jukumu lako: Msaidizi wa SQL (PostgreSQL). Majedwali:- maagizo(kitambulisho, kitambulisho cha mteja, muhuri wa muda, kiasi cha nambari)- wateja(kitambulisho, maandishi ya jiji)Jukumu: Pata jumla ya mauzo na idadi ya maagizo kwa kila jiji mwaka wa 2024, yakipangwa kwa mauzo kwa utaratibu wa kushuka. Eleza jinsi unavyoshughulikia miji NULL. Nitajaribu swali na LIMIT kwanza; UPDATE/FUTA kizazi.
2) mchakato wa pandas na sehemu ya ukaguzi:
Nina DataFrames df (maagizo) na df_customers (wateja). Hesabu wastani wa kiasi kwa kila jiji. MUHIMU: chapisha idadi ya safu mlalo kabla na baada ya kuunganishwa ili nione ikiwa kuna nakala. Eleza ni safu ipi uliyounganisha na kwa nini ulichagua ndani/kushoto.
3) Maelezo ya kanuni na uthibitishaji:
Eleza mstari wa msimbo wa pandas ufuatao: kila mstari hufanya nini, hufanya mawazo gani, katika hali gani inaweza kutoa matokeo mabaya? Nijulishe ikiwa nilitumia kitendakazi cha fudge. Msimbo: [bandika]
4) Utatuzi:
Nambari hii inatoa hitilafu hii. Ujumbe kamili wa hitilafu: [bandika]. Kanuni: [bandika]. Eleza sababu ya ROOT ya kosa na urekebishe. Irekebishe kwa kusuluhisha shida, sio kwa kunyamazisha arifa. Pia onyesha ikiwa urekebishaji ulibadilisha pato.
Mwongozo dhaifu / Mwongozo thabiti
Agizo dhaifu:
Andika swali ambalo hunipa mauzo kwa kila jiji.
Majina ya jedwali, safu wima, aina ya hifadhidata, tabia NULL haiko wazi. AI ni ya kawaida, labda itatoa swali ambalo haliendani na meza yako.
Agizo lenye nguvu:
Jukumu lako: Msaidizi wa SQL (MySQL 8). Jedwali: mauzo (kitambulisho, varchar ya jiji, kiasi cha desimali, tarehe ya tarehe). Kazi: Pata jumla na wastani wa kiasi, idadi ya maagizo kwa kila jiji kwa mwaka wa 2024; Panga kupungua kwa jumla ya kiasi; Onyesha miji iliyo na maagizo zaidi ya 100 pekee (HAVING).NULL usijumuishe jiji. Eleza swali; Nitajaribu na LIMIT.
Hapa hifadhidata, schema, kichungi, kupanga na sheria NULL ni dhahiri.
Makosa ya kawaida
- Kuendesha msimbo bila kuisoma. Nambari ya kufanya kazi sio nambari sahihi; Nambari inayobadilisha safu isiyo sahihi pia huendesha bila hitilafu.
- Si kuangalia idadi ya safu mlalo baada ya kuunganisha/JIUNGE. Ufunguo usio sahihi unanakili safu mlalo kimya kimya na kuongeza jumla.
- Haidhibitishi utendakazi unaofaa. AI inaweza kupendekeza njia ambazo hazipo; Thibitisha kutoka kwa hati kwamba huitambui.
- Bila kufikiria juu ya ufanisi. tumia/kitanzi kufanya kazi kwenye ajali ndogo za data kwenye mamilioni ya safu mlalo; vectorize.
- Endesha moja kwa moja kwenye hifadhidata ya uzalishaji. Hasa kuendesha UPDATE/DELETE bila WHERE au majaribio ni mbaya.
Kidokezo: Pata mazoea ya kuongeza "laini ya uthibitishaji" kwa kila kipande cha msimbo unachopokea kutoka kwa AI: nambari ya mistari kabla na baada ya kuchakata, sampuli chache za mistari na jumla muhimu kwa mkono. Hundi hizi tatu hupata hitilafu nyingi za kimantiki zilizo kimya.
Kwa muhtasari
AI ni mshirika mwenye nguvu ambaye hutoa kwa haraka SQL na msimbo wa pandas, lakini sio mamlaka ya kipofu. Mpe mpango na madhumuni kwa uwazi; Soma kanuni inayotoa kana kwamba umeiandika mwenyewe; Angalia idadi ya safu mlalo, utendakazi wa kufaa na upitishaji baada ya kuunganisha/KUJIUNGA; Usiiendeshe bila kuijaribu kwenye hifadhidata ya uzalishaji. Wakati wa kurekebisha, lenga kutatua shida, sio kuinyamazisha. Nambari inayofanya kazi sio msimbo sahihi; Ni wewe tu unaweza kuhakikisha usahihi.
Jukumu la maombi
Chagua swali la uchanganuzi (k.m. "mapato ya kila mwezi kwa kila kituo") na uombe msimbo kutoka kwa AI yenye SQL na panda. Soma mstari wa msimbo kwa mstari, angalia idadi ya mistari baada ya kuunganisha/KUJIUNGA na uthibitishe mwenyewe angalau jumla moja muhimu. Linganisha ikiwa misimbo miwili hutoa matokeo sawa; Ikiwa tofauti, tafuta kwa nini.
orodha ya ukaguzi
- [ ] Je, nimetoa jedwali/schema na madhumuni kwa uwazi kwa AI?
- [ ] Je, nilisoma na kuelewa kanuni iliyotoa mstari kwa mstari?
- [ ] Je, niliangalia idadi ya mistari baada ya kuunganisha/KUJIUNGA?
- [ ] Je, nimethibitisha utendakazi nisizozitambua kutoka kwa hati?
- [ ] Je, nimejaribu msimbo kwenye data salama/ndogo kwanza na si katika mazingira ya uzalishaji?