data-visualiseren-met-python

Python is een fantastische tool om data mee te visualiseren. De mogelijkheden zijn eindeloos. Zo zijn er verschillende packages waarmee data gevisualiseerd kan worden. In totaal zijn er honderden verschillende visualisaties mogelijk, een stuk meer dus dan in bijvoorbeeld Excel.

Data visualiseren is als data scientist van belang omdat je verborgen patronen makkelijker herkent en omdat je inzichten makkelijker over kunt dragen op anderen.

Het volgende overzicht geeft een indruk van de diversiteit aan mogelijkheden binnen visualisaties.

data visualiseren met python tutorial

In deze blog leer je:

Welke packages er zijn voor Python om data te visualiseren

Wie met data science bezig is zal vroeg of laat ingewikkelde of zeer specifieke visualisaties willen maken. Er zijn diverse packages beschikbaar waarmee visualisaties gemaakt kunnen worden. De drie bekendste zijn:

  • Matplotlib: dit package biedt enorm veel mogelijkheden en vrijheid in het opmaken van figuren. Matplotlib is de basis voor visualisatie in Python en daarom een must-know voor data scientists. De standaard lay-out van Matplotlib is wat minder mooi en je zult redelijk wat code moeten schrijven om tot grafieken te komen (vanwege de hoge mate van vrijheid in de visualisaties). Het is goed om Matplotlib te begrijpen omdat andere packages op deze functionaliteit voortborduren.
  • Pandas: dit package wordt zeer veel gebruikt. Met Pandas is het mogelijk om data te visualiseren, waarbij het package gebruik maakt van de functionaliteit van Matplotlib. Je kunt intuïtief grafieken maken zonder veel code te hoeven schrijven.
  • Seaborn: ook dit package maakt onderliggend gebruik van Matplotlib. Het pakket biedt extra mogelijkheden qua visualisaties (vooral op het gebied van statistische visualisaties), heeft een gemakkelijke syntax en bevat mooie standaard-layouts.

Hoe je Matplotlib gebruikt voor visualisaties

Laten we eens een grafiek proberen te plotten met Matplotlib, zodat je begrijpt wat daarbij komt kijken. Allereerst is het uiteraard essentieel om een dataset te hebben. Als je mee wilt doen kun je hier de dataset met COVID-19 data downloaden die in de volgende visualisaties gebruikt zal worden. De bron van de data is Kaggle en de dataset heet 'novel Corona Virus 2019 Dataset'.

Doorloop de volgende stappen:

  1. Installeer Python op je computer als je dat nog niet hebt
  2. Installeer Jupyter Notebook op je computer zodat je Python code kunt runnen in een fijne interface
  3. Download jouw dataset
  4. Schoon de dataset op als dat nodig is
  5. Lees de dataset in met Pandas in Jupyter Notebook (zie onderstaande code)

Met onderstaande code importeren we het package Pandas, want die hebben we nodig om de dataset (covid_19_data.csv) in Python in te lezen (lees ook: csv bestanden openen in Python). Let op, het is belangrijk dat je eenmalig Pandas installeert als je dat nog nooit hebt gedaan. Naast het inlezen van de dataset verkrijgen we een indruk van de data door info over de kolommen te tonen.

In [76]:

import pandas as pd
corona_data = pd.read_csv('covid_19_data.csv')
corona_data.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 15769 entries, 0 to 15768
Data columns (total 8 columns):
SNo 15769 non-null int64
ObservationDate 15769 non-null object
Province/State 7940 non-null object
Country/Region 15769 non-null object
Last Update 15769 non-null object
Confirmed 15769 non-null float64
Deaths 15769 non-null float64
Recovered 15769 non-null float64
dtypes: float64(3), int64(1), object(4)
memory usage: 985.6+ KB

De dataset bevat gegevens over het aantal corona doden, bevestigde gevallen, en herstelde patiënten per land per provincie per datum. De dataset heeft 8 kolommen en 15.769 rijen.

Om data te visualiseren moeten we nu het package Matplotlib importeren. Ook dit package zal eenmalig geïnstalleerd moeten worden op jouw computer. Naast Matplotlib importeren we ook Numpy, een package dat we later nodig zullen hebben.

In [77]:

import matplotlib.pyplot as plt
import numpy as np

In [78]:

# maak een figuur aan en assen om op te plotten
fig, ax = plt.subplots()

# onderzoek de correlatie tussen het aantal confirmed cases en aantal sterfgevallen
ax.scatter(corona_data['Confirmed'], corona_data['Deaths'])
# Grafiektitel en as-labels
ax.set_title('Bevestigde gevallen en doded COVID-19')
ax.set_xlabel('Bevestigde COVID-19 patiënten')
ax.set_ylabel('Doden met doodsoorzaak COVID-19')

Out[78]:

Text(0, 0.5, 'Doden met doodsoorzaak COVID-19')

In de code kun je zien dat we eerst een leeg figuur aanmaken waarop we kunnen plotten. Vervolgens kiezen we voor een scatterplot om de relatie tussen het aantal bevestigde COVID-19 gevallen en het dodental te onderzoeken. We zien duidelijke lijnen naar voren komen. Voor hetzelfde aantal bevestigde patiënten zien we grote verschillen in dodental. Dit zou verklaard kunnen worden doordat bepaalde regio's of landen anders omgaan met het virus of anders over aantallen rapporteren. We geven met de code de grafiek, de x-as en de y-as een naam.

In [17]:

# maak een figuur aan en assen om op te plotten
fig, ax = plt.subplots()

# onderzoek de correlatie tussen het aantal confirmed cases en aantal sterfgevallen en licht Hubei uit in rood
ax.scatter(corona_data['Confirmed'], corona_data['Deaths'])
ax.scatter(corona_data[corona_data['Province/State']=='Hubei']['Confirmed'], corona_data[corona_data['Province/State']=='Hubei']['Deaths'], color='red')
# Grafiektitel en as-labels
ax.set_title('Bevestigde gevallen en doded COVID-19')
ax.set_xlabel('Bevestigde COVID-19 patiënten')
ax.set_ylabel('Doden met doodsoorzaak COVID-19')

Out[17]:

Text(0, 0.5, 'Doden met doodsoorzaak COVID-19')

Als we verschillende datapunten in dezelfde grafiek willen plotten dan kan dat makkelijk door een extra lijn code toe te voegen. In dit geval hebben we specifiek de gevallen uit Hubei (de bron van corona uitbraak) in het rood uitgelicht. Hiermee krijg je een indruk van de flexibiliteit die Matplotlib biedt.

Matplotlib kent honderden data-visualisaties die je kunt uitproberen. Wij blijven nu bij de basics en laten zien hoe je met een line-chart kunt onderzoeken hoe je oorspronkelijke uitbraak in Hubei zich verhoudt tot de uitbraak van New York die later volgde.

In [79]:

# maak een figuur aan en assen om op te plotten
fig, ax = plt.subplots()

# check het verloop door de tijd tussen Hubei en New York
ax.plot(corona_data[corona_data['Province/State']=='Hubei']['ObservationDate'], corona_data[corona_data['Province/State']=='Hubei']['Confirmed'], color='orange', label='Hubei')
ax.plot(corona_data[corona_data['Province/State']=='New York']['ObservationDate'], corona_data[corona_data['Province/State']=='New York']['Confirmed'], color='blue', label='New York')

# zorg voor nette x-as en titel en legenda
plt.xticks(np.arange(0,100,10), rotation = 45)
ax.set_title('Bevestigde COVID-19 gevallen Hubei vs New York')
ax.legend()
plt.show()

We kunnen zien dat de Chinezen een stuk effectiever te werk zijn gegaan in het terugdringen van het virus dan de Amerikanen. Tenminste, in de gerapporteerde cijfers...

Naast alle negatieve berichtgeving is het misschien leuk om te zien in welke landen er al veel mensen zijn hersteld van COVID-19. Met een bar chart visualisatie geven we inzicht in de landen die al meer dan 10.000 herstelde burgers kennen.

In [80]:

landen_met_corona = corona_data['Country/Region'].unique()
maximum_hersteld_per_land = {}

for land in landen_met_corona:
sample_land = corona_data[corona_data['Country/Region']==land]
max_hersteld = sample_land['Recovered'].max()
if max_hersteld > 10000:
maximum_hersteld_per_land[land] = max_hersteld

# maak een figuur aan en assen om op te plotten
fig, ax = plt.subplots()

ax.bar(list(maximum_hersteld_per_land.keys()), list(maximum_hersteld_per_land.values()))
plt.xticks(rotation = 45)
plt.show()

Deze basale visualisaties geven je een eerste indruk van de mogelijkheden, maar op deze pagina vind je >100 visualisatie-mogelijkheden binnen Matplotlib. In onze tweedaagse Python cursus voor data science leer je werken met Python en staan we uitgebreid stil bij visualisaties met Matplotlib. Na de cursus kun je zelfstandig datasets visualiseren in een grafiek-type naar wens.

Hoe je Pandas gebruikt voor visualisaties

Het package Pandas gebruikt zoals gezegd in de introductie Matplotlib functionaliteit. De syntax binnen Pandas is sterk vereenvoudigd waardoor data visualisaties intuïtiever maar ook minder flexibel worden.

We kunnen met zeer weinig code dezelfde scatterplot genereren in Pandas als dat we deden met Matplotlib:

In [81]:

corona_data.plot.scatter(x='Confirmed', y='Deaths', title='Bevestigde gevallen en doded COVID-19')

Out[81]:

<matplotlib.axes._subplots.AxesSubplot at 0x119cf2828>

Ook een line-chart is gemakkelijk te genereren. Hier bekijken we bijvoorbeeld het verloop van de ziekte in een andere infectie-haard, namelijk Iran.

In [82]:

corona_data[corona_data['Country/Region']=='Iran'][['ObservationDate','Confirmed','Deaths','Recovered']].plot.line(x='ObservationDate', rot=45)

Out[82]:

<matplotlib.axes._subplots.AxesSubplot at 0x119e8c7f0>

We kunnen dus met zeer weinig code op intuïtieve wijze data visualiseren met Pandas.

Wil je nog veel meer leren over visualisaties met Python? Schrijf je dan in voor onze Python cursus voor data science, onze machine learning cursus, of voor onze data science opleiding en leer met vertrouwen te programmeren en visualiseren in Python. Nadat je een van onze trainingen hebt gevolgd kun je zelfstandig verder aan de slag. Je kunt ook altijd even contact opnemen als je een vraag hebt.

Download één van onze opleidingsbrochures voor meer informatie

by: