En aquest tema, aprendrem com netejar i transformar dades per preparar-les per a la visualització amb D3.js. La qualitat de les dades és fonamental per a la creació de visualitzacions precises i significatives. Aquest mòdul cobreix les tècniques bàsiques i avançades per assegurar que les dades estiguin en el format correcte i lliures d'errors.

Objectius del Tema

  • Entendre la importància de la neteja de dades.
  • Aprendre tècniques bàsiques de neteja de dades.
  • Transformar dades per adaptar-les a les necessitats de la visualització.
  • Utilitzar D3.js per manipular i transformar dades.

  1. Importància de la Neteja de Dades

La neteja de dades és el procés d'identificar i corregir (o eliminar) dades incorrectes, incompletes, mal formades o duplicades. Aquest procés és crucial perquè:

  • Millora la qualitat de les dades.
  • Assegura que les visualitzacions siguin precises i fiables.
  • Facilita l'anàlisi i la interpretació de les dades.

  1. Tècniques Bàsiques de Neteja de Dades

2.1. Identificació de Valors Nuls o Faltants

Els valors nuls o faltants poden distorsionar les visualitzacions. És important identificar-los i decidir com tractar-los (per exemple, omplir-los amb valors per defecte, eliminar les files afectades, etc.).

// Exemple de codi per identificar valors nuls en un conjunt de dades
const data = [
  { name: "A", value: 10 },
  { name: "B", value: null },
  { name: "C", value: 30 }
];

const cleanedData = data.filter(d => d.value !== null);
console.log(cleanedData); // [{ name: "A", value: 10 }, { name: "C", value: 30 }]

2.2. Eliminació de Duplicats

Els duplicats poden inflar les dades i donar una impressió errònia. És important eliminar-los per mantenir la integritat de les dades.

// Exemple de codi per eliminar duplicats
const data = [
  { name: "A", value: 10 },
  { name: "B", value: 20 },
  { name: "A", value: 10 }
];

const uniqueData = Array.from(new Set(data.map(d => JSON.stringify(d)))).map(d => JSON.parse(d));
console.log(uniqueData); // [{ name: "A", value: 10 }, { name: "B", value: 20 }]

2.3. Correcció de Valors Incorrectes

Els valors incorrectes poden ser deguts a errors de captura de dades. És important identificar aquests errors i corregir-los.

// Exemple de codi per corregir valors incorrectes
const data = [
  { name: "A", value: 10 },
  { name: "B", value: -20 }, // valor incorrecte
  { name: "C", value: 30 }
];

const correctedData = data.map(d => {
  if (d.value < 0) {
    d.value = Math.abs(d.value); // corregir valor negatiu
  }
  return d;
});
console.log(correctedData); // [{ name: "A", value: 10 }, { name: "B", value: 20 }, { name: "C", value: 30 }]

  1. Transformació de Dades

3.1. Normalització de Dades

La normalització és el procés d'ajustar les dades a una escala comuna, sovint entre 0 i 1. Això és útil per comparar dades de diferents escales.

// Exemple de codi per normalitzar dades
const data = [
  { name: "A", value: 10 },
  { name: "B", value: 20 },
  { name: "C", value: 30 }
];

const max = d3.max(data, d => d.value);
const min = d3.min(data, d => d.value);

const normalizedData = data.map(d => ({
  name: d.name,
  value: (d.value - min) / (max - min)
}));
console.log(normalizedData); // [{ name: "A", value: 0 }, { name: "B", value: 0.5 }, { name: "C", value: 1 }]

3.2. Agrupació de Dades

L'agrupació de dades és útil per resumir informació i fer-la més comprensible. Per exemple, podem agrupar dades per categories i calcular la mitjana de cada grup.

// Exemple de codi per agrupar dades
const data = [
  { category: "A", value: 10 },
  { category: "B", value: 20 },
  { category: "A", value: 30 },
  { category: "B", value: 40 }
];

const groupedData = d3.nest()
  .key(d => d.category)
  .rollup(v => d3.mean(v, d => d.value))
  .entries(data);

console.log(groupedData); // [{ key: "A", value: 20 }, { key: "B", value: 30 }]

Exercicis Pràctics

Exercici 1: Neteja de Dades

  1. Carrega un conjunt de dades amb valors nuls, duplicats i incorrectes.
  2. Identifica i elimina els valors nuls.
  3. Elimina els duplicats.
  4. Corregeix els valors incorrectes.

Exercici 2: Transformació de Dades

  1. Carrega un conjunt de dades amb valors en diferents escales.
  2. Normalitza les dades.
  3. Agrupa les dades per una categoria i calcula la mitjana de cada grup.

Solucions

Solució a l'Exercici 1

const data = [
  { name: "A", value: 10 },
  { name: "B", value: null },
  { name: "C", value: 30 },
  { name: "A", value: 10 },
  { name: "D", value: -20 }
];

// 1. Identificar i eliminar valors nuls
const nonNullData = data.filter(d => d.value !== null);

// 2. Eliminar duplicats
const uniqueData = Array.from(new Set(nonNullData.map(d => JSON.stringify(d)))).map(d => JSON.parse(d));

// 3. Corregir valors incorrectes
const cleanedData = uniqueData.map(d => {
  if (d.value < 0) {
    d.value = Math.abs(d.value);
  }
  return d;
});

console.log(cleanedData); // [{ name: "A", value: 10 }, { name: "C", value: 30 }, { name: "D", value: 20 }]

Solució a l'Exercici 2

const data = [
  { category: "A", value: 10 },
  { category: "B", value: 20 },
  { category: "A", value: 30 },
  { category: "B", value: 40 }
];

// 1. Normalitzar dades
const max = d3.max(data, d => d.value);
const min = d3.min(data, d => d.value);

const normalizedData = data.map(d => ({
  category: d.category,
  value: (d.value - min) / (max - min)
}));

// 2. Agrupar dades per categoria i calcular la mitjana
const groupedData = d3.nest()
  .key(d => d.category)
  .rollup(v => d3.mean(v, d => d.value))
  .entries(normalizedData);

console.log(groupedData); // [{ key: "A", value: 0.3333333333333333 }, { key: "B", value: 0.8333333333333334 }]

Conclusió

La neteja i transformació de dades són passos essencials per assegurar que les visualitzacions amb D3.js siguin precises i significatives. Hem après a identificar i corregir valors nuls, duplicats i incorrectes, així com a normalitzar i agrupar dades. Amb aquestes tècniques, estem preparats per treballar amb dades reals i crear visualitzacions impactants.

D3.js: De Principiant a Avançat

Mòdul 1: Introducció a D3.js

Mòdul 2: Treballant amb Seleccions

Mòdul 3: Dades i Escales

Mòdul 4: Creant Visualitzacions Bàsiques

Mòdul 5: Visualitzacions Avançades

Mòdul 6: Interactivitat i Animació

Mòdul 7: Treballant amb Dades Reals

Mòdul 8: Rendiment i Optimització

Mòdul 9: Millors Pràctiques i Tècniques Avançades

Mòdul 10: Projecte Final

© Copyright 2024. Tots els drets reservats