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 inclusiveFiltrowanie 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 25Wiele 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 LAbetween() 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 85loc 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:99at 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 secondnlargest 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 500Szybkie 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
- Podstawy Series i DataFrame
- Indeksowanie, filtrowanie i maski logiczne
- GroupBy, agregacja i tabele przestawne
- Scalanie, łączenie i czyszczenie danych