Tipuri de date pentru marketeri: numere, șiruri și valori booleene

Publicat: 2017-08-10

Notă: Această postare de blog este a treia dintr-o serie scrisă de analistul nostru web senior, Adrian Palacios, și este concepută pentru a oferi marketerilor informațiile și instrucțiunile necesare pentru instalarea limbajului de programare, Python. În cazul în care ați ratat-o, prima postare a lui Adrian explică de ce marketerii ar trebui să ia în considerare să facă acest lucru în primul rând, iar a doua postare explică cum să instalați Python.

Când am început să învăț cum să programez, am avut multe probleme cu conceptul de „tipuri de date”. A fost mereu unul dintre primele subiecte discutate, dar și unul dintre cele mai abstracte. Din frustrarea de a nu înțelege, de obicei omit orice discuție despre tipurile de date și o raționalizeam spunându-mi: „Ce contează ele?” Dar după câțiva ani de a face programarea parte din munca mea de zi cu zi, tipurile de date au început (încet-încet) să aibă sens.

Ce sunt tipurile de date?

Tipurile de date sunt un set de reguli care guvernează ceea ce puteți (și nu) face cu Python. În fiecare zi întâmpinați constrângeri similare în lumea reală: încercați să plătiți pentru o masă cu un card de credit atunci când restaurantul acceptă doar numerar. Încercați să mergeți pe bicicletă pe un râu în loc să folosiți o canoe sau un caiac. Sau încercați să coaceți o prăjitură cu sare în loc de zahăr. Ai putea încerca aceste lucruri dacă ai vrea cu adevărat, dar mă îndoiesc că ai fi mulțumit de rezultat.

În mod similar, dacă te gândești la programare ca la coacere, atunci tipurile de date sunt ingredientele cheie ale oricărui cod Python, la fel cum ouăle, făina, untul, praful de copt și zahărul sunt ingrediente cheie pentru a face un tort. Sau poate vrei o plăcintă? Folosiți mai puțină făină, aruncați praful de copt cu totul, poate adăugați o umplutură de fructe și voila, sunteți pe cale să faceți o plăcintă. Vezi unde se duce asta? Înțelegerea de ce este capabil fiecare tip de date și cum să le amestecați este cheia pentru a fi un programator mai bun.

Iată doar câteva tipuri de date comune în Python:

Numere, care sunt subdivizate în alte tipuri, cum ar fi:
Numere întregi: 0, 1, 2, 3
Plutitoare: 0,0, 1,0, 2,5, 3,145
Șiruri de caractere: „Think Different”, „Netflix and Chill”
Booleeni: adevărat, fals

Există mai multe tipuri de date în Python, dar deocamdată ne vom concentra asupra acestor trei.

În această postare, veți afla câteva dintre lucrurile pe care le puteți face cu tipurile de date de bază în Python și de ce tipurile de date sunt importante.

Din experiența mea, aceasta tinde să fie cea mai plictisitoare parte a oricărei cărți/video/curs online „Învățați cum să programați”, dar pentru că tipurile de date sunt atât de esențiale pentru programare, vă recomand să nu omiteți această postare.

Numerele

Cele două tipuri principale de numere în Python sunt numerele întregi (numere întregi) și flotanți. Flotatoarele pot fi considerate ca zecimale, dar există unele diferențe mari, dintre care una va fi discutată mai târziu.

Cel mai evident lucru pe care îl putem face cu numerele este... matematică! Iată câteva caractere speciale folosite pentru a face matematică în Python:

Cu aceste operațiuni de bază, acum putem lucra cu câteva scenarii.

Scenariul 1

Echipa dvs. de conținut a raportat că blogul a generat 80.000 de afișări de pagină în urmă cu două săptămâni, iar săptămâna aceasta a generat 105.000 de afișări de pagină; care este creșterea săptămânală a afișărilor de pagină? Amintiți-vă că pentru a calcula modificarea procentuală pe care o puteți face (Număr nou – Număr vechi) ÷ Număr vechi:

Ei bine, asta nu pare tocmai corect. De ce nu? Ca orice matematician bun, Python a urmat ordinea operațiilor din enunțul pe care l-am tastat. Aici putem folosi paranteze pentru a spune lui Python ordinea pe care o dorim cu adevărat:

Asa e mai bine. Amintiți-vă, ne uităm la un procent, așa că în acest caz, mutarea zecimalei cu două locuri la dreapta ne va oferi ceea ce avem nevoie. Se pare că traficul către blog a crescut cu 31,25% de la o săptămână la alta.

Scenariul 2

Lucrați cu un editor online pentru a derula o campanie specială care include bannere de format mare și anunțuri video. Editorul a trimis o propunere în care afirmă că pachetul are un cost fix de 15.000 USD și se așteaptă ca acesta să genereze 550.000 de afișări; ați dori să calculați CPM pentru a compara mai bine această propunere cu alte opțiuni.

Pentru a găsi CPM-ul, folosim formula Costul campaniei ÷ (Total afișări ÷ 1000):

De data aceasta, ordinea operațiunilor este corectă; se pare că suma CPM pentru campanie este de aproximativ 27,27 USD.

Folosirea Python în acest fel este cu adevărat plictisitoare, mai ales când tastați formule lungi returnează doar o singură măsurătoare. Deși aceste exemple sunt simpliste, există modalități de a aplica operații matematice mai complicate la sute de mii (sau chiar milioane) de rânduri de date.

Versiunile mai vechi de Python (versiunea 2.7 și versiunile anterioare) dau câteva răspunsuri ciudate atunci când vine vorba de împărțirea numerelor întregi care ar avea ca rezultat un float, cum ar fi împărțirea 1 ÷ 3. În aceste două exemple, am împărțit numerele întregi și am terminat cu float. fără probleme, ceea ce face parte din magia utilizării unei versiuni mai noi de Python. Se pune întrebarea: de ce numerele cu virgulă zecimală se numesc mai degrabă flotoare decât zecimale? Jackie Kazil și Katharine Jarmul au un exemplu grozav în cartea lor, Data Wrangling With Python : în multe limbaje de programare, 0.1 + 0.2 nu este egal cu 0.3. Încercați-l singur: introduceți 0.3 în terminal, apoi urmați-l cu 0.1 + 0.2

Ciudat, nu? Mark Lutz aprofundează mai mult despre această ciudățenie în cartea sa, Learning Python , dar, din moment ce specialiștii în marketing nu au de obicei nevoie să calculeze numerele la un milion de grad, nu este esențial să înțelegem pe deplin această problemă și este suficient de bun să știm pur și simplu că există. Dar dacă ești curios, iată câteva postări care explică mai multe:

  • Demistificare în virgulă flotantă, partea 1
  • Demistificare în virgulă flotantă, partea a 2-a

Siruri de caractere

Șirurile pot fi considerate ca caractere cuprinse între ghilimele. Aceasta este o definiție extrem de simplificată, deoarece ignoră nuanțele dintre bytearrays, Unicode, ASCII etc., dar cred că a intra în acest tip de detaliu este inutilă deocamdată.

Cum se introduc corect caracterele cuprinse între ghilimele? Se pare că există mai mult de câteva moduri diferite. De exemplu, de cele mai multe ori nu contează dacă utilizați ghilimele simple sau duble, atâta timp cât rămâneți consecvent:

Începând cu ghilimele duble în al treilea șir și terminând cu ghilimele simple, am întâlnit o eroare. Probabil că nu ați amesteca ghilimele simple și duble intenționat, dar un lucru la care trebuie să aveți grijă este apostrofele:

Observați că primul șir, care a fost cuprins între ghilimele duble, a gestionat bine apostroful, în timp ce al doilea șir nu. De ce? Odată ce Python a întâlnit al doilea ghilimele simple, se aștepta ca șirul să se termine, dar literele au continuat să meargă. Tăierea propoziției reduce eroarea la tăcere:

Dar a avea doar o parte dintr-o propoziție nu este util. Dacă într-adevăr doriți să folosiți ghilimele simple, o opțiune este să „scăpați” de apostrof. Acest lucru se poate face plasând o bară oblică inversă (\) imediat înaintea apostrofului din propoziție. Aceasta îi spune lui Python să trateze următorul caracter într-un mod special:

Scăparea de apostrof ne-a permis să continuăm să folosim ghilimele simple și un apostrof în același șir.

Există o altă modalitate prin care puteți crea șiruri de caractere în Python: ghilimele triple. Observați că atunci când introduceți un șir cu mai multe linii, trebuie să apăsați enter pentru a începe următoarea linie; aceasta schimbă și Terminalul pentru a afișa …: în stânga noii linii. Acesta va apărea din nou când începem să introducem mai multe linii de cod.

În cele din urmă, s-ar putea să observați câteva caractere funky în șir: \n. Aceasta îi spune computerului unde ați introdus o nouă linie; este util dacă trebuie să imprimați din nou șirul și doriți să fiți precis cu privire la formatare.

Ok, acum că am petrecut tot timpul ăsta privind cum să introducem corect un șir (știu, nu? Atât de multă muncă pentru ceva atât de simplu...), este timpul să trecem la partea distractivă: manipularea șirurilor.

Există multe, multe mai multe metode pentru șiruri; Există, de asemenea, alte subiecte, cum ar fi potrivirea modelelor și tăierea pe care le vom aborda mai târziu. Cu elementele de bază din drum, să lucrăm printr-un exemplu real.

Scenariul 1

Să presupunem că aveți o copie nouă care trebuie încărcată în AdWords, dar toată copia este scrisă cu litere mici și nu sunteți sigur dacă titlurile se încadrează în limita de 30 de caractere. Să verificăm lungimea și să tipărim titlul „Cele mai ieftine zboruri către Paris” în cazul titlului:

Primul exemplu este din punct de vedere tehnic o funcție, în timp ce al doilea este o metodă. Singurul lucru la care ne pasă în acest moment este că fiecare este introdus diferit: cu o funcție scriem mai întâi „len(”, apoi șirul în sine și, în final, ultima paranteză „)”. Vestea bună este că titlul se încadrează în limita de 30 de caractere impusă de AdWords.

Apoi, cu metoda, introducem mai întâi șirul, apoi adăugăm .title() după ghilimele de închidere (fără spații!).

În cele din urmă, s-ar putea să vă întrebați „De ce fac asta în Python când aceleași formule sunt disponibile în Excel?” Acesta este un punct corect.

Deși jocul cu titlurile este un exemplu prostesc, sper că ideea este clară: există multe opțiuni disponibile pentru a manipula textul cu Python. Și similar cu scenariul anterior cu calcularea CPM-urilor sau a modificării procentuale, posibilitatea de a manipula mii de caractere de text în doar câteva rânduri de cod este un instrument foarte puternic de avut la îndemână.

De exemplu, cea mai mare durere de cap pe care m-a salvat este curățarea milioanelor de rânduri de adrese URL din Google Analytics. Al doilea punct al acestui exercițiu este de a sublinia ceva care ar putea salva alte dureri în viitor: dacă știi să folosești formule în Excel sau Google Docs, ești deja cu un pas înainte în înțelegerea modului de programare. Există o mulțime de asemănări care se vor traduce din Excel în Python.

booleene

Cele două valori booleene principale din Python sunt True și False. Semnificația lor este cu adevărat directă: Adevărat înseamnă adevărat și Fals înseamnă fals.

Până când ne scufundăm în utilizarea logicii în Python, cel mai bine este să explicăm booleanele printr-o analogie. Când creați o campanie de anunțuri video pe Facebook, trebuie să decideți ce reclamă să utilizați. Ar trebui să fie noul videoclip modern care are ca scop conștientizarea mărcii sau ar trebui să rămâneți cu videoclipul vechi, dar testat în luptă, care are un îndemn clar la acțiune? Depinde de ceea ce încerci să realizezi, nu? În mod similar, va fi un punct în care va trebui să creați o logică pentru a spune computerului care cale să urmeze, iar booleanele sunt o modalitate de a îndeplini această sarcină.

Există și alte obiecte în Python care pot acționa ca booleeni, dar deocamdată doar introducerea Adevărat și Fals va fi suficientă. Vom trata acest subiect mai în profunzime cu o postare viitoare.

Și ce dacă?

La începutul acestei postări, am menționat că atunci când am încercat prima dată să învăț despre tipurile de date, procesul a fost plictisitor și subiectul plictisitor. La fel ca adolescentul nerăbdător de la ora de geometrie de la liceu care induce un profesor cu întrebarea: „Când voi avea vreodată nevoie să cunosc acest prost inutil?”

Am simțit că parcurgerea tuturor acestor Reguli despre tipurile de date nu are sens. Dar am ajuns să apreciez regulile pentru că atunci când încerci să încalci aceste Reguli (de cele mai multe ori), va apărea o eroare. Dacă sunteți un programator responsabil și testați codul din timp, întâlnirea cu aceste erori vă poate scuti de a face greșeli critice în codul dvs. atunci când este cu adevărat important. Să explorăm câteva moduri în care erorile pot apărea.

În scenariile în care ați exersat matematica cu tipuri de numere, ați observat că nu au fost folosite virgule atunci când faceți aceste calcule? Probabil că ești obișnuit să tastezi numere cu virgule (sau zecimale pentru prietenii noștri europeni!), dar dacă încerci asta în Python, vei întâlni un comportament ciudat:

Hmmm; deloc ceea ce te asteptai. Punând o virgulă în acest număr, am creat fără să știm un „tuplu”; nu este necesar să știți ce este un tuplu în acest moment, dar este important să vedeți că virgula împarte numărul în 500 și 0, care este mult diferit de cinci sute de mii.

Acest exemplu evidențiază, de asemenea, un aspect crucial al scrierii codului: doar un singur caracter greșit poate cauza mari probleme. Corectarea codului este dificilă la început, dar cu practică, te vei îmbunătăți. Rezultatele sau erorile neașteptate nu sunt deloc de panicat; se poate simți înfricoșător, dar de obicei înseamnă doar că s-a pierdut ceva în traducere.

O regulă la care te-ai aștepta probabil este că atunci când încerci să adaugi un număr întreg și un șir, vei primi o eroare:

Și ai avea dreptate. În a doua linie de cod am încercat să adăugăm întregul 1 la șirul „1”, ceea ce a dus la o eroare. S-ar putea să vă gândiți în sinea dvs. „Acesta este un exemplu slab; când ar încerca cineva să adauge un număr întreg unui șir?” Ai fi surprins câte API-uri returnează numere ca șir. Există motive foarte bune pentru a face acest lucru, dar atunci când aveți de-a face cu un API, presupunerea că un număr va fi un număr nu este un pariu sigur. Un exemplu excelent este cel mai nou API de raportare Google Analytics. Aruncați o privire la captura de ecran cu datele pe care vi le oferă Google Analytics atunci când solicitați un raport. Surprinde! Toate numerele (uitați-vă la câmpurile „valori”) sunt cuprinse între ghilimele.

Asta aruncă o cheie în lucruri, nu-i așa? Ar fi, dar dacă citiți documentația API din timp, vă veți aștepta la această problemă. Din fericire, există și câteva instrumente în Python care ne pot ajuta, cum ar fi funcția int():

Prin plasarea șirului „1” în interiorul funcției int(), îi spunem lui Python că vrem să tratăm acest lucru ca un număr întreg; acum puteți adăuga aceste numere și puteți continua cu viața.

Acestea sunt doar câteva posibilități despre modul în care tipurile de date pot determina ce puteți face în Python, dar demonstrează, de asemenea, că există aproape întotdeauna o modalitate de a rezolva aceste probleme. Vă rugăm să mă contactați pe twitter dacă aveți întrebări despre tipurile de date.