Kolomfiltering en aggregatie

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

Condities definiëren voor filtering

import tech.tablesaw.api.Table;
import tech.tablesaw.selection.Selection;
Table books = Table.read().csv("bestsellers.csv");
// Conditie voor boeken met > 70M verkoop
Selection highSales = books.intColumn("Sales_in_Millions").isGreaterThan(70);

// Conditie voor boeken in het Engels Selection english = books.stringColumn("Language").isEqualTo("English");
// Conditie voor boeken gepubliceerd na 1950 Selection recentlyPublished = books.intColumn("First_Published").isGreaterThan(1950);
// Vergelijkbaar: .isLessThan(), .isLessThanOrEqualTo(), .isGreaterThanOrEqualTo()
Data opschonen in Java

Filteren op basis van condities

// Filter met één conditie direct
books.where(books.intColumn("Sales_in_Millions").isGreaterThan(70));

// Filter met vooraf gedefinieerde Selection books.where(highSales);
// Meerdere condities combineren met .and() Table popular = books.where(highSales) // Sales > 70M .and(english) // Engelse taal .and(recentlyPublished); // Na 1950 .sortDescendingOn("Sales_in_Millions"); // Sorteren op Sales_in_Millions System.out.println("Moderne Engelstalige boeken met hoge omzet:\n"); System.out.println(modern.select("Books", "First_Published", "Total_Revenue"));
Data opschonen in Java

Filteren op basis van condities: output

Moderne Engelstalige boeken met hoge omzet:

| Book                                     | Sales_in_Millions | First_Published |
|------------------------------------------|-------------------|-----------------|
| Harry Potter and the Philosopher's Stone | 120               | 1997            |
| The Da Vinci Code                        | 80                | 2003            |
| Harry Potter and the Chamber of Secrets  | 77                | 1998            |
Data opschonen in Java

Samenvatten met gemiddelde

// Importeer functie voor gemiddelde
import static tech.tablesaw.aggregate.AggregateFunctions.mean;
Table overallMean = books.summarize("Sales_in_Millions", mean).apply();
System.out.println("\nAlgemeen gemiddelde verkoop: \n" + overallMean);
Algemeen gemiddelde verkoop:

| Mean [Sales_in_Millions]  |
|---------------------------|
|        73.03225806451614  |
Data opschonen in Java

Aggregatie per groep

// Bereken gemiddelde verkoop per taal (bijv. Engels, Frans, enz.)
Table salesByLanguage = 
        books.summarize("Sales_in_Millions", mean)  // Gemiddelde berekenen

.by("Language"); // Groeperen op taal // Toon de eerste 5 taalgroepen System.out.println("Gemiddelde verkoop per taal:\n"); System.out.println(salesByLanguage.first(5));
Data opschonen in Java

Aggregatie per groep: output

Gemiddelde verkoop per taal:

| Language   | Mean [Sales_in_Millions] |
|------------|--------------------------|
| English    | 69.96                    |
| French     | 200.0                    |
| Chinese    | 100.0                    |
| Portuguese | 65.0                     |
| Spanish    | 50.0                     |
Data opschonen in Java

Filteren en aggregatie combineren

import static tech.tablesaw.aggregate.AggregateFunctions.sum;
// Filter en sommeer verkoop per taal
Table bestsellersByLanguage = books
        // Selecteer boeken na 1950
        .where(books.intColumn("First_Published").isGreaterThan(1950))

// Bereken som verkoop .summarize("Sales_in_Millions", sum)
// Groepeer op taal .by("Language"); System.out.println("Moderne bestsellers (na 1950) per taal:\n"); System.out.println(bestsellersByLanguage);
Data opschonen in Java

Filteren en aggregatie combineren: output

Moderne bestsellers (na 1950) per taal:

| Language   | Sum [Sales_in_Millions] |
|------------|-------------------------|
| English    | 1071                    |
| Portuguese | 65                      |
| Spanish    | 50                      |
| Italian    | 50                      |
Data opschonen in Java

Alles samenbrengen

books.where(sales.isGreaterThan(150)); // Basisfilter met één conditie
books.where(highSales.and(english)); // Meerdere condities - combineer met .and()
// Basisaggregatie
books.summarize("Sales_in_Millions", mean)       // Gemiddelden berekenen
    .by("Language");                             // Groeperen op taal
// Gecombineerde bewerkingen
books.where(books.intColumn("First_Published").isGreaterThan(1950)) // Filter
    .summarize("Sales_in_Millions", mean) // Dan samenvatten
    .by("Language"); // Tot slot groeperen
Data opschonen in Java

Laten we oefenen!

Data opschonen in Java

Preparing Video For Download...