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
- Ako môžem filtrovať riadky v DataFrame na základe hodnôt viacerých stĺpcov?
- Môžete použiť boolovské indexovanie s viacerými podmienkami kombinovanými pomocou & a |. Napríklad: df[(df['age'] > 25) & (df['city'] == 'New York')].
- Aký je rozdiel medzi loc[] a iloc[]?
- 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í.
- Ako môžem použiť query() funkcia na filtrovanie riadkov DataFrame?
- The query() funkcia vám umožňuje používať syntax podobnú SQL. Napríklad: df.query('age > 25 and city == "New York"').
- Môžem filtrovať riadky na základe zoznamu hodnôt?
- Áno, môžete použiť isin() metóda. Napríklad: df[df['city'].isin(['New York', 'Los Angeles'])].
- Aký je najlepší spôsob filtrovania riadkov na základe zhody reťazcov?
- Môžete použiť str.contains() metóda. Napríklad: df[df['city'].str.contains('New')].
- Ako môžem vybrať riadky, v ktorých chýbajú hodnoty stĺpcov?
- Môžete použiť isna() metóda. Napríklad: df[df['age'].isna()].
- Ako môžem filtrovať riadky pomocou vlastnej funkcie?
- Môžete použiť apply() metóda s lambda funkciou. Napríklad: df[df.apply(lambda row: row['age'] > 25, axis=1)].
- Môžem filtrovať riadky na základe hodnôt indexu?
- Á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.