Documente Academic
Documente Profesional
Documente Cultură
Funcțiile și metodele Python sunt extrem de utile: putem utiliza, practic, codul altor
persoane pentru a ne rezolva propriile probleme. Cu toate acestea, adăugarea tuturor
funcțiilor și metodelor care au fost scrise până acum la aceeași distribuție Python ar fi
imposibilă.
Ar fi foarte mult cod pe care nu-l vom folosi niciodată. De asemenea, mentenanta
întregului cod ar fi extrem de dificilă. Aici intră în joc librăriile. Ne putem gândi la librării
ca la un director de scripturi Python.
Fiecare astfel de script este un așa-numit modul. Aceste module specifică funcții,
metode și noi tipuri de date Python care vizează rezolvarea unor probleme specifice.
Există mii de librării Python disponibile pe internet. Printre acestea se numără: NumPy
(potrivit pentru a lucra eficient cu array-uri), Matplotlib (pentru vizualizarea datelor) și
Scikit-learn (pentru machine learning). Nu toate aceste librării sunt disponibile în Python
în mod implicit.
Instalarea Librariilor
Pentru a utiliza librăriile Python, va trebui mai întâi să le instalam și apoi să apelăm
module din librării în script pentru a-i spune lui Python că dorim să utilizăm librăriile
date.
Importarea librariilor
Înainte de a putea face acest lucru, ar trebui să importăm librăria sau un anumit modul
al librăriei. Pentru a importa întregul pachet NumPy, putem face import NumPy, astfel:
O funcție folosită în mod obișnuit în NumPy este array. Este nevoie de o listă ca input.
Simpla apelare a funcției array în acest fel va genera o eroare. Funcția array este foarte
utilă pentru data science. Putem, de asemenea, să importăm întreaga librărie.
Acum, în loc de numpy.array([ ]), va trebui să scriem np.array([ ]) pentru a utiliza funcția
de array NumPy. Există cazuri în care avem nevoie doar de o funcție specifică a unei
librării.
De data aceasta, putem apela pur și simplu funcția array în acest fel, nu este nevoie să
utilizăm punctul NumPy aici. Versiunea de import pentru a utilizarea anumitor părți ale
unei librării poate fi utilă pentru a limita cantitatea de cod, dar pierdem și o parte din
context.
Să presupunem că lucrăm într-un script Python lung. Importam funcția array() din
NumPy în partea de sus, iar mai târziu, utilizăm această funcție array(). Altcineva care
ne citește codul ar fi uitat că această funcție array() este o funcție specifică NumPy - nu
este clar din apelarea funcției.
În acest sens, este de preferat apelarea cu NumPy standard: în acest caz, funcția
apelată este numpy.array([ ]), devine foarte clar că lucrăm cu NumPy.
Recapitulare liste
Listele Python sunt importante. O listă poate conține orice tip de date și poate conține
diferite tipuri în același timp. De asemenea, putem modifica, adăuga și elimina
elemente. Acest lucru este util, dar lipsește o caracteristică, o caracteristică foarte
importantă.
Când analizam datele, vom dori adesea să efectuam operațiuni pe întregi colecții de
date in mod rapid. Pentru liste, aceasta este o problemă.
Dacă vrem să calculați indicele de masă corporală BMI pentru fiecare membru, vom
întâmpina o eroare, deoarece Python nu știe cum să facă calcule pe liste întregi.
Am putea rezolva acest lucru trecând prin fiecare element al listei unul după altul și
calculând BMI-ul pentru fiecare persoană separat, dar acest lucru este ineficient.
O soluție mult mai elegantă este utilizarea NumPy sau Numeric Python. Este o librărie
Python care, printre altele, oferă o alternativă la lista obișnuită Python: array-ul NumPy.
Array-ul NumPy este destul de similar cu lista, dar are o caracteristică suplimentară:
putem efectua calcule pe întregul array. Este foarte ușor și, de asemenea, foarte rapid.
BMI-ul primei persoane a fost calculat împărțind primul element în np_weight la pătratul
primului element în np_height, BMI-ul celei de-a doua persoane a fost calculat cu al
doilea element înălțime și greutate și așa mai departe.
Totuși, ar trebui să fim atenți. În primul rând, NumPy poate face toate acestea atât de
ușor, deoarece presupune că array-ul dvs. NumPy poate conține doar valori de un
singur tip. Este fie un array de numere float, fie de valori booleene și așa mai departe.
Dacă efectuam operatia python_list + python_list, elementele listei sunt lipite împreună,
generând o listă cu 6 elemente.
Dacă faceți acest lucru cu array-urile NumPy, pe de altă parte, Python va face o sumă
în funcție de elementele din array.
Ne asigurăm ca acordăm atenție atunci când jonglam cu diferite tipuri de date Python,
deoarece rezultatele pot diferi foarte mult.
Extragerea datelor NumPy
Putem lucra cu array NumPy aproape la fel ca și cu listele Python obișnuite. Când
dorim să extragem elemente din array, de exemplu, putem utiliza paranteze patrate.
Să presupunem că dorim să obținem toate valorile BMI din array care sunt peste 23. Un
prim pas este utilizarea semnului mai mare, astfel:
Rezultatul este un array NumPy care conține valori booleene: True dacă BMI-ul
corespunzător este peste 23, False dacă este mai mic. În continuare, putem utiliza
acest array boolean între paranteze pătrate pentru a face extragerea.
Sunt selectate numai elementele din BMI care sunt peste 23, deci pentru care valoarea
booleană corespunzătoare este True. Există un singur BMI care este peste 23, așa că
obținem un array NumPy cu o singură valoare, acel BMI specific.
Dacă dorim să stabilim tipul acestor array-uri, Python le prezintă ca fiind numpy.ndarray.
Numpy ne spune că este un tip de date care a fost definit în librăria NumPy. ndarray
reprezintă un array cu n dimensiuni.
Array-urile np_height și np_weight sunt array-uri unidimensionale, dar este posibil să se
creeze array-uri bidimensionale, tridimensionale, chiar și cu șapte dimensiuni.
Putem crea un array NumPy 2D dintr-o listă obișnuită de liste Python. Să încercăm să
creăm un singur array NumPy pentru toate datele de înălțime și greutate din listele
weight si height astfel:
Dacă printam în consolă np_2d acum, vom observa că este o structură de date
dreptunghiulară: Fiecare sublistă din listă corespunde unui rând din tabloul Numpy
bidimensional.
Shape este un așa-numit atribut al matricei np_2d, care ne oferă mai multe informații
despre cum arată structura de date. De asemenea, pentru array-urile 2D se aplică
regula NumPy: un array poate conține doar un singur tip de date.
Dacă schimbăm un număr float în string, toate elementele array-ului vor fi forțate în
string-uri, pentru a ajunge la un array omogen.
Să presupunem că dorim sa extragem primul rând și apoi al treilea element din acel
rând. Pentru a selecta rândul, apelăm indexul 0 între paranteze drepte. Nu uităm că
indexarea începe de la zero. Pentru a selecta apoi al treilea element, putem extinde
aceeași apelare cu o altă pereche de paranteze, de data aceasta cu indexul 2.
Practic, selectam rândul, apoi din acel rând faceți o altă selecție. Există, de asemenea,
o modalitate alternativă de extragere, folosind paranteze pătrate simple și virgulă.
Apelarea returnează exact aceeași valoare ca înainte.
Selectam doar al doilea rând, cu 1 înainte de virgulă. Vrem toate coloanele, așa că
folosim două puncte după virgulă. Intersecția ne oferă întregul rând doi. În cele din
urmă, array-urile NumPy 2D ne permit să facem calcule în funcție de elemente, în
același mod în care am făcut-o cu array-urile NumPy liniare (unidimensionale).