Pandas i NumPy biblioteke¶

Sve funkcionalnosti biblioteka možete naći na zvaničnim stranicama: https://pandas.pydata.org i https://numpy.org

In [ ]:
import pandas as pd
import numpy as np

NumPy¶

NumPy biblioteka olakšava rad sa nizovima, matricama i numeričkim izračunavanjima.

In [ ]:
a = np.array([1, 2, 3])
M = np.array([[1, 2, 3], [4, 5, 6]], dtype='float32')

print('Niz a:')
print(a)
print('shape =', a.shape)
print('size =', a.size)
print('ndim =', a.ndim)
print('dtype =', a.dtype, end='\n\n')

print('Matrica M:')
print(M)
print('shape =', M.shape)
print('size =', M.size)
print('ndim =', M.ndim)
print('dtype =', M.dtype)
Niz a:
[1 2 3]
shape = (3,)
size = 3
ndim = 1
dtype = int64

Matrica M:
[[1. 2. 3.]
 [4. 5. 6.]]
shape = (2, 3)
size = 6
ndim = 2
dtype = float32
In [ ]:
a1 = np.arange(1, 10, 2)
a2 = np.linspace(1, 3, 11)
a3 = np.zeros(6)
a4 = np.random.uniform(0, 1, 5)

print('a1 =', a1)
print('a2 =', a2)
print('a3 =', a3)
print('a4 =', a4)

M1 = np.ones((2, 3))
M2 = np.eye(3)
M3 = np.diag([4, 3, 2, 1])

print('\nM1 =\n', M1)
print('\nM2 =\n', M2)
print('\nM3 =\n', M3)
a1 = [1 3 5 7 9]
a2 = [1.  1.2 1.4 1.6 1.8 2.  2.2 2.4 2.6 2.8 3. ]
a3 = [0. 0. 0. 0. 0. 0.]
a4 = [0.14911013 0.2374469  0.507397   0.3519524  0.10975132]

M1 =
 [[1. 1. 1.]
 [1. 1. 1.]]

M2 =
 [[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

M3 =
 [[4 0 0 0]
 [0 3 0 0]
 [0 0 2 0]
 [0 0 0 1]]
In [ ]:
A = np.array([[1, 3, 5], [7, 9, 11], [13, 15, 17]])
B = np.array([[2, 4, 6], [8, 10, 12], [14, 16, 18]])

print('A + B =\n', A + B)
print('A * B =\n', A * B)
print('A @ B =\n', A @ B)
print('A.T =\n', A.T)
print('sin(A) =\n', np.sin(A))
A + B =
 [[ 3  7 11]
 [15 19 23]
 [27 31 35]]
A * B =
 [[  2  12  30]
 [ 56  90 132]
 [182 240 306]]
A @ B =
 [[ 96 114 132]
 [240 294 348]
 [384 474 564]]
A.T =
 [[ 1  7 13]
 [ 3  9 15]
 [ 5 11 17]]
sin(A) =
 [[ 0.84147098  0.14112001 -0.95892427]
 [ 0.6569866   0.41211849 -0.99999021]
 [ 0.42016704  0.65028784 -0.96139749]]
In [ ]:
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])

print('Vertikalno nadovezivanje:')
print(np.vstack((x, y)))

print('\nHorizontalno nadovezivanje:')
print(np.hstack((x, y)))

print('\nSkalarni proizvod:', np.sum(x * y))
print('Minimum u x:', np.min(x))
print('Maksimum u y:', np.max(y))
print('Elementi x veći od 1.5:', x[x > 1.5])
Vertikalno nadovezivanje:
[[1 2 3]
 [4 5 6]]

Horizontalno nadovezivanje:
[1 2 3 4 5 6]

Skalarni proizvod: 32
Minimum u x: 1
Maksimum u y: 6
Elementi x veći od 1.5: [2 3]

Pandas¶

Pandas biblioteka služi za rad sa tabelarnim podacima.

In [ ]:
df = pd.DataFrame({
    'ime': ['Ana', 'Marko', 'Ivana', 'Nikola', 'Jelena'],
    'godine': [21, 23, 22, 24, 21],
    'prosek': [9.1, 8.4, 9.7, 7.9, 8.8]
})

display(df)
ime godine prosek
0 Ana 21 9.1
1 Marko 23 8.4
2 Ivana 22 9.7
3 Nikola 24 7.9
4 Jelena 21 8.8
In [ ]:
print('Prvih nekoliko redova:')
display(df.head())

print('Osnovne informacije:')
df.info()

print('\nDeskriptivna statistika:')
display(df.describe())
Prvih nekoliko redova:
ime godine prosek
0 Ana 21 9.1
1 Marko 23 8.4
2 Ivana 22 9.7
3 Nikola 24 7.9
4 Jelena 21 8.8
Osnovne informacije:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   ime     5 non-null      object 
 1   godine  5 non-null      int64  
 2   prosek  5 non-null      float64
dtypes: float64(1), int64(1), object(1)
memory usage: 248.0+ bytes

Deskriptivna statistika:
godine prosek
count 5.00000 5.000000
mean 22.20000 8.780000
std 1.30384 0.683374
min 21.00000 7.900000
25% 21.00000 8.400000
50% 22.00000 8.800000
75% 23.00000 9.100000
max 24.00000 9.700000
In [ ]:
print('Kolona godine:')
display(df['godine'])

print('Kolone ime i prosek:')
display(df[['ime', 'prosek']])
Kolona godine:
0    21
1    23
2    22
3    24
4    21
Name: godine, dtype: int64
Kolone ime i prosek:
ime prosek
0 Ana 9.1
1 Marko 8.4
2 Ivana 9.7
3 Nikola 7.9
4 Jelena 8.8
In [ ]:
print('Studenti sa prosekom većim od 8.5:')
display(df[df['prosek'] > 8.5])
Studenti sa prosekom većim od 8.5:
ime godine prosek
0 Ana 21 9.1
2 Ivana 22 9.7
4 Jelena 21 8.8
In [ ]:
df['polozio_uslov'] = df['prosek'] >= 8.5
display(df)
ime godine prosek polozio_uslov
0 Ana 21 9.1 True
1 Marko 23 8.4 False
2 Ivana 22 9.7 True
3 Nikola 24 7.9 False
4 Jelena 21 8.8 True
In [ ]:
df2 = pd.DataFrame({
    'grad': ['Beograd', 'Novi Sad', 'Niš', 'Kragujevac'],
    'temperatura': [22, 20, 24, 21],
    'vlaznost': [60, 65, 55, 58]
})

display(df2)

print('Prosečna temperatura:', df2['temperatura'].mean())
grad temperatura vlaznost
0 Beograd 22 60
1 Novi Sad 20 65
2 Niš 24 55
3 Kragujevac 21 58
Prosečna temperatura: 21.75