You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/nl/3-Data-Visualization/11-visualization-proportions
leestott c6f29d8c8b
🌐 Update translations via Co-op Translator
1 year ago
..
solution 🌐 Update translations via Co-op Translator 1 year ago
README.md 🌐 Update translations via Co-op Translator 1 year ago
assignment.md 🌐 Update translations via Co-op Translator 1 year ago
notebook.ipynb 🌐 Update translations via Co-op Translator 1 year ago

README.md

Visualiseren van Verhoudingen

 Sketchnote door (@sketchthedocs)
Visualiseren van Verhoudingen - Sketchnote door @nitya

In deze les gebruik je een dataset met een focus op de natuur om verhoudingen te visualiseren, zoals hoeveel verschillende soorten schimmels voorkomen in een dataset over paddenstoelen. Laten we deze fascinerende schimmels verkennen met behulp van een dataset van Audubon, die details bevat over 23 soorten plaatjeszwammen in de Agaricus- en Lepiota-families. Je gaat experimenteren met smakelijke visualisaties zoals:

  • Taartdiagrammen 🥧
  • Donutdiagrammen 🍩
  • Wafeldiagrammen 🧇

💡 Een heel interessant project genaamd Charticulator van Microsoft Research biedt een gratis drag-and-drop-interface voor datavisualisaties. In een van hun tutorials gebruiken ze ook deze paddenstoelendataset! Zo kun je de data verkennen en tegelijkertijd de bibliotheek leren kennen: Charticulator tutorial.

Quiz na de les

Leer je paddenstoelen kennen 🍄

Paddenstoelen zijn erg interessant. Laten we een dataset importeren om ze te bestuderen:

import pandas as pd
import matplotlib.pyplot as plt
mushrooms = pd.read_csv('../../data/mushrooms.csv')
mushrooms.head()

Een tabel wordt weergegeven met geweldige data voor analyse:

class cap-shape cap-surface cap-color bruises odor gill-attachment gill-spacing gill-size gill-color stalk-shape stalk-root stalk-surface-above-ring stalk-surface-below-ring stalk-color-above-ring stalk-color-below-ring veil-type veil-color ring-number ring-type spore-print-color population habitat
Giftig Convex Smooth Brown Bruises Pungent Free Close Narrow Black Enlarging Equal Smooth Smooth White White Partial White One Pendant Black Scattered Urban
Eetbaar Convex Smooth Yellow Bruises Almond Free Close Broad Black Enlarging Club Smooth Smooth White White Partial White One Pendant Brown Numerous Grasses
Eetbaar Bell Smooth White Bruises Anise Free Close Broad Brown Enlarging Club Smooth Smooth White White Partial White One Pendant Brown Numerous Meadows
Giftig Convex Scaly White Bruises Pungent Free Close Narrow Brown Enlarging Equal Smooth Smooth White White Partial White One Pendant Black Scattered Urban

Je merkt meteen dat alle data tekstueel is. Je zult deze data moeten converteren om het in een diagram te kunnen gebruiken. De meeste data is namelijk als een object weergegeven:

print(mushrooms.select_dtypes(["object"]).columns)

De uitvoer is:

Index(['class', 'cap-shape', 'cap-surface', 'cap-color', 'bruises', 'odor',
       'gill-attachment', 'gill-spacing', 'gill-size', 'gill-color',
       'stalk-shape', 'stalk-root', 'stalk-surface-above-ring',
       'stalk-surface-below-ring', 'stalk-color-above-ring',
       'stalk-color-below-ring', 'veil-type', 'veil-color', 'ring-number',
       'ring-type', 'spore-print-color', 'population', 'habitat'],
      dtype='object')

Converteer deze data en zet de 'class'-kolom om naar een categorie:

cols = mushrooms.select_dtypes(["object"]).columns
mushrooms[cols] = mushrooms[cols].astype('category')
edibleclass=mushrooms.groupby(['class']).count()
edibleclass

Als je nu de paddenstoelendata afdrukt, zie je dat deze is gegroepeerd in categorieën op basis van de giftige/eetbare klasse:

cap-shape cap-surface cap-color bruises odor gill-attachment gill-spacing gill-size gill-color stalk-shape ... stalk-surface-below-ring stalk-color-above-ring stalk-color-below-ring veil-type veil-color ring-number ring-type spore-print-color population habitat
class
Eetbaar 4208 4208 4208 4208 4208 4208 4208 4208 4208 4208 ... 4208 4208 4208 4208 4208 4208 4208 4208 4208 4208
Giftig 3916 3916 3916 3916 3916 3916 3916 3916 3916 3916 ... 3916 3916 3916 3916 3916 3916 3916 3916 3916 3916

Als je de volgorde in deze tabel aanhoudt om je klassenlabels te maken, kun je een taartdiagram bouwen:

Taart!

labels=['Edible','Poisonous']
plt.pie(edibleclass['population'],labels=labels,autopct='%.1f %%')
plt.title('Edible?')
plt.show()

Voilà, een taartdiagram dat de verhoudingen van deze data toont volgens de twee klassen van paddenstoelen. Het is erg belangrijk om de volgorde van de labels correct te krijgen, vooral hier, dus controleer de volgorde waarmee de labelarray is opgebouwd!

taartdiagram

Donuts!

Een iets visueel interessanter taartdiagram is een donutdiagram, een taartdiagram met een gat in het midden. Laten we onze data op deze manier bekijken.

Bekijk de verschillende habitats waar paddenstoelen groeien:

habitat=mushrooms.groupby(['habitat']).count()
habitat

Hier groepeer je je data op habitat. Er zijn er 7 vermeld, dus gebruik deze als labels voor je donutdiagram:

labels=['Grasses','Leaves','Meadows','Paths','Urban','Waste','Wood']

plt.pie(habitat['class'], labels=labels,
        autopct='%1.1f%%', pctdistance=0.85)
  
center_circle = plt.Circle((0, 0), 0.40, fc='white')
fig = plt.gcf()

fig.gca().add_artist(center_circle)
  
plt.title('Mushroom Habitats')
  
plt.show()

donutdiagram

Deze code tekent een diagram en een cirkel in het midden, en voegt die cirkel toe aan het diagram. Pas de breedte van de cirkel aan door 0.40 te wijzigen in een andere waarde.

Donutdiagrammen kunnen op verschillende manieren worden aangepast om de labels te wijzigen. De labels kunnen bijvoorbeeld worden benadrukt voor betere leesbaarheid. Lees meer in de documentatie.

Nu je weet hoe je je data kunt groeperen en weergeven als een taart- of donutdiagram, kun je andere soorten diagrammen verkennen. Probeer een wafeldiagram, een andere manier om hoeveelheden te visualiseren.

Wafels!

Een 'wafel'-type diagram is een andere manier om hoeveelheden te visualiseren als een 2D-array van vierkanten. Probeer de verschillende hoeveelheden hoedkleuren van paddenstoelen in deze dataset te visualiseren. Hiervoor moet je een hulpbibliotheek genaamd PyWaffle installeren en Matplotlib gebruiken:

pip install pywaffle

Selecteer een segment van je data om te groeperen:

capcolor=mushrooms.groupby(['cap-color']).count()
capcolor

Maak een wafeldiagram door labels te maken en vervolgens je data te groeperen:

import pandas as pd
import matplotlib.pyplot as plt
from pywaffle import Waffle
  
data ={'color': ['brown', 'buff', 'cinnamon', 'green', 'pink', 'purple', 'red', 'white', 'yellow'],
    'amount': capcolor['class']
     }
  
df = pd.DataFrame(data)
  
fig = plt.figure(
    FigureClass = Waffle,
    rows = 100,
    values = df.amount,
    labels = list(df.color),
    figsize = (30,30),
    colors=["brown", "tan", "maroon", "green", "pink", "purple", "red", "whitesmoke", "yellow"],
)

Met een wafeldiagram kun je duidelijk de verhoudingen van hoedkleuren in deze paddenstoelendataset zien. Interessant genoeg zijn er veel paddenstoelen met groene hoeden!

wafeldiagram

PyWaffle ondersteunt iconen binnen de diagrammen die elk pictogram gebruiken dat beschikbaar is in Font Awesome. Experimenteer om een nog interessanter wafeldiagram te maken met iconen in plaats van vierkanten.

In deze les heb je drie manieren geleerd om verhoudingen te visualiseren. Eerst groepeer je je data in categorieën en bepaal je vervolgens welke manier het beste is om de data weer te geven - taart, donut of wafel. Allemaal zijn ze smakelijk en geven de gebruiker direct een overzicht van een dataset.

🚀 Uitdaging

Probeer deze smakelijke diagrammen opnieuw te maken in Charticulator.

Quiz na de les

Herziening & Zelfstudie

Soms is het niet duidelijk wanneer je een taart-, donut- of wafeldiagram moet gebruiken. Hier zijn enkele artikelen om hierover te lezen:

https://www.beautiful.ai/blog/battle-of-the-charts-pie-chart-vs-donut-chart

https://medium.com/@hypsypops/pie-chart-vs-donut-chart-showdown-in-the-ring-5d24fd86a9ce

https://www.mit.edu/~mbarker/formula1/f1help/11-ch-c6.htm

https://medium.datadriveninvestor.com/data-visualization-done-the-right-way-with-tableau-waffle-chart-fdf2a19be402

Doe wat onderzoek om meer informatie te vinden over deze lastige keuze.

Opdracht

Probeer het in Excel


Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in de oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.