
Przekształcanie i analiza danych w języku Python przy użyciu biblioteki pandas to codzienność dla analityków i data scientistów. Jednym z ciekawszych narzędzi dostępnych w pandas jest qcut()
. Umożliwia ono podział danych na równe przedziały na podstawie kwantyli. W tym artykule pokażę, jak działa pandas.qcut()
w języku Python oraz przedstawię przykład zastosowania tej funkcji.
Co to jest pandas.qcut()?
Funkcja pandas.qcut()
służy do podziału ciągłej zmiennej numerycznej na równe grupy (kwantyle). W przeciwieństwie do cut()
, które dzieli dane na przedziały o równej szerokości, qcut()
dzieli dane tak, aby każda grupa miała zbliżoną liczbę wartości.
Składnia pandas.qcut()
Podstawowa składnia funkcji wygląda następująco:
pandas.qcut(x, q, labels=False, retbins=False, precision=3, duplicates='raise')
Gdzie:
x
– Pandas Series lub NumPy array, który chcemy podzielić.q
– Liczba kwantyli (np. 4 oznacza podział na kwartyle, 10 oznacza podział na decyle).labels
– Czy przypisywać etykiety zamiast przedziałów (domyślnieFalse
).retbins
– JeśliTrue
, zwraca również granice przedziałów.precision
– Liczba miejsc po przecinku dla przedziałów.duplicates
– Określa, co zrobić w przypadku duplikatów przedziałów ('raise'
lub'drop'
).
Przykład zastosowania pandas.qcut()
Przyjrzyjmy się praktycznemu zastosowaniu qcut()
. Załóżmy, że mamy serię liczb i chcemy podzielić je na cztery kwartyle.
import pandas as pd
# Tworzymy przykładowe dane
data = pd.Series([10, 20, 25, 30, 35, 40, 50, 60, 70, 80])
# Dzielimy dane na 4 kwartyle
result = pd.qcut(data, q=4)
print(result)
Wynik będzie wyglądał mniej więcej tak:
0 (9.999, 22.5]
1 (9.999, 22.5]
2 (22.5, 35.0]
3 (22.5, 35.0]
4 (35.0, 47.5]
5 (35.0, 47.5]
6 (47.5, 65.0]
7 (47.5, 65.0]
8 (47.5, 65.0]
9 (65.0, 80.0]
dtype: category
Jak widać, dane zostały podzielone na cztery grupy, gdzie każda zawiera zbliżoną liczbę elementów.
Przypisywanie etykiet do grup
Zamiast przedziałów liczbowych możemy przypisać naszym grupom nazwy, co ułatwi interpretację wyników.
labels = ["Niski", "Średni", "Wysoki", "Najwyższy"]
result_labeled = pd.qcut(data, q=4, labels=labels)
print(result_labeled)
Teraz zamiast przedziałów liczbowych mamy etykiety:
0 Niski
1 Niski
2 Średni
3 Średni
4 Wysoki
5 Wysoki
6 Najwyższy
7 Najwyższy
8 Najwyższy
9 Najwyższy
dtype: category
Zwracanie przedziałów (bins)
Czasami chcemy nie tylko podzielić dane, ale również zobaczyć, jakie są dokładne granice przedziałów. Możemy to zrobić, ustawiając retbins=True
:
categories, bins = pd.qcut(data, q=4, retbins=True)
print("Kategorie:")
print(categories)
print("\nGranice przedziałów:")
print(bins)
Wynik:
Kategorie:
0 (9.999, 22.5]
1 (9.999, 22.5]
...
dtype: category
Granice przedziałów:
[ 10. 22.5 35. 47.5 80. ]
Przypadek duplikatów granic
Jeśli w danych są powtarzające się wartości, może się zdarzyć, że pewne przedziały będą identyczne. Aby uniknąć błędu, możemy skorzystać z opcji duplicates='drop'
:
data_with_duplicates = pd.Series([10, 10, 10, 30, 40, 40, 40, 50, 60, 70])
categories = pd.qcut(data_with_duplicates, q=4, duplicates='drop')
print(categories)
Dzięki temu qcut()
automatycznie usunie duplikaty w granicach.
Podsumowanie
Funkcja pandas.qcut()
to potężne narzędzie do podziału danych numerycznych na przedziały odpowiadające kwantylom. Dzięki temu możemy łatwo grupować wartości i analizować ich rozkład.
Podstawowe cechy qcut()
:
- Dzieli dane na równe części pod względem liczby wartości, a nie szerokości przedziałów.
- Umożliwia nadawanie etykiet przedziałom.
- Pozwala zwrócić granice przedziałów.
- Obsługuje przypadki, gdy przedziały się powtarzają.
Teraz, kiedy wiesz, jak działa pandas.qcut()
w języku Python, możesz wykorzystać go do lepszego zrozumienia i segmentacji swoich 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.