Skip to content

Datasets

ROEL2407 edited this page Nov 4, 2021 · 4 revisions

Voor dit project heb ik twee datasets gebruikt. 1 dataset om het cleanen te begrijpen waar er een survey onder de studenten van de tech track een aantal vragen beantwoordden. Deze data moest ik vervolgens door middel van code cleanen. Op het moment dat ik dit schrijf heb ik alleen dat ik de tekst allemaal lowercase kan maken. Als ik meer tijd had, was dat mijn prioriteit geweest.

Voor mijn API "dataset" heb ik gebruik gemaakt van de PokeAPI. Hierbij heb ik de data opgehaald uit de API en vervolgens gefilterd. Ook heb ik sommige data nog aangepast.

Data ophalen

Data heb ik via de volgende code opgehaald:

// Survey:
fetch("./dataset_raw.json")
    .then(function (response) {
        // The JSON data will arrive here
        return response.json();
    })
// API:
fetch("https://pokeapi.co/api/v2/pokemon?limit=9&offset=0")
   .then(response => response.json())

Data cleanen

Ik heb op twee manieren de data gecleaned, alle tekst naar lowercase en lege antwoorden vervangen door "Geen antwoord gegeven":

function dataToLowerCase(obj) {
    let lower;
    let cleanedData = [];
    for (let i = 0; i < obj.length; i++) {
        Object.keys(obj[i]).forEach(key => {
            if (typeof obj[i][key] === "string") {
                lower = obj[i][key].toLowerCase();
                cleanedData.push(lower);
            }
        });
    }
    console.table("To lowercase: ", cleanedData);
}

function replaceBlanks(obj) {
    let repBlanksRaw;
    let replaceBlanks = [];
    for (let i = 0; i < obj.length; i++) {
        Object.keys(obj[i]).forEach(key => {
            if (typeof obj[i][key] === "string") {
                if(obj[i][key] < 1){
                    repBlanksRaw = obj[i][key].toString().replace("", "Geen antwoord gegeven");
                    replaceBlanks.push(repBlanksRaw);
                }
                else {
                    repBlanksRaw = obj[i][key];
                    replaceBlanks.push(repBlanksRaw);
                }
            }
        });
    }
    console.table("Replace blanks: v.b. entry 301", replaceBlanks);
}

Ook heb ik alle keys hernoemd met de volgende code:

function renameKey(obj, oldKey, newKey) {
    delete Object.assign(obj, {
        [newKey]: obj[oldKey]
    })[oldKey];
}

function renameKeys(data) {
    // Renames long keys to simple words
    data.forEach(obj => renameKey(obj, "Wat is je favoriete windrichting?", "windrichting"));
    data.forEach(obj => renameKey(obj, "Wat is je favoriete soort huisdier?", "huisdier"));
    data.forEach(obj => renameKey(obj, "Wat is je oogkleur?", "oogkleur"));
    data.forEach(obj => renameKey(obj, "Op een schaal van 1 tot 10, hoeveel zin heb je in de Tech Track?", "motivatie"));
    data.forEach(obj => renameKey(obj, "Kies zelf of je deze vraag beantwoord.", "upToYou"));
    data.forEach(obj => renameKey(obj, "Wat is je favoriete datum?", "date"));
    data.forEach(obj => renameKey(obj, "Wat is je favoriete datum, maar nu in tekst!", "dateText"));
    data.forEach(obj => renameKey(obj, "Wat is je favoriete zuivelproduct?", "zuivel"));
    data.forEach(obj => renameKey(obj, "Welke kleur kledingstukken heb je aan vandaag? (Meerdere antwoorden mogelijk natuurlijk...)", "kleding"));
    data.forEach(obj => renameKey(obj, "Op welke verdieping van het TTH studeer je het liefst?", "verdieping"));
    data.forEach(obj => renameKey(obj, "Wat wil je worden als je groot bent?", "droombaanNu"));
    data.forEach(obj => renameKey(obj, "Wat wilde je later worden als je groot bent, maar nu toen je zelf 8 jaar was.", "droombaan8"));
    data.forEach(obj => renameKey(obj, "Kaas is ook een zoogdier?", "kaas"));
    data.forEach(obj => renameKey(obj, "Als je later een auto zou kopen, van welk merk zou deze dan zijn?", "auto"));
}

Voor mijn PokeAPI applicatie heb ik nog de base stats per pokemon (in 1 totaal 6 stats) opgeteld tot een totaal base stats:

function CountStats(pokemons) {
    let starterMons = [];
    pokemons.forEach(e => {
        // For every pokemon/object in the array
        const stats = e.stats;  
        let valueHolder = [];
        let totalValueHolder = 0;
        stats.forEach(total => {
            // Counts up values of array to a total
            const reducer = (previousValue, currentValue) => previousValue + currentValue; 
            // Push the stats into a holder and add them up, then set into another holder 
            valueHolder.push(total.base_stat);  
            totalValueHolder = valueHolder.reduce(reducer);
        });
        // Push the name, stats and the total of the stats into a new array
        starterMons.push({
            Naam: e.naam,
            stats: e.stats,
            Totaal: totalValueHolder
        });
    });
    console.table(starterMons);
}

🏠 Home

πŸ“‹ Project

Doel
Proces
Peer review
Rubric
Wat had ik nog willen maken?

πŸ—“ Logboek

Week 1

Dag 1
Dag 2
Dag 3
Dag 4
Dag 5

Week 2

Dag 6
Dag 7
Dag 8
Dag 9
Dag 10: Eindbeoordeling

🧹 Data ophalen en cleanen

Datasets en functies

πŸŽ“ Research

Functional Programming

Clone this wiki locally