
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()
.
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.