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

Jak działa pandas query w języku Python? Przykład zastosowania
„`html

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 na True, modyfikuje oryginalny DataFrame
  • 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:

  1. Czytelność – zapytania są bardziej zwięzłe w porównaniu do standardowych metod filtrowania.
  2. Wydajność – dla dużych zbiorów danych może być szybsze niż tradycyjne indeksowanie.
  3. Ł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.

``` Inny ciekawy artykuł: Jak działa pandas nlargest w języku Python? Przykład zastosowania
KajoDataSpace