Ako používať Pandas DataFrame na rýchlu manipuláciu s tabuľkami v jazyku Python
Pandas DataFrame je dátová štruktúra jazyka Python, ktorú možno použiť na vytváranie a manipuláciu s tabuľkami. Vysvetľujeme štruktúru dátovej štruktúry a jej najdôležitejšie metódy a vlastnosti.
Ako funguje Pandas DataFrame?
Pandas DataFrames sú jadrom knižnice Python Pandas a umožňujú efektívnu a flexibilnú analýzu dát v jazyku Python. Pandas DataFrame je dvojrozmerná tabuľková dátová štruktúra s očíslovanými riadkami a označenými stĺpcami. Táto štruktúra umožňuje organizovať dáta v ľahko zrozumiteľnej a manipulovateľnej forme, podobne ako v tabuľkových programoch, napríklad Excel alebo LibreOffice. Každý stĺpec v DataFrame môže obsahovať rôzne typy dát Python, čo znamená, že DataFrame môže ukladať heterogénne dáta – napríklad číselné hodnoty, reťazce a booleovské hodnoty v jednej tabuľke.
Pandas DataFrames sú založené na poliach NumPy, ktoré umožňujú efektívne spracovanie údajov a výpočet hodnôt. Pandas DataFrames sa však v niektorých ohľadoch líšia od dátových štruktúr NumPy, napríklad v ich heterogenite a počte dimenzií. Z tohto dôvodu sú dátové štruktúry NumPy vhodné na manipuláciu s veľkým množstvom číselných hodnôt a dátové štruktúry Pandas sú vhodnejšie na všeobecnú manipuláciu s údajmi.
Štruktúra dátových rámcov Pandas
DataFrame má tri hlavné komponenty: dáta, indexy riadkov a názvy stĺpcov. Index riadku (alebo jednoducho index) jednoznačne identifikuje každý riadok. Predvolene sú riadky indexované číselnými hodnotami, ale tieto môžu byť nahradené reťazcami. Je dôležité poznamenať, že Pandas DataFrames sú indexované od nuly, čo znamená, že indexy začínajú od 0.

Hoci Pandas DataFrames patria medzi najpopulárnejšie a najužitočnejšie dátové štruktúry v jazyku Python, nie sú súčasťou základného jazyka a musia sa importovať samostatne. To sa vykonáva pomocou riadku import pandas alebo from pandas import DataFrame na začiatku súboru. Alternatívne môžete použiť import pandas as pd, ak chcete odkazovať na modul s kratším názvom (v tomto prípade „pd“).
Použitie dátových rámcov Pandas
Pandas DataFrames poskytuje rôzne techniky a metódy na efektívne spracovanie, analýzu a vizualizáciu údajov. Nižšie sa dozviete o kľúčových pojmoch a metódach manipulácie s údajmi pomocou Pandas DataFrames.
Ako vytvoriť Pandas DataFrame
Ak ste už uložili požadované údaje do zoznamu Python alebo slovníka Python, môžete z nich ľahko vytvoriť DataFrame. Jednoducho odovzdajte existujúcu dátovú štruktúru konštruktoru DataFrame pomocou pandas.DataFrame([data]). Spôsob, akým Pandas interpretuje vaše údaje, bude závisieť od štruktúry, ktorú poskytnete. Napríklad, Pandas DataFrames môžete vytvoriť zo zoznamu Python takto:
import pandas
lists = ["Ahmed", "Beatrice", "Candice", "Donovan", "Elisabeth", "Frank"]
df = pandas.DataFrame(list)
print(df)
# Output:
# 0
# 0 Ahmed
# 1 Beatrice
# 2 Candice
# 3 Donovan
# 4 Elisabeth
# 5 FrankpythonAko vidíte v uvedenom príklade, pomocou jednoduchých zoznamov môžete vytvárať iba DataFrames s jedným neoznačeným stĺpcom. Z tohto dôvodu sa odporúča vytvárať DataFrames zo slovníkov, ktoré obsahujú zoznamy. Kľúče sa interpretujú ako názvy stĺpcov a zoznamy ako pridružené údaje. Nasledujúci príklad to ilustruje:
import pandas
datA = {
'Name': ['Arthur', 'Bruno', 'Christoph'],
'Age': [34, 30, 55],
'Income': [75000.0, 60000.5, 90000.3],
}
df = pandas.DataFrame(data)
print(df)
# Output:
# Name Age Income
# 0 Arthur 34 75000.0
# 1 Bruno 30 60000.5
# 2 Christoph 55 90000.3pythonPomocou tejto metódy má DataFrame okamžite požadovaný formát a požadované nadpisy. Ak však nechcete využívať vstavané dátové štruktúry jazyka Python, môžete svoje dáta načítať aj z externého zdroja, napríklad zo súboru CSV alebo databázy SQL. Stačí zavolať príslušnú funkciu Pandas:
import pandas
import sqlalchemy
# DataFrame of CSV:
csv = pandas.read_csv("csv-data/files.csv")
# DataFrame of SQL:
engine = create_engine('postgresql://username:password@localhost:5432/mydatabase')
sql = pandas.read_sql_query('SELECT * FROM table', engine)pythonDataFrames csv a sql v uvedenom príklade teraz obsahujú všetky údaje z data.csv a tabuľky SQL table. Pri vytváraní DataFrame z externého zdroja môžete špecifikovať ďalšie podrobnosti, napríklad či majú byť numerické indexy zahrnuté do DataFrame alebo nie. Viac informácií o ďalších argumentoch týchto dvoch funkcií nájdete na oficiálnej stránke dokumentácie Pandas DataFrame.
Ak chcete vytvoriť Pandas DataFrame z tabuľky SQL, musíte použiť Pandas v kombinácii s modulom Python SQL, napríklad SQLAlchemy. Nadviažte spojenie s databázou pomocou zvoleného modulu SQL a odovzdajte ho read_sql_query().
Ako zobraziť údaje v Pandas DataFrames
S Pandas DataFrames môžete zobraziť nielen celú tabuľku, ale aj jednotlivé riadky a stĺpce. Môžete vybrať konkrétne riadky a stĺpce, ktoré chcete zobraziť. Nasledujúci príklad ilustruje, ako zobraziť jednotlivé alebo viaceré riadky a stĺpce:
# Output 0-th line
print(df.loc[0])
# Output lines 3 to 6
print(df.loc[3:6])
# Output lines 3 and 6
print(df.loc[[3, 6]])
# Output "Occupation" column
print(df["Occupation"])
# Output "Occupation" and "Age" columns
print(df[["Occupation", "Age"]])
# Selection of multiple rows and columns
print(df.loc[[3, 6], ['Occupation', 'Age']])pythonV tomto príklade sa odkaz na stĺpec vykonáva pomocou jeho názvu v jednoduchých zátvorkách, podobne ako pri prístupe k hodnotám v slovníkoch jazyka Python. Naopak, atribút loc sa používa na odkazovanie na riadky. Pomocou loc môžete tiež použiť logické podmienky na filtrovanie údajov. Nasledujúci blok kódu ukazuje, ako vygenerovať iba riadky, v ktorých je hodnota „vek“ väčšia ako 30:
print(df.loc[df['Age'] > 30])pythonMôžete však použiť aj atribút iloc na výber riadkov a stĺpcov na základe ich polohy v DataFrame. Napríklad môžete zobraziť bunku, ktorá sa nachádza v treťom riadku a štvrtom stĺpci:
print(df.iloc[3, 4])
# Output:
# London
print(df.iloc[[3, 4, 6], 4])
# Output:
# 3 London
# 4 Birmingham
# 6 PrestonpythonAko iterovať nad riadkami s Pandas DataFrames
Pri spracovaní údajov v jazyku Python je často potrebné iterovať nad riadkami Pandas DataFrames, aby sa na všetky údaje uplatnila rovnaká operácia. Pandas na tento účel poskytuje dve metódy: itertuples() a iterrows(). Každá metóda má svoje výhody a nevýhody, pokiaľ ide o výkon a užívateľskú prívetivosť.
Metóda iterrows() vráti tuple indexu a série pre každý riadok v DataFrame. Séria je dátová štruktúra Pandas alebo NumPy podobná zoznamu Python, ale ponúka lepší výkon. K jednotlivým prvkom v sérii môžete pristupovať pomocou názvu stĺpca, čo zjednodušuje spracovanie údajov.
Hoci sú série Pandas efektívnejšie ako zoznamy Python, stále majú určitú výkonnostnú réžiu. Preto sa metóda itertuples() odporúča najmä pre veľmi veľké DataFrames. Na rozdiel od iterrows(), itertuples() vráti celý riadok vrátane indexu ako tuples, ktoré sú výkonnejšie ako série. S tuples môžete pristupovať k jednotlivým prvkom pomocou bodkovej notácie, podobne ako pri prístupe k atribútom objektu.
Ďalším dôležitým rozdielom medzi sériami a tuplemi je to, že tuple nie sú meniteľné. Ak teda chcete iterovať nad DataFrame pomocou itertuples() a zmeniť hodnoty, musíte odkazovať na DataFrame s atribútom at a indexom tuple. Tento atribút funguje veľmi podobne ako loc. Nasledujúci príklad slúži na ilustráciu rozdielov medzi iterrows() a itertuples():
import pandas
df = pandas.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Income ': [70000.0, 80000.5, 90000.3]
})
for index, row in df.iterrows():
row['Income'] += 1000
print(f"Index: {index}, Age: {row['Age']}, Income: {row['Income']}")
for tup in df.itertuples():
df.at[tup.Index, 'Income'] += 1000 # Change value directly in the DataFrame using at[]
print(f “Index: {tup.Index}, Age: {tup.Age}, Income: {df.loc[tup.Index, 'Income']}”)
# Both loops have the same outputpython