In [1]:
# Kao što smo već rekli reč je o više dimenzionom nizu, mada može biti i jednodimenzioni
# možemo ga dobiti na sledeće načine

from pandas import DataFrame 
import numpy as np

# koristeći n-dimenzioni NumPy niz odnosno matricu

narray = np.random.randn(15).reshape(5,3) # generišemo 15 brojeva koji su normalno raspodeljeni
df1 = DataFrame(narray)                   # a potom od njih napravimo matricu dimezija 5x3
df1.columns = ['kolona 1', 'kolona 2', 'kolona 3'] # ovo je jedan od načina da se kolonama daju nazivi
print(df1)
   kolona 1  kolona 2  kolona 3
0  0.992207 -0.606548 -0.261084
1 -0.934747  0.818885  1.702639
2  0.043590 -0.820598  1.367078
3  1.126493 -1.294300 -2.056009
4  0.060602 -1.307436 -0.909135
In [2]:
# Takođe možemo "proviriti" kako izgledaju prvi elementi naredbom .head()
df1.head(3)
Out[2]:
kolona 1 kolona 2 kolona 3
0 0.992207 -0.606548 -0.261084
1 -0.934747 0.818885 1.702639
2 0.043590 -0.820598 1.367078
In [3]:
# Sada ćemo pomoću Python dictionary-ija napraviti jedan DataFrame.
# ovaj DataFrame će predstavljati spisak kupljenih namirnica.
# za svaku kupovinu beležićemo ime kupca, proizvod koji je kupio, jediničnu cenu tog proizvoda 
# i količinu proizvoda koja je kupljena
kupovina_1 = {'ime':'Pera',
              'proizvod': 'hleb',
              'cena' : 50,
              'kolicina': 1}

kupovina_2 = {'ime':'Zika',
              'proizvod': 'mleko',
              'cena' : 50,
              'kolicina': 2}

kupovina_3 = {'ime':'Laza',
              'proizvod': 'kafa',
              'cena' : 200,
              'kolicina': 3}

df2 = DataFrame([kupovina_1, kupovina_2, kupovina_3], columns = ['ime', 'proizvod', 'cena', 'kolicina'],
                index = ['Pekara', 'Maxi', 'Maxi'])
print()
print(df2)
         ime proizvod  cena  kolicina
Pekara  Pera     hleb    50         1
Maxi    Zika    mleko    50         2
Maxi    Laza     kafa   200         3
In [4]:
# df2 je jako zgodan primer da pikažemo rad sa DataFrame-om

# prvo ćemo ispisati tipove podataka koje smo koristili u df2
print('Tip strukture df2 je: ', type(df2))
Tip strukture df2 je:  <class 'pandas.core.frame.DataFrame'>
In [5]:
# indekse DataFrame-a dobijamo na sedeći način : DataFrame_name.index
indeksi = df2.index
print(indeksi)
Index(['Pekara', 'Maxi', 'Maxi'], dtype='object')
In [ ]:
# vrednosti u DataFrame-u dobijamo na sedeći način: ime_DataFramea.values
print()
vrednosti = df2.values 
print(vrednosti)
print('Vrednosti se smestaju u ndarray - ',type(vrednosti))
In [7]:
# Kako pristupiti elementima podatka tipa DataFrame?
# dobijanje konkretnog podatka iz DataFrame-a se može učiniti koristeći iloc i loc
# dakle to se čini naredbom ime_DataFramea.loc['naziv vrste']
df2.loc['Maxi']
# biće ispisane dve kolone pošto u df2 postoje dve kolone koje nose naziv Maxi
Out[7]:
ime proizvod cena kolicina
Maxi Zika mleko 50 2
Maxi Laza kafa 200 3
In [9]:
# ukoliko želimo da dobijemo sadržaj DataFrame-a koristeći indeks:
df2.iloc[1]
# dobijamo drugi red iz df2
Out[9]:
ime          Zika
proizvod    mleko
cena           50
kolicina        2
Name: Maxi, dtype: object
In [10]:
# dobijamo sve vrednosti iz prvog reda df1
df1.iloc[0]
Out[10]:
kolona 1    0.992207
kolona 2   -0.606548
kolona 3   -0.261084
Name: 0, dtype: float64
In [11]:
# primetimo da iloc prihvata strogo indekse u brojnoj vrednosti dok loc može da primi i indekse tipa 'str' i indekse
# tipa 'int' ukoliko su tako definisani

print(df2.iloc[2])

print('\n',df2.loc['Maxi']) # Ispisivaće se svi redovi koji su indeksirani kao 'Maxi', a u df2 postoje dva takva
ime         Laza
proizvod    kafa
cena         200
kolicina       3
Name: Maxi, dtype: object

        ime proizvod  cena  kolicina
Maxi  Zika    mleko    50         2
Maxi  Laza     kafa   200         3
In [12]:
# ukoliko želimo da vidimo samo imena ljudi koji su kupovali u Maxiju:
df2.loc['Maxi']['ime']
Out[12]:
Maxi    Zika
Maxi    Laza
Name: ime, dtype: object
In [13]:
# međutim, pisanje koda na način da se često pojavljuje [], kao u prethodom primeru, nije dobra praksa i trebalo bi izbegavti
# alternativno možemo napisati na sledeći način
df2.loc[['Maxi'],['ime']]
Out[13]:
ime
Maxi Zika
Maxi Laza