0Pricing
Python Academy · Lekcja

Indeksowanie, filtrowanie i maski logiczne

Proszę wybierać wiersze i kolumny za pomocą loc, iloc oraz warunków logicznych.

Indeksowanie, filtrowanie i maski logiczne to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

loc a iloc

loc wybiera dane według etykiety, a iloc według pozycji całkowitoliczbowej. Nie należy ich ze sobą mylić.

import pandas as pd

df = pd.DataFrame({"a":[1,2,3],"b":[4,5,6]}, index=["x","y","z"])
print(df.loc["y"])       # row with label y
print(df.iloc[1])        # row at position 1 (same row)
print(df.loc["x":"y"])   # rows x to y inclusive

Filtrowanie maską logiczną

Należy utworzyć obiekt Series wartości logicznych i użyć go do wybrania wierszy. Jest to odpowiednik logicznego indeksowania w bibliotece NumPy.

import pandas as pd

df = pd.DataFrame({"name":["Alice","Bob","Carol"],"age":[30,17,25]})
adults = df[df["age"] >= 18]
print(adults)
# Alice 30
# Carol 25

Wiele warunków

Warunki logiczne należy łączyć za pomocą & (and) i | (or). Każdy warunek należy ująć w nawiasy.

import pandas as pd

df = pd.DataFrame({"city":["NY","LA","NY","LA"],"score":[80,90,70,85]})
result = df[(df["city"]=="NY") & (df["score"]>75)]
print(result)

Metoda query()

df.query("expression") przyjmuje wyrażenie tekstowe, które często jest czytelniejsze niż maski logiczne.

import pandas as pd

df = pd.DataFrame({"age":[30,17,25],"score":[90,80,70]})
result = df.query("age >= 18 and score > 75")
print(result)

Filtrowanie za pomocą isin()

isin(list) filtruje wiersze, w których wartość kolumny znajduje się na podanej liście.

import pandas as pd

df = pd.DataFrame({"city":["NY","LA","Chicago","NY"],"val":[1,2,3,4]})
print(df[df["city"].isin(["NY","LA"])])
# rows with NY or LA

between() do filtrowania zakresu

series.between(left, right) zwraca True dla wartości z zakresu [left, right] — domyślnie wraz z końcami zakresu.

import pandas as pd

df = pd.DataFrame({"score":[55,70,85,95,40]})
print(df[df["score"].between(60, 90)])
# 70 and 85

loc do przypisywania

Do przypisywania wartości w miejscu należy zawsze używać loc/iloc, aby uniknąć ostrzeżenia SettingWithCopyWarning.

import pandas as pd

df = pd.DataFrame({"val":[1,2,3,4]})
df.loc[df["val"] > 2, "val"] = 99
print(df)
# 0:1  1:2  2:99  3:99

at i iat dla pojedynczych wartości

at[label, col] i iat[i, j] zapewniają szybki dostęp do wartości skalarnych — w przypadku pojedynczych wartości są szybsze niż loc/iloc.

import pandas as pd

df = pd.DataFrame({"a":[10,20],"b":[30,40]})
print(df.at[0,"a"])    # 10  (by label)
print(df.iat[1,1])     # 40  (by position)

Wybieranie według typu danych

select_dtypes(include/exclude) wybiera kolumny według typu danych.

import pandas as pd

df = pd.DataFrame({"x":[1,2],"name":["a","b"],"score":[1.5,2.5]})
nums = df.select_dtypes(include=["number"])
print(nums.columns.tolist())   # ['x', 'score']

Usuwanie duplikatów

drop_duplicates() usuwa zduplikowane wiersze. Za pomocą subset można określić, aby porównywane były tylko wybrane kolumny.

import pandas as pd

df = pd.DataFrame({"name":["Alice","Bob","Alice"],"age":[30,25,30]})
print(df.drop_duplicates())
# keeps first Alice, removes second

nlargest i nsmallest

Metody te pozwalają wydajnie wybrać N początkowych lub końcowych wierszy według wartości w kolumnie.

import pandas as pd

df = pd.DataFrame({"product":["A","B","C","D"],"sales":[500,300,800,200]})
print(df.nlargest(2,"sales"))
# C 800
# A 500

Szybkie sprawdzenie

Jaka jest różnica między loc a iloc?

Podsumowanie

Należy używać loc[label] do wyboru według etykiety, a iloc[i] do wyboru według pozycji. Wiersze należy filtrować za pomocą masek logicznych łączonych operatorami &/|. query() służy do tworzenia czytelnych filtrów, a isin() do sprawdzania przynależności. Wartości należy zawsze przypisywać za pośrednictwem loc, aby uniknąć ostrzeżenia SettingWithCopyWarning.

Często zadawane pytania

Czy lekcja „Indeksowanie, filtrowanie i maski logiczne” jest bezpłatna?

Tak — pełny tekst „Indeksowanie, filtrowanie i maski logiczne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Indeksowanie, filtrowanie i maski logiczne”?

Proszę wybierać wiersze i kolumny za pomocą loc, iloc oraz warunków logicznych. Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Indeksowanie, filtrowanie i maski logiczne”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Podstawy Series i DataFrame
  2. Indeksowanie, filtrowanie i maski logiczne
  3. GroupBy, agregacja i tabele przestawne
  4. Scalanie, łączenie i czyszczenie danych
← Powrót do Python Academy