Panda je izuzetno popularna biblioteka za analizu podataka u Python programskom jeziku. Koriste je u velikoj meri analitičari podataka, data naučnici i inženjeri mašinskog učenja.
Pored NumPy-a, ona je jedna od ključnih biblioteka i alata koje svaki profesionalac u domenu obrade podataka i veštačke inteligencije mora da poznaje.
U ovom članku, istražićemo detaljnije Pandas i osobine koje su je učinile tako omiljenom u svetu obrade podataka.
Šta je Pandas?
Pandas je biblioteka namenjena analizi podataka u Pythonu. To praktično znači da se koristi za manipulisanje i rad sa podacima direktno iz Python koda. Pomoću Pandas-a, možete efikasno učitavati, obrađivati, vizualizovati, analizirati i skladištiti podatke.
Naziv ‘Pandas’ nastao je spajanjem reči Panel Data, što je ekonometrijski termin koji se odnosi na podatke prikupljene posmatranjem više entiteta tokom vremena. Pandas je inicijalno objavio Ves Kini januara 2008. godine, i od tada je stekla status najpopularnije biblioteke u svojoj oblasti.
Srž Pandas biblioteke čine dve osnovne strukture podataka sa kojima je neophodno upoznati se: DataFrame (okvir podataka) i Series (serija). Kada kreirate ili učitavate set podataka u Pandas, on se predstavlja pomoću jedne od ove dve strukture.
U sledećem odeljku, detaljnije ćemo istražiti šta su ove strukture, po čemu se razlikuju, i kada je koja od njih najpogodnija za upotrebu.
Ključne strukture podataka
Kao što je prethodno pomenuto, svi podaci u Pandas biblioteci se predstavljaju pomoću jedne od dve strukture podataka: DataFrame (okvir podataka) ili Series (serija). Ove dve strukture su detaljno objašnjene u nastavku.
Okvir podataka (DataFrame)
Ovaj primer DataFrame-a je kreiran korišćenjem isečka koda koji se nalazi na dnu ovog odeljka.
DataFrame u Pandas-u je dvodimenzionalna struktura podataka koja se sastoji od kolona i redova. Sličan je tabeli u aplikaciji za tabelarne proračune ili tabeli u relacionoj bazi podataka.
Sastoji se od kolona, gde svaka kolona predstavlja atribut ili karakteristiku u vašem skupu podataka. Ove kolone su dalje sačinjene od pojedinačnih vrednosti. Ova lista ili serija pojedinačnih vrednosti se predstavlja kao objekat tipa Series. O strukturi Series ćemo detaljnije govoriti kasnije u ovom članku.
Kolone u okviru podataka mogu imati opisna imena koja ih razlikuju. Ova imena se dodeljuju prilikom kreiranja ili učitavanja DataFrame-a, ali se mogu lako promeniti u bilo kom trenutku.
Vrednosti u jednoj koloni moraju biti istog tipa podataka, dok kolone u okviru istog DataFrame-a ne moraju da budu istog tipa. To znači da će kolona sa imenima u skupu podataka sadržati isključivo stringove, dok druga kolona, recimo sa godinama, može sadržati cele brojeve (int).
DataFrame takođe ima indeks koji se koristi za referenciranje redova. Vrednosti iz različitih kolona, ali sa istim indeksom, čine jedan red. Po defaultu, indeksi su numerički, ali se mogu promeniti tako da odgovaraju skupu podataka. U primeru (na slici iznad, kod ispod), podesili smo kolonu „meseci“ kao kolonu indeksa.
import pandas as pd sales_df = pd.DataFrame({ 'Month': ['January', 'February', 'March'], 'Jane Doe': [5000, 6000, 5500], 'John Doe': [4500, 6700, 6000] }) sales_df.set_index(['Month'], inplace=True) print(sales_df)
Serija (Series)
Ova serija je kreirana pomoću koda koji se nalazi na dnu ovog odeljka.
Kao što je ranije pomenuto, serija (Series) se koristi za predstavljanje jedne kolone podataka u Pandas-u. Dakle, serija je jednodimenzionalna struktura podataka. Ovo je u suprotnosti sa DataFrame-om koji je dvodimenzionalan.
Iako se serija obično koristi kao kolona u DataFrame-u, ona takođe može predstavljati kompletan set podataka za sebe, pod uslovom da set podataka sadrži samo jedan atribut koji je zabeležen u jednoj koloni, ili jednostavnije rečeno, set podataka je prosto lista vrednosti.
Pošto je serija samo jedna kolona, ne mora imati ime. Međutim, vrednosti u seriji su indeksirane. Slično indeksu DataFrame-a, indeks serije se može modifikovati u odnosu na podrazumevano numerisanje.
U primeru (na slici iznad, kod ispod), indeks je postavljen na različite mesece korišćenjem metode `set_axis` objekta Pandas serije.
import pandas as pd total_sales = pd.Series([9500, 12700, 11500]) months = ['January', 'February', 'March'] total_sales = total_sales.set_axis(months) print(total_sales)
Karakteristike Pandas biblioteke
Sada kada imate solidnu predstavu o tome šta je Pandas i koje su ključne strukture podataka koje koristi, možemo početi da razgovaramo o karakteristikama koje čine Pandas tako moćnom bibliotekom za analizu podataka i, posledično, izuzetno popularnom u svetu nauke o podacima i mašinskog učenja.
#1. Manipulacija podacima
Objekti tipa DataFrame i Series su promenljivi. Možete dodavati ili uklanjati kolone po potrebi. Pored toga, Pandas vam omogućava da dodajete redove, pa čak i da spajate skupove podataka.
Možete izvršavati numeričke proračune, kao što je normalizacija podataka i pravljenje logičkih poređenja po elementima. Pandas takođe omogućava grupisanje podataka i primenu agregatnih funkcija kao što su srednja vrednost, prosek, maksimum i minimum. Sve ovo čini rad sa podacima u Pandas-u izuzetno jednostavnim.
#2. Čišćenje podataka
Podaci prikupljeni iz stvarnog sveta često sadrže vrednosti koje otežavaju rad sa njima ili nisu idealne za analizu ili upotrebu u modelima mašinskog učenja. Podaci mogu biti pogrešnog tipa, u pogrešnom formatu ili mogu potpuno nedostajati. U svakom slučaju, ovi podaci zahtevaju prethodnu obradu, proces koji se naziva čišćenjem, pre nego što se mogu koristiti.
Pandas nudi funkcionalnosti koje vam pomažu da očistite vaše podatke. Na primer, u Pandas-u možete da brišete duplirane redove, uklanjate kolone ili redove sa nedostajućim podacima i zamenjujete vrednosti podrazumevanim vrednostima ili nekom drugom vrednošću, kao što je srednja vrednost kolone. Postoje i mnoge druge funkcije i biblioteke koje se nadovezuju na Pandas i pružaju vam šire mogućnosti za čišćenje podataka.
#3. Vizuelizacija podataka
Ovaj grafik je generisan pomoću koda koji se nalazi ispod ovog odeljka.
Iako Pandas nije primarno biblioteka za vizualizaciju podataka poput Matplotlib-a, ona ima funkcije za kreiranje osnovnih vizualizacija podataka. Iako su ove vizualizacije osnovne, one u većini slučajeva vrše posao.
Pomoću Pandas-a, možete lako crtati linijske grafikone, histograma, matrice raspršenosti i druge različite tipove grafikona. U kombinaciji sa ostalim mogućnostima za manipulaciju podacima u Python-u, možete kreirati i kompleksnije vizualizacije za bolje razumevanje vaših podataka.
import pandas as pd sales_df = pd.DataFrame({ 'Month': ['January', 'February', 'March'], 'Jane Doe': [5000, 6000, 5500], 'John Doe': [4500, 6700, 6000] }) sales_df.set_index(['Month'], inplace=True) sales_df.plot.line()
#4. Analiza vremenskih serija
Pandas takođe podržava rad sa vremenskim podacima. Kada Pandas detektuje da kolona sadrži vrednosti datuma i vremena, možete izvršiti brojne operacije nad tom kolonom, što je veoma korisno prilikom rada sa vremenskim serijama.
Ovo uključuje grupisanje opservacija prema vremenskom periodu i primenu agregatnih funkcija nad njima, kao što su zbir ili srednja vrednost, ili dobijanje najranijih ili najkasnijih opservacija pomoću funkcija min i max. Naravno, postoji mnogo drugih mogućnosti za rad sa podacima vremenskih serija u Pandas-u.
#5. Ulaz/Izlaz u Pandas-u
Pandas je sposoban da čita podatke iz najčešćih formata za skladištenje podataka. To uključuje JSON, SQL dumpove i CSV datoteke. Takođe, možete pisati podatke u datoteke u mnogim od ovih formata.
Ova sposobnost čitanja i pisanja u različite formate datoteka omogućava Pandas-u da neprimetno sarađuje sa drugim aplikacijama i gradi tokove obrade podataka koji se dobro integrišu sa Pandas-om. Ovo je jedan od razloga zašto mnogi programeri koriste Pandas u širokom obimu.
#6. Integracija sa drugim bibliotekama
Pandas takođe ima bogat ekosistem alata i biblioteka koji su izgrađeni na vrhu kako bi upotpunili njegovu funkcionalnost. To je čini još moćnijom i korisnijom bibliotekom.
Alati u okviru Pandas ekosistema poboljšavaju njegovu funkcionalnost u različitim oblastima, uključujući čišćenje podataka, vizualizaciju, mašinsko učenje, ulaz/izlaz i paralelizaciju. Pandas održava registar takvih alata u svojoj dokumentaciji.
Razmatranja o performansama i efikasnosti u Pandas-u
Iako je Pandas izuzetan u većini operacija, može biti spor u određenim situacijama. Međutim, dobra vest je da možete optimizovati vaš kod i značajno poboljšati brzinu. Da biste to uradili, neophodno je razumeti kako je Pandas izgrađen.
Pandas je izgrađen na vrhu NumPy-a, popularne Python biblioteke za numeričko i naučno računanje. Stoga, kao i NumPy, Pandas radi najefikasnije kada su operacije vektorizovane, umesto da se pojedinačne ćelije ili redovi obrađuju pomoću petlji.
Vektorizacija je oblik paralelizacije gde se ista operacija primenjuje na više tačaka podataka istovremeno. Ovo se naziva SIMD – Single Instruction, Multiple Data. Korišćenjem prednosti vektorizovanih operacija, možete dramatično poboljšati brzinu i performanse Pandas-a.
Pošto ispod haube koriste NumPy nizove, strukture podataka DataFrame i Series su znatno brže od alternativnih rečnika i listi.
Podrazumevana Pandas implementacija radi na samo jednom CPU jezgru. Drugi način za ubrzavanje vašeg koda je korišćenje biblioteka koje omogućavaju Pandas-u da iskoristi sva dostupna CPU jezgra. To uključuje Dask, Vaex, Modin i IPython.
Zajednica i resursi
Kao popularna biblioteka najpopularnijeg programskog jezika, Pandas ima veliku zajednicu korisnika i saradnika. Kao rezultat toga, postoji mnogo resursa koje možete koristiti da naučite kako da ga koristite. Ovo uključuje zvaničnu Pandas dokumentaciju, kao i brojne kurseve, tutorijale i knjige iz kojih možete učiti.
Takođe, postoje i online zajednice na platformama kao što je Reddit u subreditima r/Python i r/DataScience gde možete postavljati pitanja i dobijati odgovore. Budući da je biblioteka otvorenog koda, možete prijavljivati probleme na GitHub-u, pa čak i doprinositi kodu.
Završne reči
Pandas je izuzetno korisna i moćna biblioteka za nauku o podacima. U ovom članku, pokušao sam da objasnim njenu popularnost istražujući karakteristike koje je čine nezamenljivim alatom za naučnike i programere koji se bave podacima.
Sledeći korak bi bio da pogledate kako se kreira Pandas DataFrame.