Slušaj robot čitača

Rad sa podacima u data frame-u

Sadržaj strane:

voće.head(), voće(-1)

voće.tail(), voće.tail(3)

Već smo videli kako možemo konvertovati kolonu u seriju, i to će se desiti onim redosledom kojim su podaci prisutni u dataframe-u. Moguće je proslediti index pri kreiranju serije, i tako promeniti redosled podataka:

voćke = pd.Series (voće.Voće, index=[0,3,5,7,9,1,2,3,4,6,8])
voćke
0 Jabuke
3 Kivi
5 Lubenica
7 Kajsija
9 NaN
1 Maline
2 Banane
3 Kivi
4 Pomoradža
6 Šljiva
8 Borovnica
Name: Voće, dtype: object

Kao što vidite, voćke su sada sortirane prema redosledu koji smo zadali pomoću atributa index. Pošto smo zadali jedan index više nego što je potrebno, to je indexu 9, dodeljena vrednost "NaN"

Pristup određenom podatku -loc

Pomoću komande .loc, od lokacija, možemo pristupiti bilo kom podatku, preko njegovog indexa. Za početak:

voće.loc[3]
Voće Kivi
Boja Zelena
Bobica 1
Name: 3, dtype: object

Odnosno, za samo ime voća:

voće.Voće.loc[3]
'Kivi'

ili, možemo probati i sa voćke iz prethodnog primera:

voćke.loc[3]
'Kivi'

Dodatno, možemo koristiti i .iloc. iloc vraća vrednost na datoj poziciji, umesto na datom indexu, tako da bi .iloc primenjen na dataframe voće dao isti rezultat kao i .loc, ali bi primenjen na seriju voćke, davao dosta drugačije rezultate:

voćke.iloc[4]
nan

Gde kao što smo rekli, NaN ima index 9, ali ima i poziciju 4 nakon našeg preuređenja.

.loc i .iloc možemo koristiti i za slice-ing, odnosno, možemo odseći deo podataka da bismo radili samo s njima:

voće.loc[:3]
Voće Boja Bobica
0 Jabuke Zelena 0
1 Maline Crvena 0
2 Banane Žuta 1
3 Kivi Zelena 1

Filtriranje podataka

Ako recimo hoćemo da vidimo samo ono voće koje spada u bobice, pisaćemo:

voće[voće.Bobica == 1]
Voće Boja Bobica
2 Banane Žuta 1
3 Kivi Zelena 1
4 Pomoradža Narandžasta 1
5 Lubenica Crvena 1
8 Borovnica Plava 1

A možemo vratiti i samo nazive voća koji su bobice:

voće.Voće[voće.Bobica == 1]
2 Banane
3 Kivi
4 Pomoradža
5 Lubenica
8 Borovnica
Name: Voće, dtype: object

Ovakvo filtriranje nazivamo "bulijansko indexiranje"

Poređenje dve kolone

pd.crosstab(voće.Voće, voće.Bobica)
Bobica 0 1
Voće
Banane 0 1
Borovnica 0 1
Jabuke 1 0
Kajsija 1 0
Kivi 0 1
Lubenica 0 1
Maline 1 0
Pomoradža 0 1
Šljiva 1 0

više kolona u kontekstu jedne kolone

voće.groupby(['Voće']).mean()
Bobica
Voće
Banane 1
Borovnica 1
Jabuke 0
Kajsija 0
Kivi 1
Lubenica 1
Maline 0
Pomoradža 1
Šljiva 0

To se ne vidi iz našeg primera, jer imamo samo kolonu Bobica na koju se groupby može primeniti, ali da smo imali veći broj numeričkih kolona, ova komanda bi se primenila i na njih, dok se crosstab primenjuje samo na jednu kolonu.

Crtanje grafika

voće.Bobica.plot()
<AxesSubplot:>
grafički prikaz rasporeda bobica u našoj tabeli

O grafičkom prikazi podataka će kasnije biti više reči. Grafik je zapravo iscrtan pomoću matplotlib modula, ali ga pandas koristi kao dependancy

Ukoliko vam crtanje grafika ne radi ovako samo od sebe, dodajte sledeći kôd pre izvršenja plot komande:

%matplotlib inline
import matplotlib.pyplot as plt

Crtanje histograma

voće.Bobica.hist()
<AxesSubplot:>
grafički prikaz rasporeda bobica u našoj tabeli

Konvertovanje cena u intiger

Cena se u dataframe-u obično čuva kao objekat, jer je obično formatirana tako da sadrži simbol valute, i potencijalno zareze na svake 3 cifre. Da bismo sa takvim podacima mogli da radimo, potrebno nam je da ih prvo konvertujemo u intidžere

voće.Bobica = voće.Bobica.str.replace('[\$\,\.]', '').astype(int)

Članak prvi put objavljen: 27.4.2021.

Poslednje izmene: 31.1.2022.

Autor: k.

Top