1. Podstawy tworzenia histogramów
Jeśli kiedykolwiek spojrzałeś na bufet i próbowałeś zdecydować, jaki rodzaj przekąsek dominuje, to już trochę rozumiesz, czym jest rozkład danych. W programowaniu używamy histogramów, aby odkryć wzorce w danych, które na pierwszy rzut oka mogą być nieoczywiste. Histogramy pomagają wizualnie analizować, jak dane są rozłożone na konkretne kategorie lub zakresy liczbowe. Zaczynajmy!
Co to jest histogram?
Histogram to rodzaj wykresu, który pomaga wizualizować rozkład danych w określonych przedziałach lub "binach" (czasami nazywanych "koszykami"). Na przykład, jeśli chcemy dowiedzieć się, ile razy uczniowie zdobyli określoną liczbę punktów na teście, histogram będzie najlepszym sposobem na to, aby to pokazać.
Główne parametry histogramu
Histogram zbudowany jest z kolumn (binów), gdzie każda kolumna pokazuje, ile wartości mieści się w odpowiednim przedziale. Główne parametry histogramu:
- Biny (
bins
): liczba przedziałów, na które dzielimy zakres danych. - Kolor i obramowanie (
color
iedgecolor
): określają wygląd kolumn. - Zakres (
range
): ustala minimalne i maksymalne wartości do wyświetlenia. - Gęstość (
density
): jeśli ustawione naTrue
, histogram będzie znormalizowany, tak żeby całkowita powierzchnia kolumn wynosiła jeden.
Użycie funkcji hist()
do tworzenia histogramów
W bibliotece Matplotlib jest świetna funkcja hist()
, która upraszcza tworzenie histogramów. Zobaczmy prosty przykład:
import matplotlib.pyplot as plt
import numpy as np
# Tworzymy zestaw danych
data = np.random.normal(0, 1, 1000)
# Tworzymy histogram
plt.hist(data, bins=30, alpha=0.7, color='blue')
plt.title('Histogram rozkładu danych')
plt.xlabel('Wartości')
plt.ylabel('Częstotliwość')
plt.show()
Tutaj generujemy zestaw danych używając funkcji np.random.normal()
, która tworzy normalny rozkład. Dzielimy dane na 30 binów i ustawiamy przezroczystość kolumn za pomocą parametru alpha
dla lepszej wizualizacji.
2. Dostosowywanie binów i wyglądu wykresu
Określanie liczby i rozmiaru binów
Liczba i rozmiar binów mogą znacząco wpływać na interpretację histogramu. Zbyt duże biny mogą ukrywać ważne szczegóły, podczas gdy zbyt małe biny mogą sprawić, że histogram będzie nieskładny i trudny do zrozumienia.
Praktyczny przykład:
# Zmiana liczby i rozmiaru binów
plt.hist(data, bins=10, color='green', edgecolor='black')
plt.title('Histogram z 10 binami')
plt.xlabel('Wartości')
plt.ylabel('Częstotliwość')
plt.show()
plt.hist(data, bins=50, color='red', edgecolor='black')
plt.title('Histogram z 50 binami')
plt.xlabel('Wartości')
plt.ylabel('Częstotliwość')
plt.show()
Zobacz, jak różni się wygląd histogramu przy użyciu 10 i 50 binów. Widzisz różnicę? To właśnie ten przypadek, kiedy rozmiar ma znaczenie!
Praktyczne przykłady zmiany parametrów histogramu
Histogramy można dostosować nie tylko według liczby binów, ale także na podstawie koloru, przezroczystości, a nawet stylu kolumn. Oto jeszcze kilka przykładów:
# Inne parametry konfiguracji
plt.hist(data, bins=30, density=True, color='purple', edgecolor='white', linestyle='dashed')
plt.title('Histogram gęstości z innym stylem')
plt.xlabel('Wartości')
plt.ylabel('Gęstość')
plt.grid(True)
plt.show()
W tym przykładzie dodaliśmy parametr density=True
, który normalizuje histogram, tak aby powierzchnia pod wykresem wynosiła 1. Może to być przydatne, gdy chcesz analizować gęstość prawdopodobieństwa rozkładu.
3. Przykłady zastosowania histogramów
Histogramy znajdują swoje zastosowanie w różnych dziedzinach — od analizy danych finansowych po eksperymenty fizyczne. Zobaczmy, jak wykorzystać histogram przy rzeczywistym zestawie danych.
Tworzenie histogramu na rzeczywistym zestawie danych
Wyobraź sobie, że mamy zestaw danych przedstawiający średnią dzienną temperaturę w ciągu roku. Chcemy przeanalizować, jak często temperatura znajduje się w określonym zakresie.
# Zestaw danych temperaturowych (uprościłem na potrzeby przykładu)
temperatures = [15, 16, 15, 14, 19, 22, 24, 25, 17, 18, 15, 16, 23, 24, 21, 19, 18, 20, 22, 25, 26, 27]
# Tworzenie histogramu
plt.hist(temperatures, bins=5, color='navy', edgecolor='black')
plt.title('Histogram temperatur')
plt.xlabel('Temperatura (°C)')
plt.ylabel('Częstotliwość')
plt.show()
W tym przykładzie użyliśmy 5 binów, aby zobaczyć, jak rozkładają się wartości. Histogram pokazuje, że większość temperatur znajduje się w zakresie od 15 do 20°C.
Porównywanie rozkładów na jednym histogramie
Czasami trzeba porównać rozkład kilku zestawów danych na jednym histogramie. W Matplotlib można nałożyć kilka histogramów za pomocą parametru alpha
(przezroczystość).
Przykład 3: Porównywanie rozkładów
import matplotlib.pyplot as plt
# Generowanie danych
data1 = [5, 10, 10, 15, 15, 20, 25, 30, 30, 35, 40]
data2 = [5, 7, 9, 10, 11, 13, 15, 17, 19, 20, 25]
# Tworzenie nałożonych histogramów
plt.hist(data1, bins=5, color="blue", alpha=0.5, label="Zestaw 1")
plt.hist(data2, bins=5, color="green", alpha=0.5, label="Zestaw 2")
plt.xlabel("Wartość")
plt.ylabel("Częstotliwość")
plt.title("Porównanie dwóch rozkładów")
plt.legend()
plt.show()
W tym przykładzie używamy parametru alpha=0.5
dla każdego histogramu, co sprawia, że kolumny są półprzezroczyste i umożliwia wizualne porównanie przecięć między rozkładami.
Przydatne wskazówki do pracy z histogramami
- Optymalny wybór liczby binów: Dobieraj liczbę binów w zależności od objętości i charakteru danych. Zbyt mało lub zbyt dużo binów może zniekształcać rozkład.
- Porównywanie rozkładów: Używaj przezroczystości (
alpha
) do nakładania kilku histogramów i porównywania rozkładów. - Dodanie siatki: Siatka pomaga lepiej interpretować dane. Można ją dodać za pomocą funkcji
plt.grid(True)
. - Parametr
density
: Używajdensity=True
, aby wyświetlać dane w formie gęstości prawdopodobieństwa, co jest szczególnie przydatne przy porównywaniu rozkładów.
GO TO FULL VERSION