⚙️ Pokročilé nástroje

JupyterLab
Google Colab
Matematická kartografia
Knižnice
NumPy
Pandas
Dataframe
Autor

Jakub Šperka

Publikované

16. februára 2026

Generovanie hodnôt a postupností

np.linspace

Pre vygenerovanie konkrétnej množiny hodnôt v zadanom intervale, prípadne hodnôt s konkrétnym krokom je vhodné použiť funkcie z balíčka NumPy.

Pre vygenerovanie vektora hodnôt, ktorý má známy začiatok a koniec, a potrebujeme konkrétny počet bodov v týchto hraniciach je vhodné na to použiť funkciu np.linspace(). Používa sa nasledovne: np.linspace(ZAČIATOK_INTERVALU, KONIEC_INTERVALU, POČET_VZORIEK)

Je potrebné mať na pamäti, že počet vzoriek udáva celkový počet hodnôť vrátane počiatočej a koncovej hodnoty. Ak úloha znie, že na potrebnom intervale je potrebné vypočítať 18 medzilahlých bodov, je potrebné za argument dostadiť číslo 20 (Počiatočná hodnota + Koncová hodnota + Počet medziľahlých bodov).

np.arange

V prípade, že chceme interval hodnôť z presne definovaným krokom je vhodné použiť funkciu np.arange(). Jej použitie je podobné ako v predchádzajúcom prípade, nasledovné: np.arrange(ZAČIATOK_INTERVALU, KONIEC_INTERVALU, KROK)

Je nutné podotknúť, že interval je zhora otvorený, t.z., že v koniec intervalu nie je v rámci výsledného vektora zahrnutý, a je slúži len ako zastavovacia podmienka pre počet krokov.


Deklarácia premenných za sebou

Pre ušetrenie miesta a sprehladnenie kódu môžeme okrem štandardného spôsobu deklarácie a priradenia hodnôt k premenným, použiť aj spôsob zápisu za sebou. Vo všeobecnosti je to zapísateľné nasledovne: NÁZOV_PREMENNEJ_1, NÁZOV_PREMENNEJ_2, NÁZOV_PREMENNEJ_3,... = HODNOTA_PREMENNEJ_1, HODNOTA_PREMENNEJ_2, HODNOTA_PREMENNEJ_3...

Na príklade to môžeme ukázať nasledovne:

Štandardný spôsob

Kód
x1 = 1
x2 = 2
x3 = 3

Alternatívny spôsob (za sebou)

Kód
x1, x2, x3 = 1, 2, 3

Definovanie siete bodov (grid) s požadovaným intervalom a štruktúra DataFrame (Pandas)

V rámci niekorých úloh sme sa stretli so zadaním, kedy bolo potrebné spočítať určité hodnoty v rámci zemepisnej siete. Mnohé matematické vzťahy sú prevažne závislé len od jednej premennej (napr. šírky alebo dĺžky), je tak možné úlohu riešiť jednoduchým inkrementovaním hodnôt v konkrétnom intervale. Avšak korektnejší prístup je vytvoriť nezávislú množinu dvojíc súradníc a k riešeniu pristupovať ako k unikátnym bodom, aj napriek tomu, že výsledky môžu byť redundantné.

Efektívne riešenie spočíva v použití jednoduchých funkcií a zavedením dátového typu DataFrame.

Definovanie siete bodov (grid)

Import knižníc

Kód
import numpy as np
import pandas as pd
from Degrees import *

Definovanie intervalov (v smere šírky/dĺžky) a krokov

V tomto kroku definujeme premenné pre rozsah (maximum a minimum) daných zemepisných (sférických) smerov. Treťou premennou je krok v daných smeroch. Krok definujeme individuálne nakoľko táto metóda riešenia umožňuje aby bol krok v jednotlivých smeroch odlišný.

Kód
U_min, U_max, U_step = -90, 90, 30
V_min, V_max, V_step = -180, 180, 30

Definovanie vektora postupných hodnôt

Pomocou funkcie np.arange() definujeme zo zadaných hraníc a krokov, pole (vektor) hodnôt. Univerzálna syntax je nasledovná: np.arange(DOLNÁ_HRANICA, HORNÁ_HRANICA, KROK). Použitá funkcia však to tvorby vektora nezahrňuje hornú hranicu, pre nás je však aj táto hodnota podstatná. V našom prípade je tak vhodná syntax nasledovná: np.arange(DOLNÁ_HRANICA, HORNÁ_HRANICA + KROK, KROK).

Kód
coords_U = np.arange(U_min, U_max + U_step, U_step)
coords_V = np.arange(V_min, V_max + V_step, V_step)

Definovanie dvojrozmernej mriežky bodov

Po vytvorení vektorov hodnôt, je potrebné vytvoriť viacrozmernú mriežku (v našom prípade dvojrozmernú). Tento cieľ dosiahneme použitím funkcie np.meshgrid(). Do funkcie v našom prípade dosadíme len vytvorené vektory. Takýto spôsob vytvorí mriežku n-tíc z dosadených súradníc. Toto je vhodné pre rozličné vizualizácie a použitie v grafoch. Na vloženie do tabuľky a následné výpočný je potrebné uložiť iba diskrétne dvojice súradníc.

Kód
U_grid, V_grid = np.meshgrid(coords_U, coords_V)

Sploštenie poľa pre ďalšie použitie

Pre získanie dvojíc je nutné mriežku sploštiť. Sploštenie tohto typu mriežky vakonáme metódou .ravel(). Syntax je nasledovná: MRIEŽKA.ravel().

Kód
U_grid = U_grid.ravel()
V_grid = V_grid.ravel()

Uloženie sploštených hodnôt do štruktúry (tabuľky) DataFrame

Pre jednoduhšie výbočty je vhodné uložiť hodnoty do štruktúry DataFrame z knižnice Pandas. Ide v zásade o jednoduchú tabuľku. Jej použtie je analogické k dátovému typu dict()(dictionary-slovník). Syntax pre náš prípad je nasledovná: NÁZOV_TABUĽKY = pd.DataFrame({"NÁZOV_STĹPCA_1":HODNOTY_STĹPCA_1, "NÁZOV_STĹPCA_2":HODNOTY_STĹPCA_2 ,...})

Kód
grid = pd.DataFrame({"U":U_grid, "V":V_grid})

Modul Pandas a dátový typ DataFrame

Definovanie štruktúry DataFrame

Najbežnejší spôsob je použitie dict(), kde kľúče predstavujú názvy stĺpcov a hodnoty sú zoznamy alebo NumPy polia.

Kód
data = {
    'Meno': ['Jakub', 'Petra', 'Tomáš'],
    'Vek': [25, 30, 28],
    'Mesto': ['Bratislava', 'Košice', 'Žilina']
}

df = pd.DataFrame(data)

Základná práca so štruktúrou Dataframe

Modul Pandas a štruktúra DataFrame je veľmi komplexná. Zhrnúť zoznam najpodstatnejších funkcií je veľmi náročné, a závisí od aplikačnej oblasti. Vybral som však niekoľko základných funkcí, vhodných ako odrazový mostík:

df.head(N), df.tail(N) - zobrazí N prvých/posledných hodnôt tabuľky

df.describe() - zobrazí základné numerické štatistiky

df['NÁZOV_STĹPCA'] - výber stĺpca

df.loc[INDEX], df.iloc[ČÍSLO_RIADKU] - výber riadku

df[df['NÁZOV_STĹPCA'] > HODNOTA] - filtrovanie hodnôt

df['NAZOV_NOVÉHO_STĹPCA'] = HODNOTY - definovanie nového stĺpca a priradenie hodnôt

df.drop(columns=['STĹPEC']) - odstránenie stĺpca z tabuľky

1.2.3 Import a export z/do súboru (csv,excel,txt…)

Niektoré situácie si vyžadujú import/export hodnot z/do štruktúry tabuľky DataFrame. Balíček Pandas podporuje prácu s mnohými formátmi. Medzi najbežnejšie však určite patria formáty:

  • CSV
  • MS Excel
  • TXT

Použitie niektorých funkcií je viazané na použitie oddeľovača jednotlivých hodnôt v riadku. Pri práci v jazyku Python využivame najčastejšie nasledujúce oddeľovače (delimiters/separators):

  • Čiarka - ","
  • Bodkočiarka - ";"
  • Tabulátor - "\t"
  • Medzera - " "
  • Zvislá čiara (pajpa) - "|"
1.2.3.1 Import zo súboru

pd.read_csv('NÁZOV_SÚBORU.csv')

pd.read_excel('NÁZOV_SÚBORU.xlsx')

pd.read_csv('NÁZOV_SÚBORU.txt', delimiter='ODDEĽOVAČ')

1.2.3.2 Export do súboru

df.to_csv('NÁZOV_SÚBORU.csv')

df.to_excel('NÁZOV_SÚBORU.xlsx')

df.to_csv('NÁZOV_SÚBORU.txt', sep='ODDEĽOVAČ')


Ďalšie užitočné funkcie

zip

Funkcia zip() spája viaceré iterovateľné objekty (zoznamy, n-tice, …) tak, že vytvára páry (alebo n-tice) prvkov na rovnakých indexoch. Použtie funckie si môžeme ukázať na cykle for(), ktorý sme použili aj v rámci cvičení:

Kód
mena = ['Jakub', 'Eva', 'Marek']
veky = [25, 30, 22]

for meno, vek in zip(mena, veky):
    print(f"{meno}{vek} rokov.")
Jakub má 25 rokov.
Eva má 30 rokov.
Marek má 22 rokov.