V tejto kapitole sú zhrnuté základné operácie s pandas.DataFrame: - Výber stĺpcov a riadkov ([], .loc, .iloc) - Filtrovanie riadkov (boolean masky, .query()) - Indexovanie (nastavenie/obnova indexu, výber podľa indexu) - Triedenie - Výber podľa podmienok viacerých stĺpcov - reťazenie operácií
Budeme pracovať s malým ukážkovým súborom dát, ktorý si vytvoríme v behu notebooku.
0 Anna
1 Boris
2 Cyril
3 Dora
4 Eva
5 Filip
Name: Meno, dtype: object
Viac stĺpcov (vracia DataFrame)
Kód
df[['Meno', 'Vek']]
Meno
Vek
0
Anna
25
1
Boris
30
2
Cyril
35
3
Dora
28
4
Eva
22
5
Filip
40
📍 Výber riadkov – .loc vs .iloc
.loc[riadky, stĺpce]: výber podľa menoviek (indexu/stĺpcov)
.iloc[riadky, stĺpce]: výber podľa pozície (0-based - začiatok indexovania od nuly)
Výber rozsahu riadkov podľa indexu stĺpcov
Kód
# Prvé tri riadky a stĺpce 'Meno' a 'Vek' podľa ich pozície (indexu)df.iloc[0:3, [0, 1]]
Meno
Vek
0
Anna
25
1
Boris
30
2
Cyril
35
Výber rozsahu riadkov podľa indexu stĺpcov
Kód
# Riadky s indexami 0 až 3 (vrátane) a stĺpce podľa názvov 'Meno' a 'Vek'df.loc[0:3, ['Meno', 'Vek']]
Meno
Vek
0
Anna
25
1
Boris
30
2
Cyril
35
3
Dora
28
🔎 Filtrovanie riadkov (boolean masky)
Kód
# Negácia podmienky: mesto nie je Bratislavadf[~(df['Mesto'] =='Bratislava')]
Meno
Vek
Mesto
Body
Aktivny
1
Boris
30
Košice
92
True
2
Cyril
35
Žilina
75
False
4
Eva
22
Nitra
66
False
5
Filip
40
Košice
98
True
Kód
# Jednoduchá podmienka: iba aktívnidf[df['Aktivny'] ==True]
Meno
Vek
Mesto
Body
Aktivny
0
Anna
25
Bratislava
88
True
1
Boris
30
Košice
92
True
3
Dora
28
Bratislava
90
True
5
Filip
40
Košice
98
True
Kód
# Viac podmienok: vek >= 30 a Body > 80df[(df['Vek'] >=30) & (df['Body'] >80)]
Meno
Vek
Mesto
Body
Aktivny
1
Boris
30
Košice
92
True
5
Filip
40
Košice
98
True
Kód
# Negácia podmienky: mesto nie je Bratislavadf[~(df['Mesto'] =='Bratislava')]
Meno
Vek
Mesto
Body
Aktivny
1
Boris
30
Košice
92
True
2
Cyril
35
Žilina
75
False
4
Eva
22
Nitra
66
False
5
Filip
40
Košice
98
True
🗣️ Filtrovanie pomocou .query() (čitateľnejšia syntax)
Kód
# Pozor: vo výrazoch používame názvy stĺpcov priamodf.query("Vek >= 30 and Body > 80 and Aktivny")
Meno
Vek
Mesto
Body
Aktivny
1
Boris
30
Košice
92
True
5
Filip
40
Košice
98
True
🧭 Indexovanie: nastavenie a obnova indexu
Aktuálny RangeIndex
Kód
df.index
RangeIndex(start=0, stop=6, step=1)
Nastavenie vlastného indexu
Kód
df_meno = df.set_index('Meno')df_meno
Vek
Mesto
Body
Aktivny
Meno
Anna
25
Bratislava
88
True
Boris
30
Košice
92
True
Cyril
35
Žilina
75
False
Dora
28
Bratislava
90
True
Eva
22
Nitra
66
False
Filip
40
Košice
98
True
Výber podľa menovky indexu
Kód
df_meno.loc['Boris']
Vek 30
Mesto Košice
Body 92
Aktivny True
Name: Boris, dtype: object
Obnovenie pôvodného indexu
Kód
df_meno.reset_index()
Meno
Vek
Mesto
Body
Aktivny
0
Anna
25
Bratislava
88
True
1
Boris
30
Košice
92
True
2
Cyril
35
Žilina
75
False
3
Dora
28
Bratislava
90
True
4
Eva
22
Nitra
66
False
5
Filip
40
Košice
98
True
🎚️ Výber podľa indexu + stĺpca
Kód
# Keď je indexom 'Meno', môžeme vyberať kombinácie:df_meno = df.set_index('Meno')df_meno.loc[['Anna', 'Dora'], ['Mesto', 'Body']]
Mesto
Body
Meno
Anna
Bratislava
88
Dora
Bratislava
90
↕️ Triedenie riadkov
Kód
# Triedenie podľa jedného stĺpca vzostupnedf.sort_values('Vek')# Triedenie podľa viacerých stĺpcov (Vek vzostupne, Body zostupne)df.sort_values(['Vek', 'Body'], ascending=[True, False])
Meno
Vek
Mesto
Body
Aktivny
4
Eva
22
Nitra
66
False
0
Anna
25
Bratislava
88
True
3
Dora
28
Bratislava
90
True
1
Boris
30
Košice
92
True
2
Cyril
35
Žilina
75
False
5
Filip
40
Košice
98
True
⛓️ Reťazenie operácií
Kód
# Vyber aktívnych z Bratislavy, zaujíma nás len Meno a Body, zotriedime podľa Body zostupnedf.query("Aktivny and Mesto == 'Bratislava'")[['Meno', 'Body']].sort_values('Body', ascending=False)
Meno
Body
3
Dora
90
0
Anna
88
🧠 Zhrnutie
Výber stĺpcov: df['col'], df[['c1','c2']]
Výber riadkov: .loc[] (menovky), .iloc[] (pozície - indexy)
Filtrovanie: boolean masky a .query()
Indexovanie: set_index(), reset_index(), výber podľa indexu
Triedenie a pipeline: sort_values() a reťazenie operácií pre čitateľný kód
Na label-based výber používajte .loc, na position-based.iloc.
Pri viacerých podmienkach nezabudnite na zátvorky a operátory & (AND), | (OR), ~ (NOT).
.set_index() a .reset_index() uľahčujú výber podľa kľúčových hodnôt.
.query() býva pre zložitejšie filtre prehľadnejšie a niekedy aj rýchlejšie.
📚 Oficiálna dokumentácia Pandas
Podrobný popis funkcií, ich parametrov a príkladov použitia nájdete v oficiálnej dokumentácii knižnice Pandas na adrese: https://pandas.pydata.org/docs/.