Evaluación de calidad de datos con Tablesaw

Limpieza de datos en Java

Dennis Lee

Software Engineer

Conjunto de datos de ventas de libros

Books Authors Language First_Published Sales_in_Millions Average_Price
A Tale of Two Cities Charles Dickens English 1859 200.0 12.99
The Little Prince (Le Petit Prince) Antoine de Saint-Exupéry French 1943 200.0 15.50
Harry Potter and the Philosopher's Stone J. K. Rowling English 1997 120.0 19.99
And Then There Were None Agatha Christie English 1939 100.0 14.95
Limpieza de datos en Java

Examinar los datos

import tech.tablesaw.api.Table;
import tech.tablesaw.api.DoubleColumn;
import tech.tablesaw.api.StringColumn;
// Cargar el CSV en una tabla de Tablesaw
Table books = Table.read().csv("bestsellers.csv");

// Info básica: nº de filas, nº de columnas, nombres de columnas
System.out.println("N.º de filas: " + books.rowCount());
System.out.println("N.º de columnas: " + books.columnCount());
System.out.println("Nombres de columnas: " + books.columnNames());
Limpieza de datos en Java

Examinar los datos: resultados

N.º de filas: 290
N.º de columnas: 6
Nombres de columnas: [Books, Authors, Language, First_Published, Sales_in_millions]
Limpieza de datos en Java

Comprobar valores perdidos

for (String columnName : books.columnNames()) {

// Obtener la columna por nombre y contar valores perdidos (nulos) int missing = books.column(columnName).countMissing();
System.out.println(columnName + " valores perdidos: " + missing); }
Books valores perdidos: 0
Authors valores perdidos: 0
Language valores perdidos: 0
First_Published valores perdidos: 0
Sales_in_millions valores perdidos: 2
Average_Price valores perdidos: 0
Limpieza de datos en Java

Examinar columnas categóricas

// countBy() crea una nueva tabla con valores únicos y sus frecuencias
Table languageCounts = books.countBy("Language");

System.out.println("Distribución de idiomas:\n");

// Imprime una tabla formateada con cada idioma y su recuento
System.out.println(languageCounts);
Limpieza de datos en Java

Examinar columnas categóricas: resultados

Distribución de idiomas:

| Idioma     | Recuento |
|------------|----------|
| English    | 210      |
| French     | 10       |
| Chinese    | 6        |
| Portuguese | 1        |
| Spanish    | 3        |
| German     | 6        |
| Italian    | 5        |
Limpieza de datos en Java

Analizar columnas numéricas

// Obtener la columna numérica como DoubleColumn para operaciones estadísticas
DoubleColumn sales = books.doubleColumn("Sales_in_millions");

System.out.println("Estadísticas de ventas (millones de copias):\n"); // Valor mínimo de la columna System.out.println("Ventas mín.: " + sales.min() + " millones"); // Valor máximo de la columna System.out.println("Ventas máx.: " + sales.max() + " millones");
// Media de todos los valores System.out.println("Ventas media: " + sales.mean() + " millones"); // Medida de dispersión (desviación estándar) System.out.println("Desv. estándar: " + sales.standardDeviation() + " millones");
Limpieza de datos en Java

Analizar columnas numéricas: resultados

Estadísticas de ventas (millones de copias):

Ventas mín.: 10.0 millones
Ventas máx.: 600.0 millones
Ventas media: 49.996875 millones
Desv. estándar: 64.6846320839116 millones
Limpieza de datos en Java

Todo junto

System.out.printf("Filas: %d, Columnas: %s", books.rowCount(), books.columnCount());
for (String colName : books.columnNames()) // Para cada columna
    System.out.println(books.column(colName).countMissing()); // Contar nulos
StringColumn language = books.stringColumn("Language"); // Obtener columna de texto
Table langCounts = books.countBy("Language"); // Contar categorías
// Calcular estadísticas numéricas
DoubleColumn sales = books.doubleColumn("Sales_in_Millions"); // Obtener columna numérica
System.out.printf("Media: %.1f millones, Mín.: %.1f millones, Máx.: %.1f millones",
                  sales.mean(), sales.min(), sales.max());
Limpieza de datos en Java

Todo junto: resultados

Filas: 290, Columnas: 6
Books valores perdidos: 0
Authors valores perdidos: 0
| Language   | Count |
|------------|-------|
| English    | 210   |
| French     | 10    |
Media: 50.0 millones, Mín.: 10.0 millones, Máx.: 600.0 millones
Limpieza de datos en Java

¡Vamos a practicar!

Limpieza de datos en Java

Preparing Video For Download...