Výber riadkov DataFrame na základe hodnôt stĺpcov v Pythone

Výber riadkov DataFrame na základe hodnôt stĺpcov v Pythone
Python

Použitie Pandy na filtrovanie dátových rámcov podľa hodnôt stĺpcov

Pri práci s údajmi v Pythone ponúka knižnica Pandas výkonné nástroje na manipuláciu a analýzu údajov. Jednou z bežných úloh je výber riadkov z dátového rámca na základe hodnôt v konkrétnom stĺpci. Táto operácia je podobná dotazu SQL: SELECT * FROM tabuľka WHERE názov_stĺpca = nejaká_hodnota.

V tomto článku preskúmame, ako to dosiahnuť v Pandas pomocou rôznych metód. Či už filtrujete podľa jednej hodnoty alebo viacerých kritérií, Pandas poskytuje intuitívne a efektívne spôsoby, ako zvládnuť takéto operácie. Poďme sa ponoriť do detailov.

Príkaz Popis
pd.DataFrame() Vytvorí objekt DataFrame zo slovníka alebo iných dátových štruktúr.
df[condition] Filtruje riadky DataFrame na základe podmienky a vráti iba tie, ktoré spĺňajú kritériá.
print() Výstup zadanej správy alebo dátového rámca do konzoly.
df['column'] == value Vytvorí logickú sériu používanú na filtrovanie riadkov, v ktorých sa stĺpec zhoduje so zadanou hodnotou.
df['column'] >df['column'] > value Vytvorí logickú sériu používanú na filtrovanie riadkov, v ktorých sú hodnoty stĺpcov väčšie ako zadaná hodnota.
# Comment Používa sa na pridanie vysvetlení alebo poznámok v rámci kódu, ktoré sa nevykonávajú ako súčasť skriptu.

Implementácia výberu riadkov DataFrame v Pandas

V poskytnutých skriptoch je kľúčovou úlohou filtrovať riadky z dátového rámca na základe špecifických hodnôt stĺpcov, čo je bežná požiadavka pri analýze dát. Prvý skript začína importovaním knižnice Pandas s import pandas as pd. To je nevyhnutné, pretože Pandas je výkonná knižnica na manipuláciu s údajmi v Pythone. Ďalej vytvoríme vzorový DataFrame pomocou pd.DataFrame() so slovníkom obsahujúcim údaje o menách, veku a mestách. Táto štruktúra nám umožňuje jednoducho vizualizovať a manipulovať s tabuľkovými údajmi. Rozhodujúcou časťou skriptu je, kde filtrujeme riadky pomocou df[df['city'] == 'New York']. Tento príkaz vyberie všetky riadky, kde je hodnota stĺpca mesta 'New York'. Výsledok sa uloží do premennej ny_rows, ktorý sa potom vytlačí, aby sa zobrazil filtrovaný DataFrame.

Druhý skript má podobnú štruktúru, ale zameriava sa na filtrovanie riadkov na základe číselnej podmienky. Po importe Pandas a vytvorení DataFrame so stĺpcami produktu, ceny a množstva skript používa df[df['price'] > 150] na filtrovanie riadkov, ktorých cena je väčšia ako 150. Tento príkaz vytvorí podmnožinu pôvodného DataFrame obsahujúceho iba riadky, ktoré spĺňajú zadanú podmienku. Výsledok je uložený v expensive_products a vytlačené na overenie. Oba skripty demonštrujú silu a jednoduchosť Pandas pre manipuláciu s údajmi. Použitím booleovskej indexácie, metódy, pri ktorej na filtrovanie údajov odovzdávame sériu hodnôt true/false, môžeme efektívne vyberať podmnožiny údajov na základe rôznych podmienok, čo z nej robí neoceniteľný nástroj pre analytikov údajov a vedcov.

Filtrovanie riadkov v dátovom rámci na základe hodnôt stĺpcov

Python - Používanie Pandas pre operácie 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

Dotazovanie na riadky dátového rámca na základe hodnôt stĺpcov

Python - Pokročilé filtrovanie 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 výberu riadkov DataFrame

Okrem základného filtrovania pomocou booleovskej indexácie ponúka Pandas pokročilejšie techniky výberu riadkov na základe hodnôt stĺpcov. Jednou z takýchto metód je query() funkcia, ktorá vám umožňuje použiť syntax podobnú SQL na filtrovanie riadkov DataFrame. Môžete napríklad použiť df.query('age > 25 and city == "New York"') vyberte riadky, ktorých vek je vyšší ako 25 rokov a mesto je New York. Táto metóda môže urobiť váš kód čitateľnejším, najmä v zložitých podmienkach. Okrem toho Pandas poskytuje loc[] a iloc[] prístupové prvky pre presnejší výber riadkov. The loc[] Accessor je založený na štítkoch, čo znamená, že môžete filtrovať riadky podľa ich štítkov alebo boolovského poľa. Na rozdiel od toho, iloc[] prístupový objekt je založený na celočíselnej pozícii, čo vám umožňuje filtrovať riadky podľa ich indexových pozícií.

Ďalšou výkonnou funkciou v Pandas je schopnosť filtrovať riadky DataFrame pomocou isin() metóda. Táto metóda je užitočná, keď potrebujete filtrovať riadky na základe zoznamu hodnôt. Napríklad, df[df['city'].isin(['New York', 'Los Angeles'])] vyberie riadky, v ktorých je hodnota stĺpca mesta buď New York alebo Los Angeles. Okrem toho môžete reťaziť viacero podmienok pomocou & a | operátorov na vytvorenie zložitejších filtrov. napr. df[(df['age'] > 25) & (df['city'] == 'New York')] filtruje riadky, kde je vek vyšší ako 25 a mesto je New York. Tieto pokročilé techniky poskytujú robustný rámec pre filtrovanie údajov, vďaka čomu je Pandas všestranným nástrojom na analýzu a manipuláciu s údajmi.

Bežné otázky o výbere riadkov DataFrame v Pandas

  1. Ako môžem filtrovať riadky v DataFrame na základe hodnôt viacerých stĺpcov?
  2. Môžete použiť boolovské indexovanie s viacerými podmienkami kombinovanými pomocou & a |. Napríklad: df[(df['age'] > 25) & (df['city'] == 'New York')].
  3. Aký je rozdiel medzi loc[] a iloc[]?
  4. loc[] je založený na označení, zatiaľ čo iloc[] je založený na celočíselnej pozícii. Použite loc[] na filtrovanie podľa štítkov a iloc[] na filtrovanie podľa indexových pozícií.
  5. Ako môžem použiť query() funkcia na filtrovanie riadkov DataFrame?
  6. The query() funkcia vám umožňuje používať syntax podobnú SQL. Napríklad: df.query('age > 25 and city == "New York"').
  7. Môžem filtrovať riadky na základe zoznamu hodnôt?
  8. Áno, môžete použiť isin() metóda. Napríklad: df[df['city'].isin(['New York', 'Los Angeles'])].
  9. Aký je najlepší spôsob filtrovania riadkov na základe zhody reťazcov?
  10. Môžete použiť str.contains() metóda. Napríklad: df[df['city'].str.contains('New')].
  11. Ako môžem vybrať riadky, v ktorých chýbajú hodnoty stĺpcov?
  12. Môžete použiť isna() metóda. Napríklad: df[df['age'].isna()].
  13. Ako môžem filtrovať riadky pomocou vlastnej funkcie?
  14. Môžete použiť apply() metóda s lambda funkciou. Napríklad: df[df.apply(lambda row: row['age'] > 25, axis=1)].
  15. Môžem filtrovať riadky na základe hodnôt indexu?
  16. Áno, môžete použiť index.isin() metóda. Napríklad: df[df.index.isin([1, 3, 5])].

Kľúčové poznatky pre výber riadkov dátového rámca

Výber riadkov z dátového rámca na základe hodnôt stĺpcov je základnou zručnosťou pri analýze dát s Pandas. Využitie boolovského indexovania, loc[], iloc[], query()a isin() metódy umožňujú efektívne filtrovanie údajov. Ovládanie týchto techník zvyšuje vašu schopnosť efektívne manipulovať a analyzovať množiny údajov.