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

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

Jeśli kiedykolwiek pracowałeś z danymi w Pythonie i używałeś biblioteki pandas, to na pewno zetknąłeś się z sytuacją, w której chciałeś policzyć unikalne wartości w kolumnie DataFrame’a lub w obiekcie Series. Do tego zadania idealnie nadaje się metoda value_counts(). W tym artykule pokażę, jak działa pandas value_counts() w języku Python i przedstawię praktyczny przykład zastosowania tej funkcji.

Co to jest pandas value_counts()?

Metoda value_counts() służy do zliczania wystąpień unikalnych wartości w kolumnie DataFrame’a lub w obiekcie Series. Wynikiem jest nowy Series, w którym indeksami są unikalne wartości, a wartościami liczba ich wystąpień.

Podstawowa składnia wygląda tak:

Series.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)

Poniżej przybliżę najważniejsze argumenty, które możemy wykorzystać w tej metodzie.

Parametry metody value_counts()

  • normalize=False: Jeśli ustawimy na True, metoda zwróci proporcje (częstości względne) zamiast wartości bezwzględnych.
  • sort=True: Domyślnie wartości są sortowane malejąco. Jeśli ustawimy na False, kolejność oryginalna zostanie zachowana.
  • ascending=False: Domyślnie wartości są posortowane malejąco. Możemy zmienić to na rosnąco.
  • bins=None: Jeśli podamy liczbę całkowitą, wartości numeryczne zostaną podzielone na przedziały (histogram).
  • dropna=True: Jeśli ustawimy na False, w wynikach zostaną uwzględnione również wartości NaN.

Podstawowy przykład zastosowania pandas value_counts()

Rozpocznijmy od prostego przykładu. Załóżmy, że mamy listę wartości reprezentujących kolory produktów i chcemy sprawdzić, ile razy każdy kolor występuje.

import pandas as pd

kolory = pd.Series(["czerwony", "niebieski", "zielony", "czerwony", "żółty", "niebieski", "czerwony"])

wynik = kolory.value_counts()
print(wynik)

Wynik będzie następujący:

czerwony     3
niebieski    2
zielony      1
żółty        1
dtype: int64

Jak widać, metoda automatycznie policzyła ilość wystąpień poszczególnych kolorów i posortowała wynik w kolejności malejącej.

Wykorzystanie parametru normalize

Jeśli zamiast liczby wystąpień chcemy poznać procentowy udział każdej wartości w zbiorze, możemy użyć parametru normalize=True:

wynik_procentowy = kolory.value_counts(normalize=True)
print(wynik_procentowy)

Wynik:

czerwony     0.428571
niebieski    0.285714
zielony      0.142857
żółty        0.142857
dtype: float64

Teraz wartości są przedstawione jako proporcje – np. kolor czerwony stanowi około 42.86% wszystkich wartości.

Sortowanie wyników

Domyślnie wartości są sortowane malejąco. Jeśli chcemy zmienić ten porządek, możemy ustawić parametry sort=False lub ascending=True:

kolory.value_counts(ascending=True)

Wynik:

zielony      1
żółty        1
niebieski    2
czerwony     3
dtype: int64

Grupowanie wartości przy pomocy bins

Jeśli mamy dane liczbowe, możemy zgrupować je w przedziały, zamiast liczyć poszczególne wartości. Sprawdźmy to na przykładzie:

dane = pd.Series([5, 10, 15, 20, 25, 30, 35, 40, 45, 50])
przedzialy = dane.value_counts(bins=5)
print(przedzialy)

Wynik:

(4.955, 14.0]    2
(14.0, 23.0]     2
(23.0, 32.0]     2
(32.0, 41.0]     2
(41.0, 50.0]     2
dtype: int64

Zamiast liczyć konkretne wartości, metoda podzieliła dane na 5 przedziałów i zliczyła liczby, które się w nich znajdują.

Obsługa wartości pustych (NaN)

Domyślnie value_counts() pomija wartości NaN. Jeśli chcemy, aby były brane pod uwagę, musimy ustawić dropna=False:

dane_nan = pd.Series(["A", "B", "A", "C", None, "B", "A", None])
wynik_nan = dane_nan.value_counts(dropna=False)
print(wynik_nan)

Wynik:

A      3
B      2
C      1
NaN    2
dtype: int64

Teraz w wynikach uwzględnione zostały również wartości NaN i ich liczba.

Zastosowanie w praktyce: analiza danych z DataFrame

Często value_counts() jest używane w kontekście analizy danych w pandas DataFrame. Załóżmy, że mamy zbiór danych na temat zamówień w sklepie internetowym:

df = pd.DataFrame({
    "Produkt": ["Laptop", "Telefon", "Laptop", "Tablet", "Telefon", "Telefon", "Laptop", "Tablet"],
    "Cena": [3000, 2000, 3200, 1500, 2200, 2500, 2800, 1700]
})

Chcemy policzyć, ile razy każdy produkt pojawia się w zamówieniach:

liczba_zamowien = df["Produkt"].value_counts()
print(liczba_zamowien)

Wynik:

Telefon    3
Laptop     3
Tablet     2
Name: Produkt, dtype: int64

Podsumowanie

Metoda value_counts() to niezwykle przydatne narzędzie w pandas, które umożliwia szybkie policzenie unikalnych wartości w kolumnie lub Series. Możemy jej używać do analizy danych kategorycznych, procentowych rozkładów czy grupowania wartości liczbowych.

Najważniejsze cechy tej funkcji to:

  • Łatwość użycia – wystarczy Series.value_counts()
  • Domyślne sortowanie malejące
  • Możliwość normalizacji do procentów
  • Obsługa wartości NaN
  • Opcja grupowania liczb w przedziały

Teraz, kiedy już wiesz, jak działa pandas value_counts() w języku Python, możesz śmiało korzystać z tej metody w swoich projektach analizy danych!

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