Jak používat Pandas DataFrame k rychlé manipulaci s tabulkami v Pythonu
Pandas DataFrame je datová struktura jazyka Python, kterou lze použít k vytváření a manipulaci s tabulkami. Vysvětlíme strukturu datové struktury a její nejdůležitější metody a vlastnosti.
Jak funguje Pandas DataFrame?
Pandas DataFrames jsou jádrem knihovny Python Pandas a umožňují efektivní a flexibilní analýzu dat v Pythonu. Pandas DataFrame je dvourozměrná tabulková datová struktura s očíslovanými řádky a označenými sloupci. Tato struktura umožňuje organizovat data ve snadno srozumitelné a manipulovatelné formě, podobně jako v tabulkách programů Excel nebo LibreOffice. Každý sloupec v DataFrame může obsahovat různé datové typy Pythonu, což znamená, že DataFrame může ukládat heterogenní data – například číselné hodnoty, řetězce a logické hodnoty v jedné tabulce.
Datové rámce Pandas jsou založeny na polích NumPy, což umožňuje efektivní zpracování dat a výpočet hodnot. Datové rámce Pandas se však v některých ohledech liší od datových struktur NumPy, například svou heterogenitou a počtem dimenzí. Z tohoto důvodu jsou datové struktury NumPy vhodné pro manipulaci s obrovským množstvím číselných hodnot a datové struktury Pandas jsou vhodnější pro obecnou manipulaci s daty.
Struktura datových rámců Pandas
DataFrame má tři hlavní komponenty: data, indexy řádků a názvy sloupců. Index řádku (nebo jednoduše index) jednoznačně identifikuje každý řádek. Ve výchozím nastavení jsou řádky indexovány číselnými hodnotami, ale ty lze nahradit řetězci. Je důležité si uvědomit, že Pandas DataFrames jsou indexovány od nuly, což znamená, že indexy začínají na 0.

Ačkoli Pandas DataFrames patří mezi nejoblíbenější a nejužitečnější datové struktury v jazyce Python, nejsou součástí základního jazyka a musí být importovány samostatně. To se provádí pomocí řádku import pandas nebo from pandas import DataFrame na začátku souboru. Alternativně můžete použít import pandas as pd, pokud chcete odkazovat na modul s kratším názvem (v tomto případě „pd“).
Použití datových rámců Pandas
Pandas DataFrames poskytují různé techniky a metody pro efektivní zpracování, analýzu a vizualizaci dat. Níže se seznámíte s klíčovými pojmy a metodami pro manipulaci s daty pomocí Pandas DataFrames.
Jak vytvořit Pandas DataFrame
Pokud jste již uložili požadovaná data do seznamu Python nebo slovníku Python, můžete z nich snadno vytvořit DataFrame. Jednoduše předejte existující datovou strukturu konstruktoru DataFrame pomocí pandas.DataFrame([data]). Způsob, jakým Pandas interpretuje vaše data, bude záviset na struktuře, kterou poskytnete. Například můžete vytvořit Pandas DataFrames ze seznamu Python následujícím způsobem:
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 FrankpythonJak je vidět na výše uvedeném příkladu, pomocí jednoduchých seznamů lze vytvářet pouze datové rámce s jedním neoznačeným sloupcem. Z tohoto důvodu se doporučuje vytvářet datové rámce ze slovníků, které obsahují seznamy. Klíče jsou interpretovány jako názvy sloupců a seznamy jako související data. Následující pří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.3pythonPomocí této metody získá DataFrame okamžitě požadovaný formát a požadované záhlaví. Pokud však nechcete spoléhat na vestavěné datové struktury jazyka Python, můžete data načíst také z externího zdroje, například ze souboru CSV nebo databáze SQL. Stačí zavolat příslušnou funkci 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 výše uvedeném příkladu nyní obsahují všechna data z data.csv a SQL tabulky table. Při vytváření DataFrame z externího zdroje můžete zadat další podrobnosti, například zda mají být číselné indexy zahrnuty do DataFrame nebo ne. Více informací o dalších argumentech těchto dvou funkcí najdete na oficiální stránce dokumentace Pandas DataFrame.
Chcete-li vytvořit Pandas DataFrame z tabulky SQL, musíte použít Pandas ve spojení s modulem Python SQL, jako je SQLAlchemy. Navázat připojení k databázi pomocí zvoleného modulu SQL a předat jej do read_sql_query().
Jak zobrazit data v Pandas DataFrames
S Pandas DataFrames můžete zobrazit nejen celou tabulku, ale také jednotlivé řádky a sloupce. Můžete vybrat konkrétní řádky a sloupce, které chcete zobrazit. Následující příklad ilustruje, jak zobrazit jednotlivé nebo více řádků a sloupců:
# 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 příkladu se odkaz na sloupec provádí pomocí jeho názvu v jednoduchých závorkách, podobně jako při přístupu k hodnotám v slovnících jazyka Python. Naproti tomu atribut loc se používá k odkazování na řádky. Pomocí loc můžete také použít logické podmínky k filtrování dat. Následující blok kódu ukazuje, jak vypsat pouze řádky, kde je hodnota „věk“ větší než 30:
print(df.loc[df['Age'] > 30])pythonMůžete však také použít atribut iloc k výběru řádků a sloupců na základě jejich pozice v DataFrame. Můžete například zobrazit buňku, která se nachází ve třetím řádku a čtvrtém sloupci:
print(df.iloc[3, 4])
# Output:
# London
print(df.iloc[[3, 4, 6], 4])
# Output:
# 3 London
# 4 Birmingham
# 6 PrestonpythonJak iterovat nad řádky s Pandas DataFrames
Při zpracování dat v Pythonu je často nutné iterovat nad řádky Pandas DataFrames, aby se stejná operace aplikovala na všechna data. Pandas poskytuje pro tento účel dvě metody: itertuples() a iterrows(). Každá metoda má své výhody a nevýhody, pokud jde o výkon a uživatelské přívětivost.
Metoda iterrows() vrací pro každý řádek v DataFrame tuple indexu a Series. Series je datová struktura Pandas nebo NumPy podobná seznamu Python, ale nabízí lepší výkon. K jednotlivým prvkům v Series můžete přistupovat pomocí názvu sloupce, což zjednodušuje práci s daty.
Ačkoli jsou série Pandas efektivnější než seznamy Pythonu, stále s sebou nesou určitou zátěž na výkon. Proto je metoda itertuples() doporučována zejména pro velmi velké datové rámce. Na rozdíl od iterrows() vrací itertuples() celý řádek včetně indexu jako tuple, které jsou výkonnější než série. S tuple můžete přistupovat k jednotlivým prvkům pomocí tečkové notace, podobně jako při přístupu k atributům objektu.
Dalším důležitým rozdílem mezi řadami a tuplemi je to, že tuple nejsou mutabilní. Pokud tedy chcete iterovat přes DataFrame pomocí itertuples() a měnit hodnoty, musíte odkazovat na DataFrame pomocí atributu at a indexu tuple. Tento atribut funguje velmi podobně jako loc. Následující příklad ilustruje rozdíly mezi 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