
Pracując z biblioteką pandas w Pythonie, często spotykam się z sytuacją, w której muszę przekształcić dane w ramach konkretnej grupy lub kolumny. Jednym z narzędzi, które mi to umożliwia, jest metoda transform()
. W tym artykule omówię, jak działa pandas.transform()
, do czego się przydaje oraz pokażę przykłady zastosowania.
Co to jest pandas.transform()
?
Metoda transform()
pozwala stosować funkcje transformacyjne do każdej grupy lub kolumny w DataFrame
lub Series
. W przeciwieństwie do apply()
, która może zwracać obiekty o różnych kształtach, transform()
zawsze zwraca obiekt o tej samej liczbie elementów co oryginał. To kluczowa cecha, ponieważ umożliwia łatwe zachowanie struktury zbioru danych.
Podstawowa składnia
DataFrame.transform(func, axis=0, *args, **kwargs)
func
– funkcja lub lista funkcji do zastosowania.axis
– określa, czy operacja ma dotyczyć wierszy (0) czy kolumn (1).*args
– dodatkowe argumenty przekazywane do funkcji.**kwargs
– dodatkowe argumenty nazwane.
Przykład zastosowania: normalizacja wartości w grupach
Załóżmy, że mamy zbiór danych przedstawiający sprzedaż w różnych regionach. Chcemy przekształcić kolumnę Sprzedaż
, normalizując wartości wewnątrz każdej grupy.
import pandas as pd
# Tworzymy przykładowy DataFrame
df = pd.DataFrame({
'Region': ['A', 'A', 'A', 'B', 'B', 'B'],
'Sprzedaż': [100, 200, 150, 300, 250, 400]
})
# Normalizujemy sprzedaż w każdym regionie
df['Sprzedaż_Znormalizowana'] = df.groupby('Region')['Sprzedaż'].transform(lambda x: (x - x.mean()) / x.std())
print(df)
Otrzymamy wynik podobny do:
Region | Sprzedaż | Sprzedaż_Znormalizowana |
---|---|---|
A | 100 | -1.224745 |
A | 200 | 1.224745 |
A | 150 | 0.000000 |
B | 300 | 0.000000 |
B | 250 | -1.000000 |
B | 400 | 1.000000 |
Różnica między transform()
a apply()
Metoda apply()
pozwala na stosowanie przekształceń do grup danych, ale w przeciwieństwie do transform()
, wynik może mieć inną liczbę elementów niż oryginalny zbiór danych. Zobaczmy prosty przykład:
df.groupby('Region')['Sprzedaż'].apply(lambda x: x.mean())
Wynikiem będzie seria z wartością średniej dla każdego regionu. Z kolei transform()
zwraca obiekt o tej samej liczbie elementów co wejściowy DataFrame
, co ułatwia integrację tych wartości do oryginalnych danych.
Przydatne zastosowania transform()
Metoda transform()
sprawdza się w wielu scenariuszach, takich jak:
- Normalizacja i standaryzacja wartości w grupach.
- Obliczanie średnich czy median w obrębie grup i przypisywanie ich do oryginalnych danych.
- Tworzenie nowych cech (feature engineering) w uczeniu maszynowym.
Podsumowanie
Metoda pandas.transform()
to świetne narzędzie do przekształcania danych bez zmiany ich struktury. Jest niezwykle przydatna w analizie danych i uczeniu maszynowym, zwłaszcza kiedy chcemy stosować operacje na grupach, ale jednocześnie zachować pierwotny kształt zbioru. Mam nadzieję, że ten artykuł pomógł Ci lepiej zrozumieć, jak działa transform()
w języku Python oraz w jakich sytuacjach warto go używać.
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.