Op deze pagina vind je een overzicht van de meestgebruikte Python Packages voor data science en hun functionaliteit. De packages zijn geordend naar categorie.
Het doel van de pagina is om je kennis te laten maken met de eindeloze mogelijkheden die Python biedt voor data science. Jezelf verdiepen in Python Packages is een belangrijk onderdeel van het leren van Python.
Uiteraard moet je voordat je aan de slag kunt met Python Packages wel Python installeren.
Met onderstaand uitklapmenu kun je in één keer naar een Python package naar keuze springen.
Lees ook: Wat is Jupyter Notebook? [incl. installatie-handleiding]
Python packages voor data verzameling en transformatie
Pandas
Pandas is misschien wel het belangrijkste packages voor een data scientist. Pandas is een package waarmee tabulaire data vanuit externe databronnen geïmporteerd, bewerkt, en opgeslagen kan worden. De naam is afkomstig van de term 'panel data', een begrip uit de statistiek.
Verdieping: alles over pandas met voorbeelden
Het geeft de mogelijkheid tot het importeren van data diverse externe databronnen, bijvoorbeeld HTML-, CSV-, XLSX-bestanden, of een SQL database. Hiervan wordt een object gemaakt met rijen en kolommen, vergelijkbaar met een Excel-sheet.
Lees ook: Python vs Excel: wanneer gebruik je wat?
Er zijn diverse ingebouwde Python functions en methodes om de geïmporteerde data te transformeren. Enkele voorbeelden zijn wiskundige functies toepassen, filteren, groeperen, combineren en het toepassen van tijdreeks functionaliteiten.
Een Pandas object kan vervolgens weer geëxporteerd worden naar een diversiteit aan verschillende uitgangs formaten, om zo de gemodificeerde data extern op te slaan.
Oefenen met Pandas? Dat kan in deze Python for data science tutorial met echte data set
NumPy
Met NumPy kunnen multidimensionale arrays en matrices verwerkt worden. Hiervoor is binnen de package een uitgebreide verzameling wiskundige functies en methodes beschikbaar om verschillende data bewerkingen mogelijk te maken op de objecten.
NumPy is gebaseerd op twee eerdere Python packages: Numeric en Numarray. Dit verklaart ook de naam.
Doordat Python een "interpreter programmeertaal" is zijn wiskundige algoritmen in de taal veelal langzamer dan in een gecompileerde taal coals C. NumPy lost dit op doordat directe matrix operaties verricht worden. Hierdoor is een algoritme wat gebruik maakt van NumPy bijna net zo snel als het equivalent wat in bijvoorbeeld C geschreven zou zijn.
SciPy
SciPy is net als NumPy een package voor het verrichten van wiskundige functies. Het is gebaseerd op NumPy biedt additionele functionaliteiten.
De naam is een afkorting voor 'scientific Python'. Net als in NumPy is de datastructuur een multidimensionaal array.
Met SciPy zijn hulpmiddelen beschikbaar om vraagstukken uit bijvoorbeeld de lineaire algebra, kansrekening, en integraalvergelijkingen op te lossen.
ScraPy
ScraPy is een package waarmee spider bots gemaakt kunnen worden: algoritmes om geautomatiseerd (web)pagina's uit te lezen. Het uitlezen van informatie op webpagina's wordt ook wel scraping en crawling genoemd.
De naam ScraPy is dan ook een samenvoeging van de woorden webscraping en Python.
Met ScraPy kan door het uitlezen van webpagina's de hierop aanwezige informatie als gestructureerde data worden verkregen.
Pypyodbc
Pypyodbc is een Python package waarmee een database connectie gemaakt kan worden door gebruik te maken van ODBC (open database connectivity).
Nadat de verbinding met een database gemaakt is kan middels SQL code (structured query language) informatie vanuit de tabellen opgehaald en verwerkt worden.
Python packages voor visualisaties
Matplotlib
Matplotlib is een toegankelijke package om tweedimensionale diagrammen en grafieken te plotten. Er kunnen diverse soorten grafieken mee gemaakt worden, variërend van histogrammen en scatterplots tot niet-cartesische coördinaten grafieken.
Het is ontstaan om een gratis alternatief te bieden voor bepaalde onderdelen van het softwarepakket MATLAB, dit verklaart ook de naam.
Er is veel vrijheid voor het personaliseren van de stijl van de grafieken die met Matplotlib gemaakt kunnen worden. Denk hierbij aan onder andere kleurgebruik, lettertypes, groottes, opmaken van assen en legenda's.
Veel van de andere packages om grafieken te plotten maken bovendien gebruik van Matplotlib.
Oefenen met Matplotlib? Dat kan in deze Python for data science tutorial met echte data set
Seaborn
Seaborn is een package bovenop op Matplotlib waarmee door gebruik te maken van standaard settings makkelijk grafieken voor data-analyse doeleinden gemaakt kunnen worden.
Het is gebruikelijk om Seaborn te importeren als 'sns', wat ongebruikelijk is omdat het geen directe afkorting is. Dit is een inside joke, het is een verwijzing naar het karakter Samuel Norman Seaborn uit de serie The West Wing.
Seaborn biedt een rijke keuze aan verschillende grafiektypen variërend van standaard tot complex. Hierbij valt te denken aan jointplots (gecombineerde grafieken), violin charts (vergelijkbaar met een boxplot maar met ingebouwde visualisatie van spreiding) en heatmaps (visualiseren van correlatie sterktes tussen meerdere variables).
Oefenen met Seaborn? Dat kan in deze Python for data science tutorial met echte data set
Bokeh
Bokeh is een package waarmee interactieve en schaalbare data visualisaties gemaakt kunnen worden die middels JavaScript widgets op webpagina's weergegeven kunnen worden.
De naam bokeh komt van het Japanse woord bo-ke, wat in deze strekking een betekenis heeft als in focus door vervaging.
Het package bevat een grote verzameling verschillende visualisatiemogelijkheden zoals grafiektypen en stijl opties. Verder zijn er diverse opties om interactie mogelijk te maken zoals het linken van grafieken, het definiëren van callback functies en het toevoegen van widgets.
Plotly
Plotly is naast Bokeh ook een packages waarmee interactieve grafieken gemaakt kunnen worden voor de toepassing op bijvoorbeeld webapplicaties. De naam is een verwijzing naar het plotten van grafieken.
Het biedt net als Bokeh een grote diversiteit aan visualisatiemogelijkheden en maakt gebruik van JavaScript voor webfunctionaliteit. Voorbeelden van visualisatiemogelijkheden zijn 3D grafieken, statistische grafieken en SVG maps (scalable vector graphics).
Pydot
Pydot is een package waarmee al dan niet complexe oriented en non-oriented diagrammen gemaakt kunnen worden.
De naam is een link tussen Python en DOT files. Pydot maakt gebruik van een andere package genaamd Graphviz.
Met Pydot is het mogelijk om structuren te visualiseren. Een veelgebruikte toepassing hiervan is het plotten van een weergave van een neural network of een decision tree algoritme binnen machine learning.
Flask
Flask is een micro web framework geschreven in Python. Vanuit Flask zijn hulpmiddelen beschikbaar om een webapplicatie te maken.
Een micro framework betekent dat het geen tot weinig afhankelijkheden heeft van externe packages. Hierdoor is het enerzijds licht en onafhankelijk, anderzijds bewerkelijker bij het toevoegen van niet aanwezige functionaliteiten.
De mogelijkheden van webapplicaties die met Flask gemaakt kunnen worden zijn eindeloos, denk bijvoorbeeld aan interactieve informatiepagina's, een blog, een wiki of een web-based kalender.
Python packages voor machine learning
StatsModels
StatsModels is een package wat functionaliteiten biedt om verschillende statistische voorspellingsmodellen te creëren, om statistische testen te verrichten, en voor het verkennen van statistische data. De naam is een afkorting van 'Statistical Models'.
Er kunnen bijvoorbeeld statistische lineaire modellen zoals lineaire regressie opgesteld worden, er kunnen statistische testen zoals ANOVA verricht worden, en tijdreeksen kunnen geanalyseerd worden.
Scikit-learn
Scikit-learin bevat vele algoritmes voor standaard machine learning en data mining taken zoals clusteren, regressie, classificatie, dimensie reductie en modelselectie.
Doe ook deze uitdagende machine learning classificatie tutorial
De naam is een afgeleide van scientific kit. Scikit-learn is gebaseerd op NumPy, SciPy en Matplotlib en wordt gezien als een van de beste packages binnen de doelgroep.
Scikit-learn wordt vooral gebruikt voor het maken van modellen. Specifieke voorbeelden van modellen die met Scikit-learn gemaakt kunnen worden zijn logistic regression, support vector machines, random forests, k-neighbors.
Ook interessant: uitleg over support vector machine algoritme + tutorial
Ook interessant: uitleg over k-nearest neighbor + tutorial
Je leert eigen machine learning modellen ontwikkelen met dit package in onze data science opleiding.
XGBoost
XGBoost is package waarmee gradient boosting machine learning modellen opgebouwd kunnen worden. De naam is dan ook afkomstig van de term gradient boosting.
Gradient boosting richt zich op het samenstellen van meerdere individueel zwakkere decision tree modellen tot een krachtiger geheel. XGBoost biedt hoogwaardige geoptimaliseerde, schaalbare en snel te implementeren gradient boosting algoritmes. Met deze algoritmes kunnen zowel classificatie als regressie vraagstukken opgelost worden.
Theano
Theano is een package waarmee je wiskundige vergelijkingen kunt definiëren, optimaliseren en evalueren. Dit speciaal voor multidimensionale NumPy arrays.
Met Theano is het mogelijk om dezelfde reken snelheden te behalen als met C bij vraagstukken met grote datasets. Het is zelfs mogelijk om betere prestaties te bereiken wanneer gebruik gemaakt wordt van GPU (graphics processing unit ) functionaliteit. Theano is een Griekse naam die goddelijk betekent.
Theano wordt vooral toegepast wanneer aan grote datasets wordt gerekend en snelheidsverbeteringen wenselijk zijn, voor het stabiliseren van onstabiele numerieke vergelijkingen en voor het automatisch genereren van symbolische diagrammen bij het berekenen van gradients.
TensorFlow
TensorFlow is een package wat geschikt is voor het verrichten van numerieke berekeningen en machine learning op grote schaal.
De naam TensorFlow is een verwijzing naar flow in tensoren: de generalisatie van vectoren en matrices. Het is ontwikkeld door Google en maakt een diversiteit aan machine learning en deep learning modellen en algoritmes beschikbaar.
Een essentieel onderdeel van TensorFlow is het multi-level nodes system, waarmee neural networks modellen op grote datasets snel getraind kunnen worden. Dit is de kracht achter de stemherkenning en objectidentificatie in afbeeldingen bij Google.
Met TensorFlow kunnen deep neural networks opgebouwd worden voor bijvoorbeeld handschriftherkenning, objectherkenning en tekstvertaling.
Keras
Keras is een package waarmee neural network machine learning algoritmes gemaakt kunnen worden.
Keras is een Grieks woord wat hoorn betekent. Keras is minimalistisch en duidelijk opgezet met een hoge mate van uitbreidingsmogelijkheden. Keras maakt gebruik van de packages Theano of TensorFlow als backend. Door de minimalistische opzet is het snel toe te passen en relatief eenvoudig om mee te experimenteren.
Ondanks de minimalistische opzet is het erg krachtig voor serieus modelleerwerk.
Het algemene idee van Keras is gebaseerd op layers (gelaagdheid), waar alles omheen gebouwd is. De data wordt gekenmerkt als tensoren (generalisatie van vectoren en matrices), waarbij in het model de eerste laag verantwoordelijk is voor inputs, de laatste laag voor de outputs, en het werkelijk bepalende model hiertussen.
PyTorch
PyTorch is een groot framework waarmee data transformaties als in NumPy verricht kunnen worden, maar dan binnen een GPU omgeving. Verder biedt het deep learning functionalities met hierbij de uitgangspunten flexibiliteit en snelheid.
Het is gebaseerd op de in C geschreven applicatie Torch, een deep learning library. Data wordt als tensoren behandeld en kan als NumPy arrays aangeleverd worden.
PyTorch is te gebruiken om neural network modellen op te bouwen voor bijvoorbeeld tekstherkenning of image recognition (beeldherkenning).
Python packages voor natural language processing
NLTK
NLTK is een platform waarmee natural language processing taken verricht kunnen worden. Met NLTK kan tekst op meerdere manieren geanalyseerd en verwerkt worden, getagd worden, en kan er bijvoorbeeld informatie uit gefilterd worden. NLTK staat voor de afkorting Natural Language Toolkit. Het wordt veelal gebruikt voor prototyping en onderzoek.
SpaCy
SpaCy is een natural language processing omgeving die in Cython is geschreven, een C uitbreiding van Python. Het biedt veel voorbeelden, goede API documentatie en demo applicaties.
Verder support het bijna 30 talen, is deep learning geïntegreerd en streeft het naar robuustheid en nauwkeurigheid. SpaCy is in staat om gehele documenten te verwerken zonder dat deze eerst opgedeeld moeten worden.
Gensim
Gensim is een package om semantische analyses, topic modeling en vector-space modeling te verrichten.
Gensim maakt gebruik van NumPy en SciPy. Met Gensim kunnen populaire natural language processing algoritmes zoals word2vec geïmplementeerd worden. Verder kan met fasttext op efficiënte wijze woordgebruik geleerd worden.
Hiermee is Gensim in staat om zo makkelijk mogelijk met minimale menselijke interactie semantische informatie uit ruwe, ongestructureerde data te ontsluiten.
Wil je nog veel meer leren over Python en Data Science? Schrijf je dan in voor onze Python cursus voor data science, onze machine learning training, of voor onze data science opleiding en leer met vertrouwen te programmeren en analyseren in Python.
Download één van onze opleidingsbrochures voor meer informatie
Peter is een ervaren data scientist en python trainer. Na zijn studie aan de Technische Universiteit Delft heeft hij zich altijd bezig gehouden met data en diverse programmeertalen. Peter heeft veel data analyses uitgevoerd en processen geautomatiseerd met Python in productieomgevingen.