0Pricing
Pandas & NumPy Academy · Lekcja

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.Series

Wybieranie 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-table

Wybieranie 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     71

Zł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  9

Wybieranie 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']])) # DataFrame

at 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])       # 3

Ostrzeż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

  1. Tworzenie DataFrame
  2. Wybieranie kolumn i wierszy
  3. Dodawanie i usuwanie kolumn
  4. Podstawowa inspekcja DataFrame
← Powrót do Pandas & NumPy Academy