In onze trainingen leren wij onze deelnemers hoe ze Python kunnen gebruiken om data-analyses te verrichten of voorspellingen te doen. Dankzij de intuïtieve syntax, de beschikbaarheid van vele packages en een levendige community wordt Python hier de laatste jaren enorm veel voor gebruikt door data scientists in sectoren als de zorg en de overheid, of in disciplines als logistiek, HR, of marketing.
Maar Python is niet de enige taal waarin dit kan, ook SQL is een veelgebruikte taal waarmee data-bewerkingen gedaan kunnen worden. In de praktijk wordt deze taal naast Python heel vaak gebruikt. Maar wanneer gebruik je nu welke taal?
In deze blog leggen we uit:
- Wat is SQL?
- Wat zijn de verschillen en overeenkomsten tussen SQL en Python?
- Wanneer gebruik je SQL en wanneer Python?
Wat is SQL?
SQL is een relatief oude taal en heeft zich in de jaren '80 ontwikkeld tot wat het nu is. SQL is een taal die gebruikt wordt voor het opvragen van en bewerken van data in relationele databases.
Een relationele database (ook wel SQL database genoemd) is een database waarin data gestructureerd is opgeslagen in tabellen met gedefinieerde kolommen.
Als je data uit een SQL-database wilt halen, schrijf je een query in SQL. Stel, je hebt een tabel genaamd 'klanten' met de kolommen 'naam', 'adres' en 'provincie' en je bent alleen geïnteresseerd in alle klanten die in Zuid-Holland wonen. Je zou de data dan als volgt kunnen opvragen:
SELECT *
FROM klanten
WHERE provincie = 'Zuid-Holland'
Je ziet hierin drie woorden in hoofdletters: SELECT, FROM en WHERE. In normaal Nederlands staat hier dat je alle kolommen (vanwege de * die na 'SELECT' staat) selecteert uit de tabel 'klanten' waar in de kolom 'provincie' de waarde gelijk moet zijn aan Zuid-Holland.
Naast het selecteren van data, kan je ook groeperen (middels GROUP BY), tabellen aan elkaar koppelen (middels JOIN) en berekeningen uitvoeren.
Wat zijn de verschillen en overeenkomsten tussen Python en SQL?
Python en SQL hebben veel verschillen, maar ook veel overeenkomsten. De belangrijkste overeenkomst is dat je met beide talen data kan filteren, groeperen en aan elkaar koppelen. (in Python doe je dit doorgaans met het package pandas).
Maar er zijn ook verschillen.
1. Complexe logica toepassen is makkelijker met Python
SQL is geen programmeertaal maar een 'query language'. Het fundamentele verschil is dat je met SQL beschrijft wat de gewenste uitkomst is, terwijl je bij een programmeertaal zoals Python beschrijft welke logica er toegepast moet worden om tot deze uitkomst te komen. Concreet betekent dit dat je in Python meer mogelijkheden en flexibiliteit hebt om complexe logica toe te passen, zoals bijvoorbeeld machine learning algoritmes om voorspellingen of complexe classificaties te doen.Dit is één van de redenen om Python te leren.
2. SQL werkt alleen met SQL-databases
SQL is een taal gemaakt voor SQL-databases. De data moet dus in een SQL-tabel zitten indien je SQL gebruikt. Python werkt met allerlei databronnen, zoals bijvoorbeeld losse Excel-bestanden, csv-bestanden of XML-bestanden.
3. SQL is geschikter om grote hoeveelheden data te verwerken
SQL-code wordt uitgevoerd op de server waar ook de database zich bevindt, terwijl Python-code (standaard) wordt uitgevoerd op de computer waarop Python geïnstalleerd staat. Dit betekent dat je met SQL makkelijker analyses kan doen op grote hoeveelheden data, omdat een server doorgaans betere processors en meer werkgeheugen heeft dan je eigen laptop.
Voor simpele bewerkingen op grote hoeveelheden data is SQL geschikter
Een voorbeeld: stel je hebt informatie over alle aankopen bij een supermarkt in Nederland van de afgelopen 10 jaar. In deze supermarkt worden in heel Nederland 10.000 aankopen per dag gedaan, over een periode van 10 jaar zijn dit 36 miljoen aankopen.
Indien je dit bestand wilt openen in Python, moeten er bijna 36 miljoen rijen worden ingelezen, pas daarna kan je logica toe gaan passen. Voor een normale pc is dit al gauw teveel of het duurt heel lang om de data in te lezen. Echter, een query uitvoeren op de database zelf is in dit geval doorgaans geen probleem omdat de server en database geoptimaliseerd zijn om met dit soort hoeveelheden data te werken.
4. Python is een programmeertaal met veel meer functionaliteit dan alleen data-analyse
Indien het gaat om het analyseren en verwerken van data hebben Python en SQL veel overeenkomsten, maar Python heeft veel meer functionaliteit dan enkel voor data-analyse. Zo kan je Python ook gebruiken om gemakkelijk bestanden in te lezen, data te visualiseren, data weg te schrijven en verbindingen te maken met andere systemen, dingen die met SQL allemaal onmogelijk zijn. Python leren duurt daarom wat langer.
5. Python-code is makkelijker te beheren
Python-code leeft in losse Jupyter-notebooks of .py-bestanden. Deze code kan middels Git-repositories makkelijk beheerd en gedeeld worden. SQL-queries worden vaak opgeslagen als 'procedures' of 'views' in de database zelf en zijn daardoor lastiger te beheren via Git.
Samenvatting
Python | SQL |
Python is een algemene programmeertaal, geschikt voor veel toepassingen, waardoor data-analyse | SQL een 'query language' waarmee je databases kan benaderen en wijzigen |
Omdat Python een algemene programmeertaal is, werkt het samen met elke denkbare databron mogelijk | SQL kan alleen worden gebruikt voor data die is opgeslagen in SQL-tabellen |
Python heeft van zichzelf veel functionaliteit en deze functionaliteit kan worden uitgebreid met packages | SQL is beperkter in functionaliteit, maar voor simpele bewerkingen erg geschikt |
Python-code wordt lokaal uitgevoerd is en daardoor minder geschikt voor bewerkingen op grote hoeveelheden data | SQL-code wordt op een server uitgevoerd en is daardoor erg geschikt voor met name simpele bewerkingen op grote hoeveelheden data |
Python code is makkelijk te beheren via Git | SQL-code is niet te beheren via Git |
Een andere interessante vergelijking: Python vs Excel: wanneer gebruik je wat?
Wanneer gebruik je SQL en wanneer gebruik je Python?
We hebben inmiddels geconstateerd dat SQL en Python veel overeenkomsten hebben, met name als het gaat om relatief simpele bewerkingen op grote hoeveelheden data. Echter, dan moet de data dus wel in een SQL tabel zitten, dat is lang niet altijd zo. Indien je later complexere dingen wilt gaan doen, zoals bijvoorbeeld machine learning, moet je dan alsnog overstappen naar Python.In de praktijk zie daarom dat SQL en Python als volgt gebruikt worden:
- Indien de data in een SQL-tabel zit wordt SQL gebruikt voor de eerste selectie en opschoning van van data
- Relatief simpele analyses over grote hoeveelheden data worden vaak in SQL gedaan
- Python wordt gebruikt indien er complexere logica toegepast moet worden, statistische berekeningen gedaan moeten worden of bepaalde analyses herhaald moeten worden onder verschillende condities en/of er visualisaties van de output benodigd zijn
Samengevat: indien de data netjes in een SQL-tabel zit en je geen ingewikkelde analyses wilt doen, is SQL prima geschikt. Echter, zodra je iets meer complexiteit wilt gaan toevoegen en/of data wilt gebruiken van andere bronnen dan SQL, dan is Python veel geschikter.
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 cursus, of voor onze data science opleiding en leer met vertrouwen te programmeren en analyseren 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
Rik is data scientist en marketeer bij Data Science Partners. Vanuit zijn achtergrond op de Technische Universiteit Eindhoven heeft hij veel affiniteit met data. Na zijn studie heeft hij als consultant altijd met data gewerkt en tevens ervaring opgedaan in het geven van trainingen.