
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 naTrue
, 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 naFalse
, 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 naFalse
, w wynikach zostaną uwzględnione również wartościNaN
.
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!
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.