Jak działa pandas assign w języku Python? Przykład zastosowania

Jak działa pandas assign w języku Python? Przykład zastosowania
„`html

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
KajoDataSpace