Výběr řádků DataFrame na základě hodnot sloupců v Pythonu

Výběr řádků DataFrame na základě hodnot sloupců v Pythonu
Python

Použití Pandas k filtrování datových rámců podle hodnot sloupců

Při práci s daty v Pythonu nabízí knihovna Pandas výkonné nástroje pro manipulaci a analýzu dat. Jedním z běžných úkolů je výběr řádků z DataFrame na základě hodnot v konkrétním sloupci. Tato operace je podobná SQL dotazu: SELECT * FROM tabulka WHERE název_sloupce = nějaká_hodnota.

V tomto článku prozkoumáme, jak toho dosáhnout v Pandas pomocí různých metod. Ať už filtrujete podle jedné hodnoty nebo podle více kritérií, Pandas poskytuje intuitivní a efektivní způsoby, jak takové operace zvládnout. Pojďme se ponořit do detailů.

Příkaz Popis
pd.DataFrame() Vytvoří objekt DataFrame ze slovníku nebo jiných datových struktur.
df[condition] Filtruje řádky DataFrame na základě podmínky a vrací pouze ty, které splňují kritéria.
print() Vyšle zadanou zprávu nebo DataFrame do konzoly.
df['column'] == value Vytvoří logickou řadu použitou k filtrování řádků, kde sloupec odpovídá zadané hodnotě.
df['column'] >df['column'] > value Vytvoří logickou řadu použitou k filtrování řádků, kde jsou hodnoty sloupců větší než zadaná hodnota.
# Comment Používá se k přidání vysvětlení nebo poznámek do kódu, které se nespouštějí jako součást skriptu.

Implementace výběru řádků DataFrame v Pandas

V poskytnutých skriptech je klíčovým úkolem filtrovat řádky z DataFrame na základě konkrétních hodnot sloupců, což je běžný požadavek při analýze dat. První skript začíná importem knihovny Pandas s import pandas as pd. To je nezbytné, protože Pandas je výkonná knihovna pro manipulaci s daty v Pythonu. Dále vytvoříme ukázkový DataFrame pomocí pd.DataFrame() se slovníkem obsahujícím údaje o jménech, stáří a městech. Tato struktura nám umožňuje snadno vizualizovat a manipulovat s tabulkovými daty. Rozhodující částí skriptu je, kde filtrujeme řádky pomocí df[df['city'] == 'New York']. Tento příkaz vybere všechny řádky, kde je hodnota sloupce města 'New York'. Výsledek se uloží do proměnné ny_rows, který se poté vytiskne a zobrazí se filtrovaný DataFrame.

Druhý skript má podobnou strukturu, ale zaměřuje se na filtrování řádků na základě číselné podmínky. Po importu Pandas a vytvoření DataFrame se sloupci produktu, ceny a množství skript používá df[df['price'] > 150] pro filtrování řádků, kde je cena vyšší než 150. Tento příkaz vytvoří podmnožinu původního DataFrame obsahující pouze řádky, které splňují zadanou podmínku. Výsledek je uložen v expensive_products a vytisknout pro ověření. Oba skripty demonstrují sílu a jednoduchost Pandas pro manipulaci s daty. Použitím booleovského indexování, což je metoda, kdy k filtrování dat předáváme řadu hodnot true/false, můžeme efektivně vybrat podmnožiny dat na základě různých podmínek, což z ní činí neocenitelný nástroj pro datové analytiky a vědce.

Filtrování řádků v datovém rámci na základě hodnot sloupců

Python - Použití Pandas pro operace DataFrame

import pandas as pd
# Create a sample DataFrame
data = {
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Edward'],
    'age': [24, 27, 22, 32, 29],
    'city': ['New York', 'Los Angeles', 'New York', 'Chicago', 'Los Angeles']
}
df = pd.DataFrame(data)

# Select rows where city is New York
ny_rows = df[df['city'] == 'New York']
print(ny_rows)

# Output:
#       name  age      city
# 0    Alice   24  New York
# 2  Charlie   22  New York

Dotazování na řádky datových rámců na základě hodnot sloupců

Python - Pokročilé filtrování s Pandas

import pandas as pd

# Create a sample DataFrame
data = {
    'product': ['A', 'B', 'C', 'D'],
    'price': [100, 150, 200, 250],
    'quantity': [30, 50, 20, 40]
}
df = pd.DataFrame(data)

# Select rows where price is greater than 150
expensive_products = df[df['price'] > 150]
print(expensive_products)

# Output:
#   product  price  quantity
# 2       C    200        20
# 3       D    250        40

Pokročilé techniky pro výběr řádků DataFrame

Kromě základního filtrování s booleovským indexováním nabízí Pandas pokročilejší techniky pro výběr řádků na základě hodnot sloupců. Jednou z takových metod je query() funkce, která vám umožňuje používat syntaxi podobnou SQL k filtrování řádků DataFrame. Můžete například použít df.query('age > 25 and city == "New York"') pro výběr řádků, kde je věk vyšší než 25 a město je New York. Tato metoda může učinit váš kód čitelnějším, zejména pro složité podmínky. Kromě toho Pandas poskytuje loc[] a iloc[] přístupové prvky pro přesnější výběr řádků. The loc[] přístupový objekt je založen na štítku, což znamená, že můžete filtrovat řádky podle štítků nebo podle booleovského pole. Na rozdíl od toho, iloc[] přístupový objekt je založen na celočíselných pozicích a umožňuje filtrovat řádky podle jejich indexových pozic.

Další výkonnou funkcí v Pandas je schopnost filtrovat řádky DataFrame pomocí isin() metoda. Tato metoda je užitečná, když potřebujete filtrovat řádky na základě seznamu hodnot. Například, df[df['city'].isin(['New York', 'Los Angeles'])] vybere řádky, kde je hodnota sloupce města buď New York, nebo Los Angeles. Kromě toho můžete řetězit více podmínek pomocí & a | operátory k vytvoření složitějších filtrů. Například, df[(df['age'] > 25) & (df['city'] == 'New York')] filtruje řádky, kde je věk vyšší než 25 a město je New York. Tyto pokročilé techniky poskytují robustní rámec pro filtrování dat, díky čemuž jsou Pandas univerzálním nástrojem pro analýzu dat a manipulaci s nimi.

Běžné otázky o výběru řádků DataFrame v Pandas

  1. Jak mohu filtrovat řádky v DataFrame na základě více hodnot sloupců?
  2. Booleovské indexování můžete použít s více podmínkami kombinovanými pomocí & a |. Například: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Jaký je rozdíl mezi loc[] a iloc[]?
  4. loc[] je založeno na štítku, zatímco iloc[] je založen na celočíselných pozicích. Použití loc[] pro filtrování podle štítků a iloc[] pro filtrování podle pozic indexu.
  5. Jak mohu použít query() funkce pro filtrování řádků DataFrame?
  6. The query() funkce umožňuje používat syntaxi podobnou SQL. Například: df.query('age > 25 and city == "New York"').
  7. Mohu filtrovat řádky na základě seznamu hodnot?
  8. Ano, můžete použít isin() metoda. Například: df[df['city'].isin(['New York', 'Los Angeles'])].
  9. Jaký je nejlepší způsob filtrování řádků na základě shody řetězců?
  10. Můžete použít str.contains() metoda. Například: df[df['city'].str.contains('New')].
  11. Jak mohu vybrat řádky, kde chybí hodnoty sloupců?
  12. Můžete použít isna() metoda. Například: df[df['age'].isna()].
  13. Jak mohu filtrovat řádky pomocí vlastní funkce?
  14. Můžete použít apply() metoda s funkcí lambda. Například: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Mohu filtrovat řádky na základě hodnot indexu?
  16. Ano, můžete použít index.isin() metoda. Například: df[df.index.isin([1, 3, 5])].

Klíčové poznatky pro výběr řádku DataFrame

Výběr řádků z DataFrame na základě hodnot sloupců je základní dovedností v analýze dat s Pandas. Využití booleovského indexování, loc[], iloc[], query(), a isin() metody umožňují efektivní filtrování dat. Zvládnutí těchto technik zlepší vaši schopnost efektivně manipulovat a analyzovat datové sady.