Baza wiedzy / Python
Jak działa pandas query w języku Python? Przykład zastosowania

Jeśli pracujesz z biblioteką Pandas w Pythonie i często filtrujesz dane w DataFrame, to pewnie wiesz, że standardowe podejście z wykorzystaniem nawiasów kwadratowych może być nieco rozwlekłe. Na szczęście, Pandas oferuje elegancką i czytelną metodę query(), która pozwala filtrować dane w sposób bardziej zwięzły i przejrzysty. W tym artykule wyjaśniam, jak działa pandas.query() w języku Python oraz przedstawiam przykłady praktycznego zastosowania tej funkcji.
Co to jest pandas.query()?
Metoda query() w Pandas jest alternatywą dla tradycyjnych sposobów filtrowania danych. Pozwala na użycie wyrażeń w formie zapytań przypominających składnię SQL, co czyni kod bardziej czytelnym i skraca jego długość.
Składnia funkcji query()
Podstawowa składnia tej funkcji wygląda następująco:
DataFrame.query(expr, inplace=False, engine='numexpr', parser='pandas')
Gdzie:
expr– warunek filtrowania zapisany jako string (ciąg znaków)inplace– jeśli ustawione naTrue, modyfikuje oryginalnyDataFrameengine– domyślnie używa'numexpr'do optymalizacji zapytańparser– opcjonalny parser zapytań (najczęściej pozostawiamy domyślną wartość)
Przykłady zastosowania query()
Filtrowanie danych na podstawie jednej kolumny
Rozważmy prostą tabelę z danymi o produktach:
import pandas as pd
# Tworzymy DataFrame
df = pd.DataFrame({
'Produkt': ['Jabłko', 'Banan', 'Pomarańcza', 'Winogrona'],
'Cena': [3, 4, 5, 10],
'Dostępność': [True, False, True, True]
})
# Filtrowanie produktów tańszych niż 5 zł
tanie_produkty = df.query("Cena < 5")
Po wykonaniu tego kodu otrzymamy tabelę:
| Produkt | Cena | Dostępność |
|---|---|---|
| Jabłko | 3 | True |
| Banan | 4 | False |
Filtrowanie z wykorzystaniem operatora logicznego
Możemy filtrować dane według kilku warunków jednocześnie:
dostepne_tanie_produkty = df.query("Cena < 5 and Dostępność == True")
To zapytanie zwróci produkty, które są tańsze niż 5 zł i jednocześnie dostępne.
Filtrowanie z użyciem zmiennych
Jeśli chcemy użyć zmiennych w zapytaniu, możemy zastosować symbol @:
max_cena = 4
df.query("Cena <= @max_cena")
Dzięki temu możemy łatwo tworzyć dynamiczne zapytania.
Zalety stosowania query()
Oto kilka powodów, dla których warto korzystać z tej metody:
- Czytelność – zapytania są bardziej zwięzłe w porównaniu do standardowych metod filtrowania.
- Wydajność – dla dużych zbiorów danych może być szybsze niż tradycyjne indeksowanie.
- Łatwość użycia zmiennych – wykorzystanie
@pozwala dynamicznie tworzyć zapytania.
Podsumowanie
Metoda pandas.query() w języku Python to doskonałe narzędzie do filtrowania danych w sposób przejrzysty i elegancki. Pozwala na pisanie krótszego i bardziej czytelnego kodu, szczególnie gdy mamy do czynienia z dużymi zbiorami danych. Dzięki wsparciu dla zmiennych i operatorów logicznych, jej stosowanie może znacznie ułatwić codzienną pracę z danymi w Pandas.
