Datakwaliteit beoordelen met Tablesaw

Data opschonen in Java

Dennis Lee

Software Engineer

Dataset: boekverkopen

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
Data opschonen in Java

De data verkennen

import tech.tablesaw.api.Table;
import tech.tablesaw.api.DoubleColumn;
import tech.tablesaw.api.StringColumn;
// Laad CSV in een Tablesaw-tabel
Table books = Table.read().csv("bestsellers.csv");

// Basisinfo: aantal rijen, kolommen, kolomnamen
System.out.println("Aantal rijen: " + books.rowCount());
System.out.println("Aantal kolommen: " + books.columnCount());
System.out.println("Kolomnamen: " + books.columnNames());
Data opschonen in Java

De data verkennen: output

Aantal rijen: 290
Aantal kolommen: 6
Kolomnamen: [Books, Authors, Language, First_Published, Sales_in_millions]
Data opschonen in Java

Ontbrekende waarden controleren

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

// Haal kolom op en tel ontbrekende waarden (nulls) int missing = books.column(columnName).countMissing();
System.out.println(columnName + " ontbrekende waarden: " + missing); }
Books ontbrekende waarden: 0
Authors ontbrekende waarden: 0
Language ontbrekende waarden: 0
First_Published ontbrekende waarden: 0
Sales_in_millions ontbrekende waarden: 2
Average_Price ontbrekende waarden: 0
Data opschonen in Java

Categorische kolommen bekijken

// countBy() maakt een nieuwe tabel met unieke waarden en hun frequenties
Table languageCounts = books.countBy("Language");

System.out.println("Taalverdeling:\n");

// Print geformatteerde tabel met elke taal en het aantal
System.out.println(languageCounts);
Data opschonen in Java

Categorische kolommen bekijken: output

Taalverdeling:

| Taal       | Aantal |
|------------|--------|
| English    | 210    |
| French     | 10     |
| Chinese    | 6      |
| Portuguese | 1      |
| Spanish    | 3      |
| German     | 6      |
| Italian    | 5      |
Data opschonen in Java

Numerieke kolommen analyseren

// Haal numerieke kolom als DoubleColumn op voor statistiek
DoubleColumn sales = books.doubleColumn("Sales_in_millions");

System.out.println("Verkoopstatistieken (miljoen exemplaren):\n"); // Kleinste waarde System.out.println("Min. verkoop: " + sales.min() + " miljoen"); // Grootste waarde System.out.println("Max. verkoop: " + sales.max() + " miljoen");
// Gemiddelde System.out.println("Gem. verkoop: " + sales.mean() + " miljoen"); // Spreiding (standaarddeviatie) System.out.println("Standaarddev.: " + sales.standardDeviation() + " miljoen");
Data opschonen in Java

Numerieke kolommen analyseren: output

Verkoopstatistieken (miljoen exemplaren):

Min. verkoop: 10.0 miljoen
Max. verkoop: 600.0 miljoen
Gem. verkoop: 49.996875 miljoen
Standaarddev.: 64.6846320839116 miljoen
Data opschonen in Java

Alles samenbrengen

System.out.printf("Rijen: %d, Kolommen: %s", books.rowCount(), books.columnCount());
for (String colName : books.columnNames()) // Voor elke kolom
    System.out.println(books.column(colName).countMissing()); // Aantal null-waarden
StringColumn language = books.stringColumn("Language"); // Tekstkolom
Table langCounts = books.countBy("Language"); // Categorieën tellen
// Numerieke statistieken berekenen
DoubleColumn sales = books.doubleColumn("Sales_in_Millions"); // Numerieke kolom
System.out.printf("Gem.: %.1f miljoen, Min.: %.1f miljoen, Max.: %.1f miljoen",
                  sales.mean(), sales.min(), sales.max());
Data opschonen in Java

Alles samenbrengen: output

Rijen: 290, Kolommen: 6
Books ontbrekende waarden: 0
Authors ontbrekende waarden: 0
| Taal       | Aantal |
|------------|--------|
| English    | 210    |
| French     | 10     |
Gem.: 50.0 miljoen, Min.: 10.0 miljoen, Max.: 600.0 miljoen
Data opschonen in Java

Laten we oefenen!

Data opschonen in Java

Preparing Video For Download...