
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 oryginalnyDataFrame
engine
– 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.
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych - dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.