Dit project is een Python-coderingsproject voor de data-analyse van een subset van de European Social Survey (ESS)-dataset.Het project is opgebouwd rondom twee afzonderlijke, maar complementaire functionaliteiten: het genereren van gedetailleerde rapporten voor individuele respondenten en het uitvoeren van statistische analyses op de volledige dataset.Het is een modulaire aanpak: codeblokken kunnen opnieuw gebruikt worden voor verschillende doeleinden/datasets.
Deze functionaliteit richt zich op het genereren van een gedetailleerd rapport voor elke individuele respondent. De code vertaalt numerieke codes, die in de ruwe dataset worden gebruikt, naar menselijk leesbare labels. Dit maakt de data direct begrijpelijk en elimineert de noodzaak om handmatig codes op te zoeken.
Resultaat: Een overzichtelijke, leesbare tekst die elke variabele met zijn vertaalde label toont.
📈 Statistische Analyse Deze functionaliteit voert kwantitatieve analyses uit op de gehele dataset. In tegenstelling tot de rapportage, die zich richt op individuele gevallen, richt de analyse zich op het aggregeren van gegevens om algemene trends en patronen te identificeren. Resultaat: Statistische samenvattingen, zoals het berekenen van het gemiddelde, het filteren van data, en het verkrijgen van geaggregeerde inzichten.Dit is een voorbeeld van hoe met Object Georiënteerd Programmeren eerste stappen kunnen worden gezet in basis-statistische analyse.
Aanmaken van een databank met de databanken generator.(is zowel aanwezig in de map voor de dataset België als het vervolgproject met dataset Europa.)
Aanvankelijk heb ik dan ook een Postgresql databank opgezet voor de ESS-data met geselecteerde variabelen voor België. De databanken generator laadt automatisch het CSV bestand in om vervolgens de databank aan te maken. Er is een respondenten tabel en een codeboektabel, om later de labels te kunnen koppelen aan antwoordwaarden van de survey.
Na het opzetten van de databank, was het de bedoeling om statistische analyse te kunnen uitvoeren met Pandas (en numpy) De map analyses_met_pandas_jaar1 komt tegemoet aan de eerste 3 onderzoeksvragen die ik had vooropgesteld. In de map analyses_met_pandas_voorafgaand_jaar2 heb ik alvast gepoogd de volgende onderzoeksvragen te beantwoorden die ik had vooropgesteld.De onderzoeksvragen had ik opgesteld zonder dat ik een concreet idee had hoe ik de data verder ging kunnen analyseren en wat er mogelijk was met Python. Voor het berekenen van gemiddelden heb ik rekening gehouden met de analyse-gewichten. Voor de dataverzameling maakt de ESS uitsluitend gebruik van steekproeven op basis van waarschijnlijkheid (probability-based samples). Elk element in de ESS-doelpopulatie moet daarom een kans groter dan nul hebben om in de steekproef te worden opgenomen. Bij het analyseren van ESS-dataschattingen moet ook rekening worden gehouden met de waarschijnlijkheid dat elke respondent deel uitmaakt van de steekproef. Dit betekent dat de meest nauwkeurige schattingen pas worden verkregen na het wegen van de data. De officiële bron en handleiding voor het gebruik van gewichten vind je op de website van de European Social Survey: https://www.europeansocialsurvey.org/methodology/ess-methodology/data-processing-and-archiving/weighting
De data die in dit project is gebruikt, is afkomstig van de European Social Survey (ESS). De ESS is een academisch geleide sociale survey die sinds 2001 elke twee jaar wordt gehouden in heel Europa. Data download beschikbaar op: https://www.europeansocialsurvey.org/data/
installatie-instructies:
Volg deze stappen om het project lokaal op te zetten:
-
Repository clonen
-
Virtuele omgeving aanmaken Het wordt aangeraden om een virtuele omgeving te gebruiken in anaconda, de omgeving met alle benodigde pakketten wordt volledig gemaakt met volgend commando (deze forged alle bibliotheken met elkaar en zorgt dat alles compatibel werkt)
conda env create -f environment.yml
-
In bash:docker compose up -d (opstarten van container, eerst dient docker desktop geinstalleerd te worden) => te downloaden op www.docker.com/products/docker_desktop/ controleren of alles werkt: docker ps Docker dient altijd op achtergrond te runnen om toegang te hebben tot databank.
-
Omgevingsvariabelen instellen Dit project maakt gebruik van een .env bestand voor database-connecties.
Maak een nieuw bestand aan genaamd .env in de hoofdmap.
Voeg je inloggegevens toe :
DB_USER=jouw_gebruikersnaam DB_PASSWORD=jouw_wachtwoord DB_HOST=localhost DB_PORT=5432 DB_NAME=jouw_database
Maak vervolgens een databank connectie aan met de gegevens van de .env, hierna staat alles klaar.
Projectstructuur:
──.vscode
│ settings.json
│
├───assets #illustratiebestanden voor de readme
│ eerste_onderzoeksvragen.png
│ schema2_dataset_bel.png
│ schema_dataset_bel.png
│
├───dataset België
│ │ codeboek dataset België.html
│ │
│ ├───Analyses_met_pandas_jaar1
| | | eda_dataset_bel.ipynb #verkennende analyses en visualisaties
│ │ │ bewerkingen_pandas_OV1.ipynb # dataset belgië: analyses van de verschillende onderzoeksvragen
│ │ │ bewerkingen_pandas_OV2.ipynb #(ov1= onderzoeksvraag 1n, ov2=
│ │ │ bewerkingen_pandas_OV3.ipynb #onderzoeksvraag2 etc)
│ │ │ mytools.py
│ │ │
│ │ └───__pycache__
│ │ mytools.cpython-313.pyc
│ │
│ ├───Analyses_met_pandas_voorafgaand_jaar2 #dataset België: experimentele analyses van onderzoeksvragen
│ │ │ bewerkingen_pandas_OV5_OV6_OV7_OV8.ipynb #4 tot 10
│ │ │ bewerkingen_pandas_OV9_OV10.ipynb
│ │ │ bewerkingen_pandas_welbevinden_index_OV4.ipynb
│ │ │ mytools.py #bestand met functies die
│ │ │ #kunnen worden geïmporteerd
│ │ └───__pycache__
│ │ mytools.cpython-313.pyc
│ │
│ ├───databank #alle bestanden inzake de databank
│ │ DatabankEindproef.session.sql
│ │ databank_input.sql #bestand dat de data invoert (altijd eerst
#uitvoeren, voor de dbgenerator!)
│ │ container
│ │ eindproef_finaal.csv # csv bestand dataset belgië
│ │ gemiddelde_berekenen_onderzoeksvraag1.sql #berekening gemiddelden(try-out)
│ │ respondent_databanken_generator2.ipynb #databanken generator bestand
│ │ update_databank_eindproef_weights.sql # update van databank met correcte
│ │ #anweight, laten lopen na aanmaak db
│ └───rapporten
│ eindproef_finaal.csv
│ respondent_details_dict_.txt
│ respondent_rapporten_generator.ipynb #rapporten generator
│ statistische berekeningen.ipynb #analyzer
│
└───dataset europa
│ .gitignore
│ codeboek dataset EU.html
│ steekproef_europa.csv # csv bestand dataset europa
│
├───analyses met pandas jaar 1 # code voor beantwoorden onderzoeksvraag 1 en 2 van
│ │ .env #dataset Europa
│ │ bewerkingen_pandas_OV1_EU.ipynb #onderzoeksvraag 1 analyse(grotendeels experimenteel)
│ │ bewerkingen_pandas_OV2_EU.ipynb #onderzoeksvraag 2 analyse(grotendeels experimenteel)
│ │ mytools.py
│ │ steekproef_europa.csv
│ │
│ ├───geofiles #nodige bestanden voor
│ │ ne_110m_admin_0_countries.cpg #Geopandas en het maken
│ │ ne_110m_admin_0_countries.dbf #van kaart van #europa
│ │ ne_110m_admin_0_countries.prj
│ │ ne_110m_admin_0_countries.README.html
│ │ ne_110m_admin_0_countries.shp
│ │ ne_110m_admin_0_countries.shx
│ │ ne_110m_admin_0_countries.VERSION.txt
│ │
│ └───__pycache__
│ mytools.cpython-311.pyc
│
├───databank_EU #aangepaste bestanden vooropzetten databank (dataset Europa)
│ databanken_generator_ESS_EU.ipynb #databanken generator
│ databank_input.sql #bestand dat de data invoert (altijd eerst uitvoeren, voor de dbgenerator!)
│
│ update_databanken_gewichten.sql #update anweight in hele db (runnen na aanmaak databank)
│
└───__pycache__
docker_compose.yml #bestand voor aanmaak docker
--------environment.yml #omgevingscreator
met anaconda
Te volgen stappen om het project te gebruiken, in de volgorde waarop het werd aangemaakt:
1: best eerst de map dataset België verkennen. Hierbij eerst de rapportengenerator en analyzer uitproberen.
2. vervolgens de databanken generator: eerst databank_input.sql runnen. Hierna de databankengenerator. Hierna het update_databank_eindproef_weights.sql bestand runnen.
3. vervolgens Analyses_met_pandas_jaar1 uitproberen.
4. vervolgens Analyses_met pandas_jaar2 uitproberen (experimenteel design: behoort niet tot gezien leerstof)
5. vervolgens map dataset Europa verkennen, eerst databankengenerator_ESS-EU.(ook eerst databank_input.sql runnen en na de databankengenerator ook de weights updaten)
6.Hierna kan analyses met pandas jaar 1 worden verkend (waarbij Geopandas wordt gebruikt, gedeeltelijk experimenteel design met geopandas, werd ook niet gezien in de leerstof van het eerste jaar).
