Avaliação da qualidade dos dados com Tablesaw

Limpeza de Dados em Java

Dennis Lee

Software Engineer

Conjunto de dados de vendas de livros

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
Limpeza de Dados em Java

Examinando os dados

import tech.tablesaw.api.Table;
import tech.tablesaw.api.DoubleColumn;
import tech.tablesaw.api.StringColumn;
// Carregar o CSV em uma tabela do Tablesaw
Table books = Table.read().csv("bestsellers.csv");

// Informações básicas: linhas, colunas e nomes das colunas
System.out.println("Qtd. de linhas: " + books.rowCount());
System.out.println("Qtd. de colunas: " + books.columnCount());
System.out.println("Nomes das colunas: " + books.columnNames());
Limpeza de Dados em Java

Examinando os dados: saídas

Qtd. de linhas: 290
Qtd. de colunas: 6
Nomes das colunas: [Books, Authors, Language, First_Published, Sales_in_millions]
Limpeza de Dados em Java

Verificando valores ausentes

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

// Obter a coluna pelo nome e contar valores ausentes (nulos) nessa coluna int missing = books.column(columnName).countMissing();
System.out.println(columnName + " valores ausentes: " + missing); }
Books valores ausentes: 0
Authors valores ausentes: 0
Language valores ausentes: 0
First_Published valores ausentes: 0
Sales_in_millions valores ausentes: 2
Average_Price valores ausentes: 0
Limpeza de Dados em Java

Analisando colunas categóricas

// countBy() cria uma nova tabela com valores únicos e suas frequências
Table languageCounts = books.countBy("Language");

System.out.println("Distribuição de idiomas:\n");

// Imprime a tabela formatada com cada idioma e sua contagem
System.out.println(languageCounts);
Limpeza de Dados em Java

Analisando colunas categóricas: saídas

Distribuição de idiomas:

| Idioma     | Contagem |
|------------|----------|
| English    | 210      |
| French     | 10       |
| Chinese    | 6        |
| Portuguese | 1        |
| Spanish    | 3        |
| German     | 6        |
| Italian    | 5        |
Limpeza de Dados em Java

Analisando colunas numéricas

// Obter a coluna numérica como DoubleColumn para operações estatísticas
DoubleColumn sales = books.doubleColumn("Sales_in_millions");

System.out.println("Estatísticas de vendas (milhões de cópias):\n"); // Menor valor na coluna System.out.println("Mín.: " + sales.min() + " milhão"); // Maior valor na coluna System.out.println("Máx.: " + sales.max() + " milhão");
// Média de todos os valores System.out.println("Média: " + sales.mean() + " milhão"); // Medida de dispersão (desvio padrão) System.out.println("Desv. padrão: " + sales.standardDeviation() + " milhão");
Limpeza de Dados em Java

Analisando colunas numéricas: saídas

Estatísticas de vendas (milhões de cópias):

Mín.: 10.0 milhão
Máx.: 600.0 milhão
Média: 49.996875 milhão
Desv. padrão: 64.6846320839116 milhão
Limpeza de Dados em Java

Juntando tudo

System.out.printf("Linhas: %d, Colunas: %s", books.rowCount(), books.columnCount());
for (String colName : books.columnNames()) // Para cada coluna
    System.out.println(books.column(colName).countMissing()); // Contar valores nulos
StringColumn language = books.stringColumn("Language"); // Obter coluna de texto
Table langCounts = books.countBy("Language"); // Contar categorias
// Calcular estatísticas numéricas
DoubleColumn sales = books.doubleColumn("Sales_in_Millions"); // Obter coluna numérica
System.out.printf("Média: %.1f milhão, Mín.: %.1f milhão, Máx.: %.1f milhão",
                  sales.mean(), sales.min(), sales.max());
Limpeza de Dados em Java

Juntando tudo: saídas

Linhas: 290, Colunas: 6
Books faltando valores: 0
Authors faltando valores: 0
| Idioma     | Contagem |
|------------|----------|
| English    | 210      |
| French     | 10       |
Média: 50.0 milhão, Mín.: 10.0 milhão, Máx.: 600.0 milhão
Limpeza de Dados em Java

Vamos praticar!

Limpeza de Dados em Java

Preparing Video For Download...