Uvod u Python Pandas

Treći deo

Odabir podskupova podataka iz DataFrame-a

Vrednostima u tabeli možemo pristupati preko indeksa, naziva kolona i određenih uslova. Takođe možemo vršiti selekciju podataka na osnovu postavljenih uslova.

In [1]:
import pandas as pd
df1 = pd.read_csv('../datasets/sample_data.csv', index_col=0)
df1
Out[1]:
state color food age height score
Jane NY blue Steak 30 165 4.6
Niko TX green Lamb 2 70 8.3
Aaron FL red Mango 12 120 9.0
Penelope AL white Apple 4 80 3.3
Dean AK gray Cheese 32 180 1.8
Christina TX black Melon 33 172 9.5
Cornelia TX red Beans 69 150 2.2

Pristup preko [ ], loc, iloc

  • Selektovanje jedne kolone iz DataFrame-a - Series

Da biste izabrali jednu kolonu iz DataFrame-a, prosledite ime jedne od kolona operatoru zagrada, []. Vraćeni objekat će biti Series (niz podataka).

In [2]:
df1['height']
Out[2]:
Jane         165
Niko          70
Aaron        120
Penelope      80
Dean         180
Christina    172
Cornelia     150
Name: height, dtype: int64

Možete da izaberete više kolona tako što ćete ih postaviti u listu unutar zagrada. Primetite da se vraća DataFrame, a Series.

In [3]:
df1[['age', 'height']]
Out[3]:
age height
Jane 30 165
Niko 2 70
Aaron 12 120
Penelope 4 80
Dean 32 180
Christina 33 172
Cornelia 69 150
In [4]:
df1[['height','age']] #može se menjati redosled kolona
Out[4]:
height age
Jane 165 30
Niko 70 2
Aaron 120 12
Penelope 80 4
Dean 180 32
Christina 172 33
Cornelia 150 69
In [5]:
lista = ['height', 'age','score']
df1[lista]
Out[5]:
height age score
Jane 165 30 4.6
Niko 70 2 8.3
Aaron 120 12 9.0
Penelope 80 4 3.3
Dean 180 32 1.8
Christina 172 33 9.5
Cornelia 150 69 2.2

Vežbe

Za sledeće vežbe, koristite skup podataka IMDB-Movie-Data.csv sa skupom naslova kao indeksom (Title).
Dobra praksa je da skratite svoj izlaz metodom head().

Vežba 1

Izaberite kolonu Director kao Series

In [ ]:
 
In [ ]:
 
In [ ]:
 

Vežba 2

Izaberite kolonu Director i Rating.

In [ ]:
 
In [ ]:
 

Vežba 3

Izaberite jednu kolonu kao DataFrame, a ne Series.

In [ ]:
 
In [ ]:
 

Pristup preko loc

  • Koristeći metodu loc možemo da pristupamo redovima tabele, kao i pojedinačnim ćelijama tabele. loc prvenstveno bira podatke prema oznaci redova i kolona.
In [6]:
# Učitavanje podataka
import pandas as pd
df = pd.read_csv('../datasets/sample_data.csv', index_col=0)
df
Out[6]:
state color food age height score
Jane NY blue Steak 30 165 4.6
Niko TX green Lamb 2 70 8.3
Aaron FL red Mango 12 120 9.0
Penelope AL white Apple 4 80 3.3
Dean AK gray Cheese 32 180 1.8
Christina TX black Melon 33 172 9.5
Cornelia TX red Beans 69 150 2.2
In [7]:
# Selektovanje tri reda i dve kolone sa lok
rows = ['Penelope','Dean','Christina' ]
cols = ['age', 'height']
df.loc[rows, cols]
Out[7]:
age height
Penelope 4 80
Dean 32 180
Christina 33 172
In [8]:
# Selektovanje dva reda i jedne kolone
rows = ['Dean','Christina' ]
cols = 'height'
df.loc[rows, cols]
Out[8]:
Dean         180
Christina    172
Name: height, dtype: int64
In [9]:
# Selektovanje više redova
cols = ['age', 'height']
df.loc['Jane':'Dean', cols]
Out[9]:
age height
Jane 30 165
Niko 2 70
Aaron 12 120
Penelope 4 80
Dean 32 180
In [10]:
# Selektovanje više redova
cols = ['age', 'height']
df.loc[:'Dean', cols]
Out[10]:
age height
Jane 30 165
Niko 2 70
Aaron 12 120
Penelope 4 80
Dean 32 180
In [11]:
# Selektovanje svih redova
cols = ['age', 'height']
df.loc[:, cols]
Out[11]:
age height
Jane 30 165
Niko 2 70
Aaron 12 120
Penelope 4 80
Dean 32 180
Christina 33 172
Cornelia 69 150
In [12]:
rows = ['Penelope','Cornelia']
df.loc[rows, :]
Out[12]:
state color food age height score
Penelope AL white Apple 4 80 3.3
Cornelia TX red Beans 69 150 2.2
In [13]:
# Izaberite jedan red kao seriju sa lok
df.loc['Dean']
Out[13]:
state         AK
color       gray
food      Cheese
age           32
height       180
score        1.8
Name: Dean, dtype: object
In [14]:
df.loc['Dean', 'height']
Out[14]:
180

Vežba 4

Pročitajte skup podataka filma IMDB-Movie-Data.csv i postavite kolonu naslova (Title) kao indeks. Izaberite sve kolone za film 'The Intouchables'.

In [ ]:
 
In [ ]:
 

Vežba 5

Izaberite sve kolone za filmove 'The Intouchables' i 'Steve Jobs'

In [ ]:
 

Vežba 6

Koje godine su snimljeni 'The Intouchables' i 'Steve Jobs' i koji je njihov rejting?

In [ ]:
 

Pristup preko iloc

  • Upotreba metode iloc je sličana loc, ali koristi samo celobrojnu lokaciju da bi se izvršila selekcija.

    df.iloc[redovi, kolone]

In [15]:
# Učitavanje podataka
import pandas as pd
df = pd.read_csv('../datasets/sample_data.csv')
df
Out[15]:
Unnamed: 0 state color food age height score
0 Jane NY blue Steak 30 165 4.6
1 Niko TX green Lamb 2 70 8.3
2 Aaron FL red Mango 12 120 9.0
3 Penelope AL white Apple 4 80 3.3
4 Dean AK gray Cheese 32 180 1.8
5 Christina TX black Melon 33 172 9.5
6 Cornelia TX red Beans 69 150 2.2
In [16]:
df.iloc[5]
Out[16]:
Unnamed: 0    Christina
state                TX
color             black
food              Melon
age                  33
height              172
score               9.5
Name: 5, dtype: object
In [17]:
rows = [2, 4]
cols = [0, -1]
df.iloc[rows, cols]
Out[17]:
Unnamed: 0 score
2 Aaron 9.0
4 Dean 1.8
In [18]:
cols = [4, 2]
df.iloc[2:4, cols]
Out[18]:
age color
2 12 red
3 4 white
In [19]:
rows = [5, 2, 4]
df.iloc[rows, 4:]
Out[19]:
age height score
5 33 172 9.5
2 12 120 9.0
4 32 180 1.8
In [20]:
rows = [3, 2]
df.iloc[rows]
# df.iloc[rows, :]
Out[20]:
Unnamed: 0 state color food age height score
3 Penelope AL white Apple 4 80 3.3
2 Aaron FL red Mango 12 120 9.0
In [21]:
df.iloc[rows, :]
Out[21]:
Unnamed: 0 state color food age height score
3 Penelope AL white Apple 4 80 3.3
2 Aaron FL red Mango 12 120 9.0
In [22]:
cols = [1, 5]
df.iloc[:, cols]
Out[22]:
state height
0 NY 165
1 TX 70
2 FL 120
3 AL 80
4 AK 180
5 TX 172
6 TX 150
In [23]:
rows = [2, 3, 5]
cols = 4
df.iloc[rows, cols]
Out[23]:
2    12
3     4
5    33
Name: age, dtype: int64
In [24]:
rows = [2, 3, 5]
cols = [4]
df.iloc[rows, cols]
Out[24]:
age
2 12
3 4
5 33

Vežba 7

Iz Data Frame-a dfM izaberite kolone sa celobrojnom lokacijom 7, 3 i 1

In [ ]:
 

Vežba 8

Izaberite redove sa celobrojnom lokacijom od 100 do 104 zajedno sa celobrojnom lokacijom kolone 5.

In [ ]: