Filtrování řádků v Pandas DataFrames
Pandas je výkonná knihovna v Pythonu pro manipulaci a analýzu dat. Běžným úkolem je výběr řádků z DataFrame na základě hodnot sloupců, podobně jako SQL tabulka SELECT * FROM WHERE název_sloupce = nějaká_hodnota.
Tato příručka vás provede různými metodami, jak toho v Pandas dosáhnout, což usnadní efektivní filtrování dat. Ať už jste začátečník nebo zkušený uživatel, tyto tipy rozšíří vaše dovednosti v oblasti zpracování dat.
Příkaz | Popis |
---|---|
pd.DataFrame(data) | Vytvoří DataFrame ze slovníku dat. |
df[column_name] | Přistupuje ke sloupci v DataFrame podle názvu. |
df[condition] | Filtruje DataFrame na základě podmínky aplikované na sloupec. |
print(selected_rows) | Vytiskne DataFrame nebo jeho podmnožinu do konzoly. |
df[df['Age'] >df[df['Age'] > 25] | Vybere řádky, kde jsou hodnoty ve sloupci 'Věk' větší než 25. |
df[df['City'] == 'Chicago'] | Vybere řádky, kde se hodnoty sloupce 'City' rovnají 'Chicago'. |
Porozumění výběru řádků DataFrame v Pandas
Poskytnuté skripty ukazují, jak vybrat řádky z DataFrame na základě hodnot sloupců pomocí knihovny Pandas v Pythonu. První skript začíná importem knihovny Pandas s import pandas as pd příkaz. Poté vytvoří ukázkový DataFrame pomocí slovníku dat, který se převede na DataFrame s pd.DataFrame(data) příkaz. Skript pak ilustruje dvě metody výběru řádků: výběr řádků, kde je hodnota sloupce 'Věk' větší než 25 pomocí df[df['Age'] > 25]a výběrem řádků, kde je ve sloupci 'City' hodnota 'Chicago' pomocí df[df['City'] == 'Chicago']. Tyto filtrované DataFrames se tisknou pomocí print() funkce pro zobrazení vybraných řádků.
Druhý skript má podobnou strukturu, ale používá jiná data a kritéria výběru. Vytvoří DataFrame s informacemi o produktu, včetně sloupců 'Produkt', 'Cena' a 'Stock'. Vybírají se řádky, kde je 'Cena' menší nebo rovna 200 s df[df['Price'] <= 200]a kde 'Stock' je více než 40 použití df[df['Stock'] > 40]. Účelem těchto skriptů je ukázat, jak filtrovat řádky DataFrame na základě konkrétních podmínek, podobně jako byste použili dotaz SQL k výběru řádků z tabulky na základě hodnoty sloupce. Pochopením a použitím těchto příkazů můžete efektivně manipulovat a analyzovat data ve vašich DataFrames.
Výběr řádků v datovém rámci pomocí hodnot sloupců v Pandas
Python s knihovnou Pandas
# Importing the necessary library
import pandas as pd
# Creating a sample DataFrame
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [24, 27, 22, 32, 29],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']
}
df = pd.DataFrame(data)
# Selecting rows where Age is greater than 25
selected_rows = df[df['Age'] > 25]
print(selected_rows)
# Selecting rows where City is 'Chicago'
chicago_rows = df[df['City'] == 'Chicago']
print(chicago_rows)
Filtrování dat v datovém rámci na základě kritérií sloupců
Python s knihovnou Pandas
# Importing pandas library
import pandas as pd
# Creating a sample DataFrame
data = {'Product': ['A', 'B', 'C', 'D', 'E'],
'Price': [100, 150, 200, 250, 300],
'Stock': [30, 60, 90, 20, 50]}
df = pd.DataFrame(data)
# Selecting rows where Price is less than or equal to 200
affordable_products = df[df['Price'] <= 200]
print(affordable_products)
# Selecting rows where Stock is more than 40
in_stock = df[df['Stock'] > 40]
print(in_stock)
Pokročilé techniky pro výběr řádků DataFrame v Pandas
Kromě základního filtrování pomocí booleovského indexování nabízí Pandas pokročilé techniky pro výběr řádků na základě hodnot sloupců. Jednou mocnou metodou je použití query() funkce, která umožňuje filtrovat řádky pomocí výrazu dotazu, díky čemuž je syntaxe čistší a často intuitivnější. Například místo použití df[df['Age'] > 25], můžeš psát df.query('Age > 25'). Tato metoda je užitečná zejména při řešení složitějších podmínek nebo když názvy sloupců obsahují mezery. Kromě toho, isin() Funkce je užitečná, když chcete filtrovat řádky na základě seznamu hodnot. Chcete-li například vybrat řádky, kde je hodnota sloupce 'City' buď 'Chicago' nebo 'New York', můžete použít df[df['City'].isin(['Chicago', 'New York'])].
Další technika zahrnuje loc a iloc indexátory. The loc indexer je založen na štítcích a umožňuje vám vybrat řádky na základě štítků řádků a názvů sloupců iloc je založen na celočíselných umístěních a umožňuje výběr podle čísel řádků a sloupců. Tato flexibilita je užitečná zejména pro výběr řádků na základě podmínky aplikované na jiný sloupec. Například, df.loc[df['Age'] > 25, 'Name'] vrátí jména osob starších 25 let. Tyto metody rozšiřují vaši sadu nástrojů pro efektivní manipulaci a analýzu dat v Pandas a nabízejí čitelnější a udržitelnější kód.
Běžné otázky a odpovědi týkající se výběru řádků DataFrame
- Jak mohu vybrat řádky na základě více podmínek?
- Můžete použít query() funkce nebo kombinovat podmínky s logickými operátory jako & a |. Například, df[(df['Age'] > 25) & (df['City'] == 'Chicago')].
- Mohu filtrovat řádky na základě seznamu hodnot?
- Ano, použijte isin() funkce. Například, df[df['City'].isin(['Chicago', 'New York'])].
- Jaký je rozdíl mezi loc a iloc?
- loc je založen na štítku, zatímco iloc je založen na celočíselném umístění. Použití loc s popisky řádků/sloupců a iloc s řádkovými/sloupcovými indexy.
- Jak mohu vybrat konkrétní sloupce při filtrování řádků?
- Můžeš použít loc. Například, df.loc[df['Age'] > 25, ['Name', 'City']].
- Jak naložím s chybějícími hodnotami při výběru řádků?
- Použijte dropna() funkce pro odstranění řádků s chybějícími hodnotami, popř fillna() nahradit je zadanou hodnotou.
- Mohu použít regulární výrazy k filtrování řádků?
- Ano, str.contains() funkce s regex=True umožňuje filtrovat řádky na základě vzorů regulárních výrazů. Například, df[df['Name'].str.contains('^A', regex=True)].
- Jak mohu filtrovat řádky na základě indexu?
- Můžeš použít loc s názvem indexu. Například, df.loc[df.index == 'some_index'].
- Co když názvy sloupců obsahují mezery nebo speciální znaky?
- Použijte query() funkce, která dokáže zpracovat takové názvy sloupců se zpětným zaškrtnutím. Například, df.query('`column name` == value').
Závěrečné úvahy o technikách výběru řádků DataFrame
Výběr řádků z DataFrame na základě hodnot sloupců v Pandas je zásadní dovedností pro manipulaci s daty. Různé diskutované metody, včetně booleovského indexování, query(), isin()a indexování na základě štítků a celočíselných umístění pomocí loc a ilocposkytují výkonné nástroje pro efektivní filtrování dat. Zvládnutí těchto technik umožňuje lepší analýzu dat a čistší a lépe udržovatelný kód.