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

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

Jednym z najczęstszych problemów, z jakimi można się spotkać podczas analizy danych w Pythonie, jest wykrywanie i eliminowanie duplikatów. Biblioteka Pandas dostarcza świetne narzędzie do tego celu – metodę duplicated(). Dzięki niej mogę łatwo sprawdzić, które wiersze w moim DataFrame są powielone. W tym artykule pokażę dokładnie, jak działa pandas.duplicated(), jakie ma opcje i jak można ją używać w praktyce.

Co robi pandas.duplicated()?

Metoda duplicated() w bibliotece Pandas zwraca serię wartości logicznych (True lub False), wskazując, które wiersze pojawiły się wcześniej w zbiorze danych i można je uznać za duplikaty. Domyślnie funkcja porównuje wszystkie kolumny, ale można ją dostosować, aby sprawdzała tylko wybrane.

Podstawowy przykład działania

Przyjrzyjmy się prostemu przykładowi, aby zobaczyć, jak działa duplicated():


import pandas as pd

# Tworzenie przykładowego DataFrame
data = {'ID': [1, 2, 3, 4, 5, 3],
        'Name': ['Anna', 'Marcin', 'Kasia', 'Tomek', 'Ola', 'Kasia']}

df = pd.DataFrame(data)

# Sprawdzenie zduplikowanych wierszy
print(df.duplicated())

Wynik:


0    False
1    False
2    False
3    False
4    False
5     True
dtype: bool

Oznacza to, że wiersz o indeksie 5 został oznaczony jako duplikat, ponieważ wiersz z wartością „Kasia” w kolumnie Name i wartością 3 w kolumnie ID już wcześniej występował.

Opcje dostępne w pandas.duplicated()

Metoda duplicated() przyjmuje kilka argumentów, które pozwalają dostosować sposób wykrywania duplikatów.

keep – decyduje, które duplikaty zostają oznaczone

Argument keep ma trzy możliwe wartości:

  • 'first' – (domyślnie) oznacza jako duplikaty wszystkie powtarzające się wiersze, oprócz pierwszego wystąpienia.
  • 'last' – oznacza wszystkie powtarzające się wiersze, oprócz ostatniego wystąpienia.
  • False – oznacza wszystkie zduplikowane wiersze (nie pozostawia żadnego oryginalnego wystąpienia).

Przykład:


print(df.duplicated(keep='last'))

Spowoduje oznaczenie jako duplikatów pierwszych, a nie ostatnich wystąpień powtarzających się wierszy.

subset – sprawdzanie duplikatów tylko w wybranych kolumnach

Jeśli chcę sprawdzić duplikaty tylko dla konkretnej kolumny, mogę skorzystać z argumentu subset. Załóżmy, że interesuje mnie powielenie wartości w kolumnie Name:


print(df.duplicated(subset=['Name']))

W tym przypadku Pandas sprawdzi tylko kolumnę Name, ignorując inne wartości w wierszach.

Usuwanie duplikatów po ich wykryciu

Po zidentyfikowaniu nadmiarowych rekordów najczęściej chcę się ich pozbyć. Do tego służy metoda drop_duplicates(), która działa podobnie jak duplicated(), ale zamiast zwracać wartości logiczne, usuwa powtarzające się wiersze.

Przykład usunięcia duplikatów:


df_cleaned = df.drop_duplicates()
print(df_cleaned)

Jeśli chciałbym uwzględnić tylko wybrany zestaw kolumn, mogę skorzystać z argumentu subset:


df_cleaned = df.drop_duplicates(subset=['Name'])

Przykładowa tabela prezentująca działanie

Poniżej znajduje się tabela pokazująca przykładowe dane oraz wynik działania duplicated():

Index ID Name duplicated()
0 1 Anna False
1 2 Marcin False
2 3 Kasia False
3 4 Tomek False
4 5 Ola False
5 3 Kasia True

Podsumowanie

Metoda pandas.duplicated() to bardzo przydatne narzędzie do wykrywania duplikatów w DataFrame. Dzięki niej mogę:

  • Szybko sprawdzić, które wiersze są zduplikowane.
  • Decydować, czy zostawiam pierwsze czy ostatnie wystąpienie.
  • Fokusować się tylko na wybranych kolumnach.
  • Łatwo usunąć powielone rekordy.

Dzięki temu praca z danymi staje się bardziej przejrzysta i efektywna, a wyniki analizy są precyzyjne. Jeśli często pracuję z dużymi zbiorami danych, znajomość duplicated() to obowiązkowy punkt w arsenale narzędzi do przetwarzania danych w Pandas.

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