DATAcademy

Jak budować wykresy kołowe w Pythonie?

Wykresy kołowe (z ang. pie plot) są jednymi z najpopularniejszych wykresów używanych w analizie danych. Wykorzystujemy go do przedstawienia rozkładów zmiennych jakościowych, które mają mało unikatowych kategorii.

Przykładowy wykres kołowy wygląda w następujący sposób:

Powyższy wykres kołowy w czytelny sposób przedstawia procentowy rozkład pewnej zmiennej.

Zastosowania wykresów kołowych

Wykresy kołowe mają dość mały zakres zastosowań. Nie możemy używać ich do przedstawienia rozkładu zmiennych ilościowych. Ich zastosowanie ma miejsce jedynie w przypadku zmiennych jakościowych. Ale też nie wszystkich! Jeżeli zmienna jakościowa posiada dużo różnych wartości, wykres kołowy przestaje być czytelny:

wykresy kołowe w pythonie

W sytuacji, w której mamy do czynienia z bardzo dużą liczbą kategorii zalecane jest skorzystanie z wykresów słupkowych.

Mimo tego, że wykresy kołowe powinniśmy stosować jedynie do zmiennych jakościowych z niewielką liczbą kategorii to są one bardzo przydatne i często wykorzystywane, szczególnie w opisowej analizie wielu zbiorów danych.

Jak budować wykresy kołowe na podstawie danych z biblioteki pandas?

W praktyce, najczęściej wykresy tworzymy na podstawie pewnych zbiorów danych. Dane zazwyczaj przechowujemy w DataFrame’ach, których tworzenie umożliwia biblioteka pandas. Spójrzmy w jaki sposób utworzyć w Pythonie wykres kołowy na podstawie danych. Najpierw zaimportujmy odpowiednie biblioteki:

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

Z biblioteki seaborn zaimportujemy zbiór danych, na którym oprzemy przykład. Biblioteka pandas pozwoli nam zaczytać i przechowywać ten zbiór. Natomiast biblioteka matplotlib posłuży nam do wyrysowania wykresu kołowego.

Następnie zaczytajmy zbiór danych. Posłużymy się tutaj przykładem popularnego zbioru Titanic:

df = sns.load_dataset('titanic')

Górne 5 obserwacji zbioru wygląda następująco:

Wykres kołowy zbudujemy na podstawie zmiennej embark_town, która mówi, w którym porcie dany pasażer wsiadł na pokład statku.

Najprostsza konstrukcja wykresu kołowego w Pythonie jest następująca:

plt.pie(wektor_liczebności, wektor_etykiet)

Aby utworzyć powyższe wektory (lub po prostu listy) posłużymy się metodą value_counts(), która zliczy wystąpienia poszczególnych kategorii w zbiorze:

df['embark_town'].value_counts()

Wynik działania tej metody jest następujący:

Jak widzimy dla zmiennej embark_town otrzymujemy trzy różne wartości oraz ich liczebności w zbiorze danych. Na tej podstawie, wyciągając osobno etykiety miast oraz wartości liczbowe możemy utworzyć wykres kołowy. W najprostszej wersji tworzymy go w następujący sposób:

plt.pie(df['embark_town'].value_counts(), labels=df['embark_town'].value_counts().index)

Funkcja, która służy do budowy wykresu kołowego to funkcja pie z biblioteki matplotlib. W powyższej wersji przyjmuje ona dwa argumenty:

  1. Wektor liczebności – w naszym wypadku po prostu metoda .value_counts() nałożona na odpowiednią zmienną
  2. Etykiety – wyciągnąć je można korzystając z metody .index nałożonej na .value_count()

Tak utworzony wykres wygląda następująco:

wykresy kołowe w pythonie

Modyfikacje wizualne wykresów kołowych w Pythonie

Oczywiście kolejnym krokiem są zmiany wizualne, których możemy dokonać na wykresie. Poniżej prezentujemy kilka najczęściej wykorzystywanych modyfikacji:

  • Zmiana kolorów – do tego służy opcjonalny argument colors. W ramach tego argumentu definiujemy listę kolorów, których chcemy użyć na naszym wykresie. Na przykład:
my_colors = ['yellow', 'hotpink', 'aquamarine]
  • Dodanie etykiet udziałów procentowych – w tym celu należy dodać argument autopct, w ramach którego podamy format liczb, które mają stanowić etykiety na wykresie. Dodanie poniższego argumentu poskutkuje dodaniem etykiet z dokładnością jednego miejsca po przecinku:
autopct = '%1.1f%%'
  • Zmiana wielkości czcionki – do manipulowania wyglądem tekstu służy argument textprops. W ramach tego argumentu podajemy słownik parametrów dotyczących wyglądu etykiet. Jednym z takich parametrów jest fontsize, który steruje wielkością czcionki. Poniżej przykład takiego argumentu:
textprops = {'fontsize': 15}
  • Wyróżnienie najliczniejszej kategorii – służy do tego argument explode, który określa jak bardzo kawałek wykresu kołowego z najliczniejszą kategorią ma być oddalony od reszty wykresu. Jego przykładowa definicja:
explode = [.1,0,0]

Łącząc wszystko powyższe otrzymujemy następujący kod:

fig = plt.figure(figsize=(15,7))
plt.pie(df['embark_town'].value_counts(), labels=df['embark_town'].value_counts().index, 
       colors=mycolors, autopct = '%1.1f%%', textprops={'fontsize': 15}, explode = [.1,0,0])

Dodatkowo w pierwszej linijce ustalona została wielkość wykresu za pomocą figsize. W efekcie otrzymujemy następujący wykres:

wykresy kołowe w pythonie

Wygląda dużo lepiej!

Podsumowując, wykresy kołowe bywają bardzo przydatne, szczególnie na etapie opisowej analizy danych. Za ich pomocą w prosty sposób możemy przedstawić rozkłady zmiennych jakościowych, które nie posiadają wielu kategorii.

Ich tworzenie za pomocą Pythona nie należy do skomplikowanych. Zachęcamy Was do spróbowania!