Wybieranie kolumn i wierszy
Wybierać pojedyncze kolumny lub ich grupy za pomocą notacji nawiasów oraz pobierać wiersze według etykiety i pozycji przy użyciu .loc i .iloc
Wybieranie kolumn i wierszy to bezpłatna lekcja Pandas & NumPy 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 Pandas & NumPy Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.
Wybieranie pojedynczej kolumny
Pojedynczą kolumnę można uzyskać po nazwie za pomocą notacji nawiasowej df['col'], która zwraca obiekt typu Series. Można również użyć notacji kropkowej df.col, gdy nazwa kolumny jest prawidłowym identyfikatorem Pythona i nie zawiera spacji. Notacja nawiasowa jest zawsze bezpieczna; notacja kropkowa nie działa dla nazw kolidujących z metodami DataFrame, takimi jak count lub mean.
import pandas as pd
df = pd.DataFrame({'name': ['Alice', 'Bob'], 'score': [90, 75]})
print(df['name']) # Series
print(type(df['name'])) # pandas.core.series.SeriesWybieranie wielu kolumn
Aby wybrać wiele kolumn, należy przekazać listę nazw kolumn wewnątrz nawiasów: df[['col1', 'col2']]. Proszę zwrócić uwagę na podwójne nawiasy — zewnętrzna para jest operatorem indeksowania, a wewnętrzna tworzy listę Pythona. Wynikiem jest DataFrame, a nie Series. Sposób ten jest często używany do wyodrębniania macierzy cech na potrzeby uczenia maszynowego.
import pandas as pd
df = pd.DataFrame({'a': [1,2], 'b': [3,4], 'c': [5,6]})
subset = df[['a', 'c']]
print(type(subset)) # pandas.core.frame.DataFrame
print(subset).loc do wybierania wierszy i kolumn
df.loc[row_label, col_label] wybiera dane na podstawie etykiety. Dla wierszy i kolumn można podać pojedynczą etykietę, listę etykiet lub wycinek. df.loc[:, 'score'] wybiera wszystkie wiersze kolumny „score”. df.loc['r1':'r3', ['a', 'b']] wybiera wiersze od r1 do r3 (włącznie) dla kolumn a i b.
import pandas as pd
df = pd.DataFrame({'x': [10,20,30], 'y': [40,50,60]},
index=['r1', 'r2', 'r3'])
print(df.loc['r2', 'x']) # 20
print(df.loc['r1':'r2', 'y']) # r1:40 r2:50.iloc do wybierania według pozycji
df.iloc[row_pos, col_pos] wybiera dane na podstawie pozycji całkowitej, ignorując etykiety. Oba argumenty stosują konwencje wycinków Pythona z wyłącznym końcem zakresu. df.iloc[:, 0] wybiera pierwszą kolumnę jako Series. df.iloc[0:2, 1:3] wybiera prostokątny pod-DataFrame 2×2 z lewego górnego rogu.
import pandas as pd
df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7,8,9]})
print(df.iloc[1, 2]) # 8 -- row 1, col 2
print(df.iloc[0:2, 0:2]) # top-left 2x2 sub-tableWybieranie wierszy za pomocą wartości logicznych
Do .loc można przekazać serię wartości logicznych (o tym samym indeksie co DataFrame), aby filtrować wiersze. Serię wartości logicznych należy utworzyć na podstawie warunku dotyczącego kolumny. Warunki można łączyć za pomocą & i |. Jest to standardowy wzorzec filtrowania w analizie danych Pandas i zapewnia znacznie większe możliwości niż klauzule SQL WHERE w przypadku złożonych warunków obejmujących wiele kolumn.
import pandas as pd
df = pd.DataFrame({'name': ['A','B','C','D'], 'score': [80,55,92,71]})
high = df.loc[df['score'] >= 70]
print(high)
# name score
# 0 A 80
# 2 C 92
# 3 D 71Złożone warunki filtrowania
Każdy z wielu warunków musi być ujęty w nawiasy i połączony za pomocą & (AND) lub | (OR). Użycie słów kluczowych Pythona and/or dla obiektów Series powoduje błąd. Aby zanegować warunek, należy użyć ~ (tyldy) zamiast not. Przed połączeniem warunków należy zawsze testować je osobno, aby ustalić źródło nieoczekiwanych wyników.
import pandas as pd
df = pd.DataFrame({'name': ['A','B','C','D'],
'score': [80, 55, 92, 71],
'dept': ['Eng', 'HR', 'Eng', 'HR']})
filtered = df.loc[(df['score'] >= 70) & (df['dept'] == 'Eng')]
print(filtered)Wybieranie wierszy według pozycji całkowitej
df.iloc[n] zwraca n-ty wiersz jako Series. df.iloc[n:m] zwraca wiersze od n do m-1 jako DataFrame. df.iloc[[0, 2, 4]] wybiera konkretne wiersze według pozycji za pomocą indeksowania zaawansowanego. Jest to odpowiednik wybierania wierszy tablicy NumPy i często używa się go do podziału na dane treningowe i testowe przed zastosowaniem modeli uczenia maszynowego.
import pandas as pd
df = pd.DataFrame({'a': range(5), 'b': range(5, 10)})
print(df.iloc[0]) # first row as Series
print(df.iloc[1:3]) # rows 1 and 2 as DataFrame
print(df.iloc[[0, 4]]) # first and last rowŁączenie wybierania wierszy i kolumn
Zarówno .loc, jak i .iloc przyjmują dwa argumenty: df.loc[row_selector, col_selector]. Umożliwia to precyzyjne wybranie prostokątnego fragmentu w jednym wyrażeniu. Sam dwukropek : wybiera wszystkie wiersze lub wszystkie kolumny. Ten schemat jest niezbędny do wyodrębniania macierzy cech z określonymi kolumnami wyłącznie dla wierszy treningowych zbioru danych.
import pandas as pd
df = pd.DataFrame({'x': [1,2,3], 'y': [4,5,6], 'z': [7,8,9]})
# Filter rows where x > 1, keep columns y and z
result = df.loc[df['x'] > 1, ['y', 'z']]
print(result)
# y z
# 1 5 8
# 2 6 9Wybieranie pojedynczego wiersza za pomocą .loc
Po przekazaniu pojedynczej etykiety skalarnej do df.loc[label] wynikiem jest Series, którego indeks stanowią nazwy kolumn. Jest to przydatne podczas sprawdzania konkretnego rekordu. Aby uzyskać DataFrame zawierający jeden wiersz, należy umieścić etykietę w liście: df.loc[[label]]. Ta różnica ma znaczenie przy przekazywaniu wyników do funkcji oczekujących DataFrame.
import pandas as pd
df = pd.DataFrame({'name': ['A','B'], 'score': [80, 90]},
index=['r1', 'r2'])
print(type(df.loc['r1'])) # Series
print(type(df.loc[['r1']])) # DataFrameat i iat do szybkiego dostępu do wartości skalarnych
df.at[row_label, col_name] i df.iat[row_pos, col_pos] pobierają lub ustawiają pojedynczą wartość skalarną przy mniejszym narzucie niż .loc/.iloc. Są przeznaczone do pętli aktualizujących pojedyncze komórki. W kodzie produkcyjnym należy zawsze preferować operacje wektorowe zamiast aktualizacji komórka po komórce, ale z at/iat warto korzystać, gdy rzeczywiście trzeba iterować.
import pandas as pd
df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]},
index=['a', 'b', 'c'])
print(df.at['b', 'y']) # 5
print(df.iat[2, 0]) # 3Ostrzeżenie dotyczące indeksowania łańcuchowego
Indeksowanie łańcuchowe, takie jak df['col'][condition] lub df[mask]['col'] = val, może wygenerować SettingWithCopyWarning, ponieważ Pandas może operować na kopii zamiast na oryginale. Przy każdej modyfikacji należy używać pojedynczego wyrażenia .loc: df.loc[mask, 'col'] = val. Jest to prawidłowy wzorzec, który nie generuje ostrzeżeń.
import pandas as pd
df = pd.DataFrame({'score': [80, 55, 92]})
# WRONG - may not modify original:
# df[df['score'] > 60]['score'] = 100
# CORRECT:
df.loc[df['score'] > 60, 'score'] = 100
print(df)Szybkie sprawdzenie
Proszę sprawdzić swoją znajomość wybierania kolumn i wierszy z tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo: .loc wybiera wiersze i kolumny według etykiet, uwzględniając końce wycinków, .iloc wybiera według pozycji całkowitej, z wyłącznymi końcami zakresów jak w wycinkach Pythona, a warunki logiczne stosowane za pomocą .loc filtrują wiersze bez problemu SettingWithCopyWarning charakterystycznego dla indeksowania łańcuchowego. Następnie dodamy nowe obliczane kolumny, zmienimy nazwy istniejących i usuniemy niepotrzebne kolumny za pomocą drop().
Często zadawane pytania
Czy lekcja „Wybieranie kolumn i wierszy” jest bezpłatna?
Tak — pełny tekst „Wybieranie kolumn i wierszy” 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 Pandas & NumPy Academy, przejdź na CoddyKit PRO. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wybieranie kolumn i wierszy”?
Wybierać pojedyncze kolumny lub ich grupy za pomocą notacji nawiasów oraz pobierać wiersze według etykiety i pozycji przy użyciu .loc i .iloc Ćwiczysz Pandas & NumPy 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ąć Pandas & NumPy Academy?
Nie wymagamy żadnego doświadczenia. Pandas & NumPy 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 „Wybieranie kolumn i wierszy”?
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 Pandas & NumPy Academy?
Tak. Każda lekcja Pandas & NumPy 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
- Tworzenie DataFrame
- Wybieranie kolumn i wierszy
- Dodawanie i usuwanie kolumn
- Podstawowa inspekcja DataFrame