Limpeza de Dados em Java
Dennis Lee
Software Engineer
| 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 |
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());
Qtd. de linhas: 290
Qtd. de colunas: 6
Nomes das colunas: [Books, Authors, Language, First_Published, Sales_in_millions]
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
// 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);
Distribuição de idiomas:
| Idioma | Contagem |
|------------|----------|
| English | 210 |
| French | 10 |
| Chinese | 6 |
| Portuguese | 1 |
| Spanish | 3 |
| German | 6 |
| Italian | 5 |
// 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");
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
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());
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