0Pricing
Pandas & NumPy Academy · Lekcja

Wykresy rozkładu: histplot i kdeplot

Wizualizuj kształt rozkładu liczbowego za pomocą sns.histplot i nakładaj estymację gęstości jądrowej za pomocą sns.kdeplot.

Wykresy rozkładu: histplot i kdeplot to bezpłatna lekcja Pandas & NumPy Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Pandas & NumPy Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.

Seaborn i wykresy rozkładów

Seaborn to biblioteka do wizualizacji danych statystycznych zbudowana na bazie Matplotlib. Udostępnia wysokopoziomowy interfejs API, który pozwala tworzyć atrakcyjne i czytelne wykresy przy użyciu minimalnej ilości kodu. Jedną z pierwszych rzeczy, które warto zrozumieć w przypadku dowolnego zbioru danych, jest kształt jego rozkładów — a histplot i kdeplot biblioteki Seaborn są podstawowymi narzędziami do tego celu.

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# Load a built-in dataset
tips = sns.load_dataset('tips')
print(tips.head())

Tworzenie podstawowego histogramu za pomocą histplot

sns.histplot(data, x='column') tworzy histogram zmiennej liczbowej. Seaborn automatycznie wybiera rozsądną liczbę przedziałów, domyślnie korzystając z reguły Sturgesa. Liczbę przedziałów można dostosować za pomocą parametru bins albo pozwolić Seabornowi wybrać ją automatycznie. Wysokość każdego słupka przedstawia liczbę obserwacji w danym zakresie.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# Basic histogram of total bill amounts
sns.histplot(data=tips, x='total_bill')
plt.title('Distribution of Total Bill')
plt.xlabel('Total Bill ($)')
plt.show()

Sterowanie przedziałami i parametrem stat

Parametr bins określa, ile słupków zawiera histogram — większa liczba przedziałów ujawnia więcej szczegółów, ale wykres może wyglądać na zaszumiony. Parametr stat zmienia znaczenie osi y: 'count' (domyślnie), 'density' (gęstość prawdopodobieństwa), 'probability' (ułamek obserwacji) lub 'percent'. Ustawienie stat='density' sprawia, że histogramy utworzone dla zbiorów danych o różnej liczebności można ze sobą porównywać.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

fig, axes = plt.subplots(1, 2, figsize=(10, 4))

# Count histogram with 20 bins
sns.histplot(data=tips, x='total_bill', bins=20, ax=axes[0])
axes[0].set_title('Count (20 bins)')

# Density histogram
sns.histplot(data=tips, x='total_bill', stat='density', ax=axes[1])
axes[1].set_title('Density')

plt.tight_layout()
plt.show()

Nakładanie KDE na histogram

Ustawienie kde=True w funkcji histplot nakłada na histogram krzywą estymacji gęstości jądrowej (KDE). KDE jest gładkim, ciągłym przybliżeniem bazowego rozkładu prawdopodobieństwa. To połączenie jest bardzo skuteczne: histogram pokazuje surowe liczebności w przedziałach, natomiast KDE ujawnia ogólny kształt i wykrywa wiele maksimów (wielomodalność).

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# Histogram with KDE overlay
sns.histplot(data=tips, x='total_bill', kde=True, bins=25, color='steelblue')
plt.title('Bill Distribution with KDE Overlay')
plt.xlabel('Total Bill ($)')
plt.show()

Niezależne używanie kdeplot

sns.kdeplot() rysuje wyłącznie gładką krzywą gęstości, bez słupków histogramu. Jest to przydatne podczas porównywania wielu rozkładów na tych samych osiach, ponieważ nakładające się histogramy stają się nieczytelne, a nakładające się krzywe KDE pozostają czytelne. Parametr fill=True wypełnia obszar pod krzywą, ułatwiając wizualne rozróżnienie grup.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# KDE plot for lunch vs dinner bills
sns.kdeplot(data=tips, x='total_bill', hue='time', fill=True, alpha=0.5)
plt.title('Bill Distribution: Lunch vs Dinner')
plt.xlabel('Total Bill ($)')
plt.show()

Parametr hue do porównywania grup

Funkcje histplot i kdeplot przyjmują parametr hue, który dzieli dane według kolumny kategorialnej i rysuje każdą grupę innym kolorem. Ułatwia to porównywanie rozkładów między grupami. Podczas używania histplot z parametrem hue należy ustawić stat='density', aby grupy o różnej liczebności można było rzetelnie porównywać.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# Compare tip distributions by smoker status
sns.histplot(
    data=tips,
    x='tip',
    hue='smoker',
    stat='density',
    common_norm=False,
    bins=20,
    alpha=0.6
)
plt.title('Tip Distribution by Smoker Status')
plt.show()

Szerokość pasma w KDE: parametr bw_adjust

KDE ma parametr dostrajania o nazwie szerokość pasma, który określa stopień wygładzenia krzywej. Mała szerokość pasma sprawia, że krzywa staje się poszarpana i nadmiernie dopasowana do danych, natomiast duża nadmiernie ją wygładza i ukrywa rzeczywiste cechy. Seaborn używa bw_adjust (domyślnie 1.0) jako mnożnika automatycznie wybranej szerokości pasma — wartości poniżej 1 zwiększają chropowatość, a powyżej 1 zwiększają gładkość.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

fig, axes = plt.subplots(1, 3, figsize=(12, 4))
bw_values = [0.3, 1.0, 3.0]

for ax, bw in zip(axes, bw_values):
    sns.kdeplot(data=tips, x='total_bill', bw_adjust=bw, ax=ax)
    ax.set_title(f'bw_adjust={bw}')

plt.tight_layout()
plt.show()

Rozkłady 2D za pomocą histplot i kdeplot

Funkcje histplot i kdeplot obsługują wykresy dwuwymiarowe po przekazaniu parametrów x i y. Histogram 2D przedstawia pokolorowaną według częstotliwości siatkę, a KDE 2D pokazuje linie konturowe o jednakowej gęstości. Wykresy te ujawniają łączny rozkład dwóch zmiennych liczbowych oraz informują, czy są one skorelowane.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# 2D histogram
sns.histplot(data=tips, x='total_bill', y='tip', ax=axes[0])
axes[0].set_title('2D Histogram')

# 2D KDE contour plot
sns.kdeplot(data=tips, x='total_bill', y='tip', fill=True, ax=axes[1])
axes[1].set_title('2D KDE Contours')

plt.tight_layout()
plt.show()

Dostosowywanie wyglądu za pomocą motywów Seaborn

Seaborn udostępnia wbudowane motywy za pomocą sns.set_theme(style=). Dostępne style to 'darkgrid', 'whitegrid', 'dark', 'white' i 'ticks'. Można również ustawić paletę za pomocą palette= lub sns.set_palette(). Ustawienia te obowiązują globalnie dla wszystkich kolejnych wykresów w danej sesji, co ułatwia zachowanie spójnego wyglądu.

import seaborn as sns
import matplotlib.pyplot as plt

# Apply a clean whitegrid theme
sns.set_theme(style='whitegrid', palette='muted')

tips = sns.load_dataset('tips')
sns.histplot(data=tips, x='total_bill', kde=True, bins=20)
plt.title('Styled Distribution Plot')
plt.show()

# Reset to defaults when done
sns.reset_defaults()

Interpretowanie kształtu rozkładu

Podczas odczytywania wykresu rozkładu należy zwrócić uwagę na cztery kluczowe cechy. Położenie: gdzie koncentruje się masa danych (średnia/mediana)? Rozproszenie: jak szeroki jest rozkład (odchylenie standardowe)? Skośność: czy ogon jest dłuższy po prawej stronie (skośność dodatnia), czy po lewej (skośność ujemna)? Modalność: czy rozkład ma jeden wierzchołek (jednomodalny), czy więcej (bimodalny/wielomodalny)? Rozkłady bimodalne często wskazują na dwie ukryte podpopulacje, które warto rozdzielić.

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# Simulate a bimodal distribution
np.random.seed(42)
data = np.concatenate([
    np.random.normal(loc=20, scale=3, size=300),
    np.random.normal(loc=45, scale=5, size=200)
])

sns.histplot(data, kde=True, bins=40)
plt.title('Bimodal Distribution — Two Hidden Groups')
plt.xlabel('Value')
plt.show()

displot: funkcja rozkładu na poziomie figury

sns.displot() to opakowanie na poziomie figury, które tworzy własny obiekt Figure i obsługuje tworzenie faset w wierszach i kolumnach za pomocą parametrów col= i row=. Przekazanie kind='hist', kind='kde' lub kind='ecdf' pozwala przełączać typ wykresu. ECDF (Empirical Cumulative Distribution Function, empiryczna dystrybuanta) jest szczególnie użyteczna, ponieważ pokazuje, jaka część danych leży poniżej każdej wartości, bez konieczności wybierania przedziałów.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')

# Faceted KDE by day of week
sns.displot(
    data=tips,
    x='total_bill',
    col='day',
    col_wrap=2,
    kind='kde',
    fill=True
)
plt.suptitle('Bill Distributions by Day', y=1.02)
plt.show()

Szybkie sprawdzenie

Sprawdź swoje zrozumienie wykresów rozkładu w Seaborn z tej lekcji.

Podsumowanie lekcji

W tej lekcji nauczyli się Państwo, że: sns.histplot tworzy histogramy z możliwością dostosowania przedziałów i parametrów statystycznych, sns.kdeplot rysuje wygładzone krzywe gęstości, idealne do porównywania grup, a parametr hue dzieli oba typy wykresów według zmiennej kategorycznej, umożliwiając porównanie obok siebie. W następnej części omówimy wykresy do porównywania kategorii, takie jak box ploty, wykresy słupkowe i wykresy skrzypcowe.

Często zadawane pytania

Czy lekcja „Wykresy rozkładu: histplot i kdeplot” jest bezpłatna?

Tak — pełny tekst „Wykresy rozkładu: histplot i kdeplot” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Pandas & NumPy Academy, przejdź na CoddyKit PRO. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wykresy rozkładu: histplot i kdeplot”?

Wizualizuj kształt rozkładu liczbowego za pomocą sns.histplot i nakładaj estymację gęstości jądrowej za pomocą sns.kdeplot. Ćwiczysz Pandas & NumPy Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Pandas & NumPy Academy?

Nie wymagamy żadnego doświadczenia. Pandas & NumPy Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Wykresy rozkładu: histplot i kdeplot”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Pandas & NumPy Academy?

Tak. Każda lekcja Pandas & NumPy Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wykresy rozkładu: histplot i kdeplot
  2. Wykresy kategoryczne: boxplot, barplot, violinplot
  3. Wykresy punktowe i wykresy par
  4. Mapy cieplne macierzy korelacji
← Powrót do Pandas & NumPy Academy