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

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

Pracując z danymi w języku Python, często spotykam się z koniecznością usunięcia duplikatów w ramach struktury DataFrame. Na szczęście biblioteka pandas oferuje wygodną metodę drop_duplicates(), która pozwala na szybkie i efektywne zarządzanie zdublowanymi danymi. W tym artykule przyjrzę się dokładnie temu, jak działa pandas.drop_duplicates() w języku Python, oraz pokażę przykłady jego zastosowania.

Podstawowe działanie pandas.drop_duplicates()

Metoda drop_duplicates() służy do usuwania duplikatów z obiektu DataFrame. Domyślnie działa na wszystkich kolumnach i zachowuje pierwszy napotkany unikatowy wiersz, kasując pozostałe powtórzenia.

Podstawowa składnia tej metody wygląda tak:

DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)

Gdzie:

  • subset – określa, dla których kolumn sprawdzane są duplikaty. Jeśli nie zostanie podane, metoda analizuje wszystkie kolumny.
  • keep – wskazuje, które duplikaty zostaną zachowane:
    • 'first' – zachowuje pierwszy wystąpienie (domyślnie).
    • 'last' – zachowuje ostatnie wystąpienie.
    • False – usuwa wszystkie duplikaty.
  • inplace – jeśli ustawione na True, modyfikuje DataFrame w miejscu, zamiast zwracać nowy obiekt.
  • ignore_index – jeśli True, resetuje indeks wynikowego DataFrame.

Przykładowe użycie pandas.drop_duplicates()

Sprawdźmy, jak to działa w praktyce. Załaduję przykładowy zbiór danych:

import pandas as pd

# Tworzymy DataFrame z duplikatami
data = {'Imię': ['Anna', 'Tomasz', 'Anna', 'Kasia', 'Tomasz'],
        'Wiek': [25, 30, 25, 27, 30],
        'Miasto': ['Warszawa', 'Poznań', 'Warszawa', 'Gdańsk', 'Poznań']}

df = pd.DataFrame(data)
print("Oryginalny DataFrame:\n", df)

# Usuwamy duplikaty
df_unique = df.drop_duplicates()
print("\nDataFrame po usunięciu duplikatów:\n", df_unique)

Rezultat pokazuje, że metoda usuwa zbędne powtórzenia, zachowując pierwszy wiersz z danymi.

Usuwanie duplikatów tylko dla określonych kolumn

Co jeśli chcemy sprawdzić duplikaty tylko w oparciu o jedną lub dwie kolumny? Wystarczy podać parametr subset:

# Usunięcie duplikatów bazując tylko na kolumnie "Imię"
df_subset = df.drop_duplicates(subset=['Imię'])
print("\nDataFrame po usunięciu duplikatów w kolumnie 'Imię':\n", df_subset)

W ten sposób pandas sprawdza powtórzenia tylko w określonych kolumnach, a nie w całym DataFrame.

Usunięcie wszystkich duplikatów

Jeśli chcemy pozbyć się wszystkich powielonych rekordów (tzn. zachować tylko te, które nie mają żadnego sobowtóra), ustawiamy keep=False:

df_no_duplicates = df.drop_duplicates(keep=False)
print("\nDataFrame po usunięciu wszystkich duplikatów:\n", df_no_duplicates)

To użyteczne rozwiązanie w sytuacjach, gdy interesują mnie jedynie te dane, które nie mają żadnych odpowiedników.

Modyfikacja DataFrame „w miejscu”

Zamiast tworzyć nową zmienną, mogę zmodyfikować istniejący DataFrame za pomocą opcji inplace=True:

df.drop_duplicates(inplace=True)
print("\nDataFrame zmodyfikowany w miejscu:\n", df)

Teraz df zawiera już unikalne wartości bez potrzeby przypisywania wyniku.

Resetowanie indeksu po usunięciu duplikatów

Po usunięciu duplikatów zauważam, że indeksy mogą wyglądać chaotycznie. Możemy je zresetować:

df_reset = df.drop_duplicates(ignore_index=True)
print("\nDataFrame z resetowanym indeksem:\n", df_reset)

Przy ustawieniu ignore_index=True, pandas przypisuje nowe indeksy zaczynając od 0.

Podsumowanie

Metoda drop_duplicates() w pandas jest niezwykle użyteczna, gdy chcemy szybko pozbyć się powtarzających się danych w DataFrame. Oferuje wiele opcji dostosowania zachowania, w tym:

  • Usuwanie duplikatów na podstawie całości lub wybranych kolumn.
  • Zachowywanie pierwszego, ostatniego lub żadnego z duplikatów.
  • Możliwość modyfikacji struktury danych w miejscu.
  • Resetowanie indeksów dla lepszej czytelności.

Zastosowanie tej metody pozwala znacząco poprawić jakość i organizację danych, co bezpośrednio wpływa na lepszą efektywność analiz w Pythonie.

„` Inny ciekawy artykuł: Jak działa pandas nunique w języku Python? Przykład zastosowania
KajoDataSpace