
Funkcja apply()
z biblioteki pandas
to jedno z najważniejszych narzędzi, które pozwala na efektywne przetwarzanie danych w DataFrame i Series. Dzięki niej mogę zastosować dowolną funkcję do wierszy lub kolumn, co znacznie przyspiesza operacje na dużych zbiorach danych. W tym artykule wyjaśnię, jak działa apply()
, pokażę jej praktyczne zastosowania i przedstawię przykłady kodu w Pythonie.
Jak działa pandas apply w języku Python?
Metoda apply()
pozwala na wywołanie funkcji dla każdej wartości w kolumnie lub wierszu obiektu DataFrame
lub Series
. Jest to znacznie bardziej wydajne niż iterowanie po wierszach przy użyciu pętli for
.
Podstawowa składnia wygląda tak:
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
func
– funkcja, którą chcę zastosować.axis=0
– operacja wykonywana na kolumnach (domyślnie).axis=1
– operacja wykonywana na wierszach.raw=False
– gdy ustawione naTrue
, przekazuje wartości NumPy zamiast pandas Series.result_type=None
– typ zwracanego wyniku.args
– dodatkowe argumenty przekazywane do funkcji.
Przykład zastosowania apply() w praktyce
Aby lepiej zrozumieć, jak działa pandas apply w języku Python, stworzę przykładowy DataFrame.
import pandas as pd
# Tworzenie przykładowych danych
data = {
'Imię': ['Anna', 'Piotr', 'Kasia', 'Tomek'],
'Wiek': [23, 35, 29, 41],
'Pensja': [4000, 5000, 4500, 5200]
}
df = pd.DataFrame(data)
print(df)
Wynik powyższego kodu:
Imię | Wiek | Pensja |
---|---|---|
Anna | 23 | 4000 |
Piotr | 35 | 5000 |
Kasia | 29 | 4500 |
Tomek | 41 | 5200 |
Zastosowanie funkcji do jednej kolumny
Teraz przy użyciu apply()
sprawię, że kolumna „Wiek” zostanie przekształcona w kategorie młody/stary.
df['Kategoria_Wieku'] = df['Wiek'].apply(lambda x: 'Młody' if x < 30 else 'Stary')
print(df)
Rezultat:
Imię | Wiek | Pensja | Kategoria_Wieku |
---|---|---|---|
Anna | 23 | 4000 | Młody |
Piotr | 35 | 5000 | Stary |
Kasia | 29 | 4500 | Młody |
Tomek | 41 | 5200 | Stary |
Zastosowanie apply() do wielu kolumn
Można też wykorzystać apply()
, aby zastosować funkcję do wielu kolumn jednocześnie. Na przykład obliczę nową kolumnę z podwyżką pensji o 10%.
def podwyzka(row):
return row['Pensja'] * 1.1
df['Pensja_z_podwyzka'] = df.apply(podwyzka, axis=1)
print(df)
Różnica między apply() a map()
Warto zwrócić uwagę na to, czym różni się apply()
od map()
i applymap()
:
apply()
– stosowane do wierszy lub kolumn DataFrame.map()
– działa tylko na Series.applymap()
– działa na każdą komórkę w DataFrame.
Podsumowanie
Metoda apply()
w Pandas to bardzo potężne narzędzie, które pozwala na operacje na danych w sposób wydajny i czytelny. Dzięki niej mogę manipulować kolumnami, wyliczać nowe wartości i optymalizować kod. Jeżeli pracuję z dużym zestawem danych, warto pamiętać, że zamiast pętli for
lepiej wykorzystać apply()
.
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych - dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.