Korte handleiding: gegevens visualiseren in Python met Altair (2024)
Inleiding
Inleiding tot Altair en Datavisualisatie
Gebouwd op een basis van Vega en Vega-Lite, biedt Altair een heldere syntax om indrukwekkende visuele verhalen te maken van ruwe data.
Daarom gebruik ik Altair als ik data-inzichten wil presenteren. Ten eerste geeft Altair's ontwerpfilosofie prioriteit aan een nauwe integratie met Pandas, dé bibliotheek voor datamanipulatie in Python. Dit betekent dat je dataframes moeiteloos worden omgezet in visualisaties. Ook is de declaratieve syntax erg handig, omdat je kunt beschrijven wat je met de grafiek wilt zeggen, zonder dat je hoeft te bepalen hoe de grafiek eruit moet zien. Dit bespaart mij echt veel tijd.
Laten we beginnen met een eenvoudig voorbeeld. Het importeren van Altair is gewoon een standaard Python import-statement. Als je de Altair-package hebt geïnstalleerd (pip install altair
of conda install -c conda-forge altair
), dan begin je zo.
import altair as alt
from vega_datasets import data
Het dataset dat we gaan gebruiken is een ingebouwde voorbeeldset, perfect om Altair's mogelijkheden te verkennen zonder overweldigd te raken. De Vega datasets package (vega_datasets
) is een schatkamer voor het leren en experimenteren met voorbeelddata.
cars = data.cars()
We hebben nu een dataset over verschillende auto's en hun eigenschappen, zoals kilometers per liter (mpg
), aantal cilinders, enzovoort. Laten we de relatie tussen kilometers per liter en paardenkracht visualiseren met een scatter plot.
chart = alt.Chart(cars).mark_point().encode(
x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color='Origin:N'
)
chart
We maken een chart-object, specificeren het type markering (mark_point()
voor punten in de scatter plot), en coderen de assen. 'Q' staat voor Kwantitatief, wat betekent dat de gegevens numeriek zijn. 'N' betekent Nominaal, wat categorische gegevens vertegenwoordigt. We hebben ook kleurcodering toegevoegd op basis van de herkomst van de auto voor extra inzicht.
En nu zie je de magie van Altair – een interactieve scatter plot waar elk punt een auto voorstelt; als je erover zweeft, zie je meer details van die auto.
De kracht van Altair zit in de eenvoud. Met maar een paar regels code springt data van een statisch spreadsheet en verandert in een interactief verhaal. En dit is nog maar het begin. Altair laat je complexe en gelaagde visualisaties bouwen door simpele bouwblokken te stapelen.
Ik ontdek dat het lezen van de Altair documentatie (https://altair-viz.github.io/) helpt om je begrip te versterken. En met oefenen worden beginnende data-verhalenvertellers ervaren visualiseerders.
Het is belangrijk om te onthouden dat het leren visualiseren van data met Altair, of een andere bibliotheek, een proces van herhaling is. Laat je niet ontmoedigen als je eerste grafiek niet helemaal is wat je had verwacht. Experimenteren leidt tot meesterschap, en Altair is een slimme mentor voor dit proces.
Deze introductie geeft slechts een voorproefje van Altair. Binnenkort leer je hoe je de omgeving opzet voor het gebruik van Altair, je eerste grafiek maakt, en uiteindelijk meer geavanceerde aanpassingen en interactiviteit toevoegt. En als je verder komt, vergeet dan niet het kernprincipe dat Altair leidt: beknopt, declaratief en analytisch. Dit zijn de kenmerkende eigenschappen van goed visueel verhalen vertellen met data.
Je Omgeving Instellen voor Altair
Voordat we beginnen met het maken van verbluffende visualisaties met Altair, moeten we eerst onze omgeving instellen zodat alles soepel verloopt. Ik zal je stap voor stap door het proces leiden, net zoals ik deed toen ik Altair voor het eerst ontdekte.
Allereerst, zorg dat je Python geïnstalleerd hebt. Altair is een Python-bibliotheek, dus dat moet je hebben. Download Python van de officiële site (https://www.python.org/) als je het nog niet op je computer hebt - ik raad aan Python 3.6 of nieuwer te gebruiken, want daar werkt Altair het beste mee.
Met Python klaar voor gebruik, open je je terminal en installeer je Altair met pip - de pakketbeheerder van Python. Hier is het commando dat ik gebruikte:
pip install altair vega_datasets
Altair heeft een paar afhankelijkheden, zoals Pandas en Vega, maar pip regelt dat voor je door alles te installeren wat je nodig hebt om te starten met plotten. Voor de nieuwsgierigen, Vega is de visualisatiegrammatica die achter Altair zit, en biedt een declaratieve taal voor het maken, opslaan en delen van interactieve visualisaties.
Daarna heb je een ontwikkelomgeving nodig om in te coderen. Ik werk graag met Jupyter Notebooks, vooral voor datavisualisatie, omdat ze super gebruiksvriendelijk zijn en je kunt je grafieken direct onder je codeblokken zien. Om dat op te zetten, voer je uit:
pip install notebook
Start het dan met:
jupyter notebook
Je standaard webbrowser opent met de interface van Jupyter. Maak een nieuw notebook en je bent klaar. (Zijnoot: Als je wilt, is JupyterLab een alternatief met meer functies.)
Laten we nu testen of Altair correct is geïnstalleerd. Importeer Altair in je nieuwe notebook met de volgende code:
import altair as alt
Als je geen fouten ziet, gefeliciteerd - Altair is klaar voor gebruik.
Aangezien Altair bedoeld is om direct met data te werken, is het belangrijk om te weten hoe je data importeert. Het vega_datasets
pakket, dat je eerder installeerde, geeft toegang tot een reeks datasets om mee te oefenen, wat handig is om de basis te leren. Hier is hoe je een eenvoudige dataset laadt:
from vega_datasets import data
cars = data.cars()
De bovenstaande code importeert een klassieke dataset over diverse auto's en hun eigenschappen. Om te controleren of het gelukt is, voer print(cars.head())
uit, en je zou de eerste vijf regels van de dataset moeten zien.
Laten we tenslotte een eenvoudige grafiek maken om te zorgen dat alles werkt. De API van Altair is ongelooflijk intuïtief. Met slechts een paar regels zette ik een scatter plot in elkaar:
chart = alt.Chart(cars).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color='Origin',
tooltip=['Name', 'Year']
)
chart
Dat stukje code is alles wat je nodig hebt om een eenvoudige, interactieve scatter plot te maken. Als je het uitvoert, zou je mooie, ronde datapunten moeten zien die verschillende auto's vertegenwoordigen in je notebook, gekleurd op basis van hun herkomst, en als je erover zweeft, zie je de naam en het bouwjaar van de auto - best cool!
Met deze stappen voltooid, heb je met succes je omgeving ingesteld voor het duiken in Altair. De rest van deze handleiding gaat over het echte leuke gedeelte: het maken van je eerste grafiek, het aanpassen ervan, en het bouwen van interacties die zeker indruk zullen maken op iedereen die je werk ziet.
Je Eerste Grafiek Maken met Altair
Het maken van je eerste grafiek met Altair is een belonende stap in de wereld van Python datavisualisatie. Ik ga je begeleiden bij het maken van een eenvoudige staafdiagram, wat niet alleen handig is maar ook een goede basis voor meer complexe visualisaties later.
Allereerst, zorg ervoor dat je je data klaar hebt. Ik gebruik een simpel voorbeeld: een dataset van fruit en hun bijbehorende aantallen. Stel je voor dat je een fruitverkoper bent die de inventaris volgt. Zo zou de data eruit kunnen zien:
import pandas as pd
# Een eenvoudige DataFrame maken
data = pd.DataFrame({
'Fruit': ['Appels', 'Sinaasappels', 'Bananen', 'Druiven', 'Perziken'],
'Aantal': [23, 17, 35, 29, 12]
})
Met onze data in een nette DataFrame, kunnen we beginnen met het maken van een grafiek. Importeer Altair – zorg ervoor dat het is geïnstalleerd met pip install altair
– aangezien ik de installatie hier niet behandel.
import altair as alt
De API van Altair werkt geweldig met zijn beknopte en intuïtieve structuur. Begin met het definiëren van een Chart object, geef het je data, en gebruik de mark_bar() methode om aan te geven dat we een staafdiagram maken.
# Het grafiekobject initialiseren
chart = alt.Chart(data)
Let op de chart
-variabele; dit wordt je handvat voor het toevoegen van verschillende componenten aan de grafiek.
Vervolgens, specificeer je assen door ze te koppelen aan kolommen in je dataset. In Altair doe je dit met de encode()
functie, waar je de x
en y
kanalen aan de data velden toewijst.
# De assen koppelen aan de datasetkolommen
chart = chart.mark_bar().encode(
x='Fruit',
y='Aantal'
)
Zodra je de assen codeert, heb je Altair in feite geïnstrueerd wat er geplot moet worden: fruitnamen op de x-as en hun aantallen op de y-as. Kijk eens hoe eenvoudig dat was.
Om daadwerkelijk je werk te zien, moet je de grafiek weergeven. In een Jupyter notebook volstaat het om simpelweg chart
te typen. In een script wil je het misschien opslaan als een HTML-bestand, of een geschikte renderer voor je omgeving gebruiken.
# De grafiek weergeven
chart
En daar heb je het – je eerste grafiek met Altair. Het resultaat zou een duidelijke, eenvoudige staafdiagram moeten zijn die onze hypothetische fruitvoorraad laat zien. Als je dit uitvoert in een Jupyter notebook of een IDE die grafiekweergave ondersteunt, zie je een nette visualisatie verschijnen.
Het is een goede gewoonte om je grafiek te controleren nadat je hem hebt gemaakt. Representeren de staven wat je verwachtte? Is de data op de juiste manier geordend? Dergelijke zelfaudits helpen je eventuele fouten op te sporen of inzichten in de dataset te onthullen die je misschien hebt gemist.
Wat je zojuist hebt gedaan, is de eerste stap in data storytelling. Door de fruitaantallen te visualiseren, heb je een momentopname van de inventaris gegeven in een vorm die sneller te begrijpen is dan een ruwe tabel met getallen.
Zo moeilijk was dat toch niet? Je hebt de basis gelegd voor meer complexe en informatieve visualisaties terwijl je de basisprincipes van het gebruik van Altair versterkt. Blijf nieuwsgierig, experimenteer met andere marktypes zoals mark_line()
of mark_point()
, en onthoud dat elke grafiek die je bouwt je vaardigheid in de taal van data vergroot.
Geavanceerde Grafiekaanpassingen en Interactiviteit
Bij het verdiepen van onze reis in data visualisatie met Altair, wil ik je laten zien hoe je je statische grafieken kunt omtoveren tot interactieve meesterwerken. Je zult zien dat je met een beetje extra code gebruikers de mogelijkheid kunt geven om de getoonde data in real-time te filteren, te zoomen en aan te passen. Dit maakt het een krachtig hulpmiddel bij het verkennen van datasets en het presenteren van bevindingen.
Laten we beginnen met het aanpassen van onze grafieken met wat meer geavanceerde functies. Stel dat we een scatter plot hebben. Zo voeg je tooltips toe die extra data laten zien als je over een punt zweeft:
import altair as alt
from vega_datasets import data
cars = data.cars()
chart = alt.Chart(cars).mark_point().encode(
x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color='Origin:N',
tooltip=['Name', 'Year', 'Horsepower', 'Miles_per_Gallon']
).interactive()
chart
Dit werkt al behoorlijk goed, maar om onze data echt tot leven te brengen, is interactiviteit de sleutel. Hier is hoe je eenvoudig zoom en pan opties kunt toevoegen:
chart = chart.encode(
x=alt.X('Horsepower:Q', scale=alt.Scale(zero=False)),
y=alt.Y('Miles_per_Gallon:Q', scale=alt.Scale(zero=False))
).properties(
selection=alt.selection_interval(bind='scales')
)
chart
Met selection_interval(bind='scales')
kunnen gebruikers klikken en slepen om in te zoomen op specifieke delen van de grafiek, en rond pannen om verschillende secties van de data te verkennen.
Voor wat dynamiek, laten we een dropdown-menu toevoegen dat onze scatter plot filtert op basis van de oorsprong van de auto's:
input_dropdown = alt.binding_select(options=cars['Origin'].unique())
selection = alt.selection_single(fields=['Origin'], bind=input_dropdown, name='Country of ')
chart = chart.add_selection(
selection
).transform_filter(
selection
)
chart
Een dropdown-menu wordt gecreëerd, en de grafiek past zich aan op basis van je selectie, wat erg boeiend is voor gebruikers die data subsets willen vergelijken.
Een van de sterke punten van Altair is zijn decleratieve aard, waarmee je je bedoelingen tot prachtige visuals vertaalt. Om dit te demonstreren, laten we specifieke datapunten met condities markeren. Stel dat je geïnteresseerd bent in auto's met hoge efficiëntie:
highlight = alt.selection(type='single', on='mouseover',
fields=['Miles_per_Gallon'], nearest=True)
base = alt.Chart(cars).encode(
x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color=alt.condition(highlight, 'Origin:N', alt.value('lightgray'))
).add_selection(
highlight
)
base
Nu zal het bewegen van de muis over de datapunten de punten met hoge Miles_per_Gallon
laten oplichten.
Om onze tutorial af te sluiten, raad ik aan om met deze aanpassingen te experimenteren. Probeer filters, selecties en andere grafiektypes zoals bar, lijn of gebiedsgrafieken te combineren. De mogelijkheden zijn bijna eindeloos en ontzettend boeiend.
Voor verdere verkenning, check de Altair documentatie of duik dieper met voorbeelden van de Altair GitHub repository.
Onthoud, de schoonheid van Altair ligt in je creativiteit met de data. De grafieken zijn zo welsprekend als het verhaal dat je probeert te vertellen. Ga dus gerust aan de slag, gebruik deze bouwstenen, en maak iets dat zowel jij als anderen inzichtelijk zullen vinden.
Delen