Import a export dát

JupyterLab
Numpy
Import
Export
CSV
TXT
Autor

Jakub Šperka

Publikované

18. septembra 2025

📥Úvod

Táto kapitola ukazuje najpoužívanejšie spôsoby, ako v NumPy načítať a ukladať dáta do textových a CSV súborov. Nájdete tu prehľad funkcií, praktické príklady a tipy pre bežné použitie


🧰 Rýchly prehľad funkcií

Úloha Funkcia Kedy použiť
Načítať „čisté“ numerické dáta np.loadtxt Rýchle a jednoduché CSV/TXT bez chýbajúcich hodnôt
Načítať „špinavé“ dáta s chýbajúcimi hodnotami np.genfromtxt Lepšia tolerancia voči NaN, prázdnym poliam, vlastným konverziám
Uložiť do TXT/CSV np.savetxt Jednoduchý export s formátovaním
(Mimo text/CSV) Binárne .npy/.npz np.save, np.savez Najrýchlejšie a bezstratové ukladanie pre NumPy matice

❗ Na zložitejšie textové a CSV súbory s hlavičkami, typmi stĺpcov či zmiešanými typmi je vhodné použiť knižnicu pandas (read_csv, to_csv), ktorej sa budú venovať ďalšie kapitoly.


📤 Export: np.savetxt

Kód
import numpy as np

Jednoduché TXT/CSV bez hlavičky

Kód
matica = np.arange(12, dtype=float).reshape(4, 3)

np.savetxt("data.csv",matica, delimiter=",")

print("Uložené do data.csv:")
print(matica)
Uložené do data.csv:
[[ 0.  1.  2.]
 [ 3.  4.  5.]
 [ 6.  7.  8.]
 [ 9. 10. 11.]]

TXT/CSV s hlavičkou

Kód
tabulka = np.column_stack([np.arange(1, 6), np.linspace(0, 1, 5), np.linspace(10, 20, 5)])

np.savetxt("data_s_hlavickou.csv", tabulka, delimiter=",", header="poradove_cislo,a,b", comments=" ")

print("Uložené do data_s_hlavickou.csv s hlavičkou.")
print(tabulka)
Uložené do data_s_hlavickou.csv s hlavičkou.
[[ 1.    0.   10.  ]
 [ 2.    0.25 12.5 ]
 [ 3.    0.5  15.  ]
 [ 4.    0.75 17.5 ]
 [ 5.    1.   20.  ]]

📥 Import: np.loadtxt

Základné načítanie TXT/CSV (oddelené čiarkou)

Kód
matica_nacitana = np.loadtxt("data.csv", delimiter=",")

print("Načítaná matica z data.csv")
print(matica_nacitana)
Načítaná matica z data.csv
[[ 0.  1.  2.]
 [ 3.  4.  5.]
 [ 6.  7.  8.]
 [ 9. 10. 11.]]
Kód
tabulka_nacitana = np.loadtxt("data_s_hlavickou.csv", delimiter=",", skiprows=1)
print("Načítané (skiprows=1):")
print(tabulka_nacitana)
Načítané (skiprows=1):
[[ 1.    0.   10.  ]
 [ 2.    0.25 12.5 ]
 [ 3.    0.5  15.  ]
 [ 4.    0.75 17.5 ]
 [ 5.    1.   20.  ]]

💡 Je dôležíté preskočiť prvý riadok v ktorom sa nachádza uložená hlavička. V opačnom prípade dôjde k rozdielu dátových typov a súbor sa nepodarí načítať.

Výber konkrétnych stĺpcov a zmena typu

Kód
vybrane_stlpce = np.loadtxt("data_s_hlavickou.csv", delimiter=",", skiprows=1, usecols=(0, 1), dtype=float)
print("Vybrané stĺpce (poradove_cislo, a):")
print(vybrane_stlpce)
Vybrané stĺpce (poradove_cislo, a):
[[1.   0.  ]
 [2.   0.25]
 [3.   0.5 ]
 [4.   0.75]
 [5.   1.  ]]

⚠️ Bežné úskalia a tipy

  • Hlavičky:
    • np.loadtxt nečíta názvy stĺpcov, použite parameter skiprows=....
    • np.genfromtxt s names=True vie mená načítať a vytvoriť „structured array“.
  • Chýbajúce hodnoty:
    • Použite np.genfromtxt s missing_values a filling_values.
    • np.loadtxt pri prázdnom poli zlyhá.
  • Formát čísel a oddeľovač:
    • CSV v rôznych lokalizáciách môže používať ; a desatinnú čiarku.
    • Rieš cez delimiter=";" a converters={...} (viď príklady).
  • Rýchlosť a veľké dáta:
    • TXT/CSV je pomalší a stratový pre presnosť formátu.
    • Pre rýchlosť a bezstratovosť používajte binárne formáty: np.save/np.load (.npy), np.savez (.npz).
  • Zmiešané typy (text + čísla):
    • Uvažujte np.genfromtxt(..., dtype=None, encoding="utf-8") alebo vytvorte structured array s dtype=[(...)].
    • Pri zložitejších CSV je často pohodlnejší pandas (pd.read_csv, df.to_csv).

📦 Rýchle binárne uloženie (odporúčané pre NumPy polia)

Jedno pole

Kód
np.save("pole.npy", np.arange(6).reshape(2, 3))

pole_nacitane = np.load("pole.npy")

print("Načítané z .npy:", pole_nacitane)
Načítané z .npy: [[0 1 2]
 [3 4 5]]

Viac polí

Kód
np.savez("polia.npz", X=np.arange(5), Y=np.linspace(0, 1, 5))

nacitane_polia = np.load("polia.npz")

print("Kľúče v .npz:", list(nacitane_polia.keys()))
print("X:", nacitane_polia["X"], "Y:", nacitane_polia["Y"])
Kľúče v .npz: ['X', 'Y']
X: [0 1 2 3 4] Y: [0.   0.25 0.5  0.75 1.  ]

🧠 Zhrnutie

  • Čisté numerické CSVnp.loadtxt
  • Neúplné/špinavé CSVnp.genfromtxt
  • Export do textu/CSVnp.savetxt
  • Výkon a presnosťnp.save / np.savez

📚 Oficiálna dokumentácia NumPy

Podrobný popis funkcií, ich parametrov a príkladov použitia nájdete v oficiálnej dokumentácii knižnice NumPy na adrese: https://numpy.org/doc/stable/.


🎞️ Videonávod