
Funkcja assign() w bibliotece pandas to jedno z tych narzędzi, które mogą znacznie ułatwić pracę z danymi w języku Python. Pozwala na wygodne dodawanie nowych kolumn do obiektu DataFrame bez modyfikowania oryginalnego zbioru danych. W tym artykule wyjaśnię, jak działa pandas.assign(), jakie ma zalety oraz przedstawię przykłady praktycznego zastosowania.
Co to jest pandas.assign()?
W dużym uproszczeniu, metoda assign() umożliwia tworzenie nowych kolumn w obiekcie DataFrame lub nadpisywanie istniejących. Co ważne, ta operacja nie modyfikuje oryginalnego obiektu, ale zwraca jego zmodyfikowaną kopię.
Podstawowa składnia wygląda następująco:
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
df_new = df.assign(C=df['A'] + df['B'])
W powyższym przykładzie do istniejącego df dodaliśmy nową kolumnę C, która jest sumą wartości z kolumn A i B. Oryginalny DataFrame pozostał jednak bez zmian.
Najważniejsze zalety pandas.assign()
Metoda assign() ma kilka kluczowych zalet:
- Nie zmienia oryginalnego obiektu – zwraca nowy
DataFrame, co pomaga w unikaniu nieoczekiwanych zmian w danych. - Łatwość czytania – dzięki niej kod jest bardziej przejrzysty.
- Obsługa wielu nowych kolumn naraz – można dodać kilka nowych kolumn w jednym wywołaniu.
Dodawanie kilku kolumn jednocześnie
Warto zauważyć, że metoda assign() pozwala na jednoczesne dodawanie więcej niż jednej kolumny:
df_new = df.assign(
C=df['A'] * 2,
D=df['B'] ** 2
)
Teraz nowy obiekt df_new ma dwie dodatkowe kolumny: C i D.
Przykłady zastosowań pandas.assign()
1. Dodawanie nowej kolumny na podstawie istniejących
Załóżmy, że mamy dane dotyczące wynagrodzeń i chcemy dodać kolumnę z podatkiem dochodowym (np. 19% wartości pensji).
df = pd.DataFrame({
'Imię': ['Jan', 'Maria', 'Tomasz'],
'Pensja': [4000, 5000, 6000]
})
df_new = df.assign(Podatek=df['Pensja'] * 0.19)
2. Użycie funkcji lambda w assign()
Możemy też przekazać funkcję lambda wewnątrz assign(), np. aby obliczyć pensję netto:
df_new = df.assign(Netto=lambda x: x['Pensja'] - x['Podatek'])
3. Tworzenie kolumny na podstawie warunków
Poniżej przykład, w którym dodaję kolumnę oceny na podstawie średnich wyników ucznia:
df = pd.DataFrame({
'Uczeń': ['Alicja', 'Bartek', 'Cezary'],
'Średnia': [4.5, 3.2, 2.8]
})
df_new = df.assign(Status=df['Średnia'].apply(lambda x: 'Zaliczony' if x >= 3 else 'Niezaliczony'))
Alternatywa dla assign() – bezpośrednie przypisanie
Alternatywą dla assign() jest bezpośrednie przypisywanie wartości do kolumny, np.:
df['C'] = df['A'] + df['B']
Różnica polega na tym, że ta metoda modyfikuje oryginalny obiekt DataFrame, co w przypadku analizy danych nie zawsze jest pożądane.
Podsumowanie
Metoda assign() w bibliotece pandas to świetny sposób na dodawanie nowych kolumn bez zmiany oryginalnego DataFrame. Dzięki niej kod staje się bardziej czytelny, a operacje na danych – bardziej intuicyjne. Można jej używać zarówno do prostych operacji, jak i tych bardziej zaawansowanych, wykorzystujących funkcje lambda czy wartości warunkowe.
Podsumowując, jeśli zależy Ci na czystym i przejrzystym kodzie w analizie danych, warto sięgnąć po pandas.assign().
Inny ciekawy artykuł:
Jak działa pandas eval w języku Python? Przykład zastosowania
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, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

