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/sv/3-Data-Visualization/11-visualization-proportions
leestott b3d803186c
🌐 Update translations via Co-op Translator
4 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 4 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 4 weeks ago

README.md

Visualisera proportioner

 Sketchnote av (@sketchthedocs)
Visualisera proportioner - Sketchnote av @nitya

I den här lektionen kommer du att använda en dataset med naturfokus för att visualisera proportioner, som hur många olika typer av svampar som finns i en dataset om champinjoner. Låt oss utforska dessa fascinerande svampar med hjälp av en dataset från Audubon som listar detaljer om 23 arter av skivlingar i Agaricus- och Lepiota-familjerna. Du kommer att experimentera med smakfulla visualiseringar som:

  • Cirkeldiagram 🥧
  • Donutdiagram 🍩
  • Våffeldiagram 🧇

💡 Ett mycket intressant projekt som heter Charticulator från Microsoft Research erbjuder ett gratis dra-och-släpp-gränssnitt för datavisualiseringar. I en av deras tutorials använder de också denna svampdataset! Så du kan utforska datan och lära dig biblioteket samtidigt: Charticulator tutorial.

Quiz före föreläsningen

Lär känna dina svampar 🍄

Svampar är väldigt intressanta. Låt oss importera en dataset för att studera dem:

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

En tabell skrivs ut med fantastisk data för analys:

klass hattform hattyta hattfärg blåmärken lukt skivfäste skivavstånd skivstorlek skivfärg fotform fotrot fotyta ovanför ring fotyta under ring fotfärg ovanför ring fotfärg under ring slöjtyp slöjfärg antal ringar ringtyp sportrycksfärg population habitat
Giftig Konvex Slät Brun Blåmärken Stickande Fri Tät Smal Svart Förstorande Jämn Slät Slät Vit Vit Partiell Vit En Hängande Svart Spridd Urban
Ätlig Konvex Slät Gul Blåmärken Mandel Fri Tät Bred Svart Förstorande Klubba Slät Slät Vit Vit Partiell Vit En Hängande Brun Talrik Gräs
Ätlig Klockformad Slät Vit Blåmärken Anis Fri Tät Bred Brun Förstorande Klubba Slät Slät Vit Vit Partiell Vit En Hängande Brun Talrik Ängar
Giftig Konvex Fjällig Vit Blåmärken Stickande Fri Tät Smal Brun Förstorande Jämn Slät Slät Vit Vit Partiell Vit En Hängande Svart Spridd Urban

Direkt märker du att all data är textbaserad. Du måste konvertera denna data för att kunna använda den i ett diagram. Faktum är att det mesta av datan representeras som ett objekt:

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

Utdata är:

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')

Ta denna data och konvertera kolumnen 'klass' till en kategori:

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

Nu, om du skriver ut svampdatan, kan du se att den har grupperats i kategorier enligt klassen giftig/ätlig:

hattform hattyta hattfärg blåmärken lukt skivfäste skivavstånd skivstorlek skivfärg fotform ... fotyta under ring fotfärg ovanför ring fotfärg under ring slöjtyp slöjfärg antal ringar ringtyp sportrycksfärg population habitat
klass
Ätlig 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

Om du följer ordningen som presenteras i denna tabell för att skapa dina klasskategorietiketter, kan du bygga ett cirkeldiagram:

Cirkeldiagram!

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

Voila, ett cirkeldiagram som visar proportionerna av denna data enligt dessa två svampklasser. Det är ganska viktigt att få ordningen på etiketterna korrekt, särskilt här, så se till att verifiera ordningen med vilken etikettarrayen byggs!

cirkeldiagram

Donutdiagram!

Ett något mer visuellt intressant cirkeldiagram är ett donutdiagram, som är ett cirkeldiagram med ett hål i mitten. Låt oss titta på vår data med denna metod.

Titta på de olika habitat där svampar växer:

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

Här grupperar du din data efter habitat. Det finns 7 listade, så använd dessa som etiketter för ditt 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

Denna kod ritar ett diagram och en cirkel i mitten, och lägger sedan till den cirkeln i diagrammet. Ändra bredden på cirkeln i mitten genom att ändra 0.40 till ett annat värde.

Donutdiagram kan justeras på flera sätt för att ändra etiketterna. Etiketterna kan särskilt framhävas för läsbarhet. Läs mer i dokumentationen.

Nu när du vet hur du grupperar din data och sedan visar den som ett cirkel- eller donutdiagram, kan du utforska andra typer av diagram. Prova ett våffeldiagram, som är ett annat sätt att utforska kvantitet.

Våffeldiagram!

Ett 'våffel'-typ diagram är ett annat sätt att visualisera kvantiteter som en 2D-array av fyrkanter. Prova att visualisera de olika kvantiteterna av svamphattfärger i denna dataset. För att göra detta behöver du installera ett hjälpbibliotek som heter PyWaffle och använda Matplotlib:

pip install pywaffle

Välj ett segment av din data att gruppera:

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

Skapa ett våffeldiagram genom att skapa etiketter och sedan gruppera din data:

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"],
)

Med ett våffeldiagram kan du tydligt se proportionerna av hattfärger i denna svampdataset. Intressant nog finns det många svampar med gröna hattar!

våffeldiagram

PyWaffle stöder ikoner inom diagram som använder alla ikoner som finns tillgängliga i Font Awesome. Gör några experiment för att skapa ett ännu mer intressant våffeldiagram med ikoner istället för fyrkanter.

I denna lektion lärde du dig tre sätt att visualisera proportioner. Först behöver du gruppera din data i kategorier och sedan bestämma vilket som är det bästa sättet att visa datan - cirkel, donut eller våffel. Alla är läckra och ger användaren en omedelbar överblick av en dataset.

🚀 Utmaning

Försök att återskapa dessa smakfulla diagram i Charticulator.

Quiz efter föreläsningen

Granskning & Självstudier

Ibland är det inte uppenbart när man ska använda ett cirkel-, donut- eller våffeldiagram. Här är några artiklar att läsa om detta ämne:

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

Gör lite forskning för att hitta mer information om detta kluriga beslut.

Uppgift

Prova det i Excel


Ansvarsfriskrivning:
Detta dokument har översatts med hjälp av AI-översättningstjänsten Co-op Translator. Även om vi strävar efter noggrannhet, bör det noteras att automatiska översättningar kan innehålla fel eller felaktigheter. Det ursprungliga dokumentet på dess originalspråk bör betraktas som den auktoritativa källan. För kritisk information rekommenderas professionell mänsklig översättning. Vi ansvarar inte för eventuella missförstånd eller feltolkningar som uppstår vid användning av denna översättning.