Spalten filtern und aggregieren

Datenbereinigung in Java

Dennis Lee

Software Engineer

Datensatz: Buchverkäufe

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
Datenbereinigung in Java

Bedingungen zum Filtern definieren

import tech.tablesaw.api.Table;
import tech.tablesaw.selection.Selection;
Table books = Table.read().csv("bestsellers.csv");
// Bedingung: Bücher mit > 70 Mio. Verkäufen
Selection highSales = books.intColumn("Sales_in_Millions").isGreaterThan(70);

// Bedingung: Bücher auf Englisch Selection english = books.stringColumn("Language").isEqualTo("English");
// Bedingung: nach 1950 veröffentlicht Selection recentlyPublished = books.intColumn("First_Published").isGreaterThan(1950);
// Ähnlich: .isLessThan(), .isLessThanOrEqualTo(), .isGreaterThanOrEqualTo()
Datenbereinigung in Java

Nach Bedingungen filtern

// Mit einer einzelnen Bedingung direkt filtern
books.where(books.intColumn("Sales_in_Millions").isGreaterThan(70));

// Mit vordefinierter Selection filtern books.where(highSales);
// Mehrere Bedingungen mit .and() kombinieren Table popular = books.where(highSales) // Verkäufe > 70 Mio. .and(english) // Sprache Englisch .and(recentlyPublished); // Nach 1950 .sortDescendingOn("Sales_in_Millions"); // Nach Sales_in_Millions sortieren System.out.println("Moderne umsatzstarke englische Bücher:\n"); System.out.println(modern.select("Books", "First_Published", "Total_Revenue"));
Datenbereinigung in Java

Nach Bedingungen filtern: Ausgaben

Moderne umsatzstarke englische Bücher:

| 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            |
Datenbereinigung in Java

Nach Mittelwert zusammenfassen

// Mittelwertfunktion importieren
import static tech.tablesaw.aggregate.AggregateFunctions.mean;
Table overallMean = books.summarize("Sales_in_Millions", mean).apply();
System.out.println("\nDurchschnittliche Gesamtverkäufe: \n" + overallMean);
Durchschnittliche Gesamtverkäufe:

| Mean [Sales_in_Millions]  |
|---------------------------|
|        73.03225806451614  |
Datenbereinigung in Java

Nach Gruppen aggregieren

// Durchschnittsverkäufe je Sprache berechnen (z. B. Englisch, Französisch)
Table salesByLanguage = 
        books.summarize("Sales_in_Millions", mean)  // Mittelwerte berechnen

.by("Language"); // Nach Sprache gruppieren // Erste 5 Sprachgruppen anzeigen System.out.println("Durchschnittliche Verkäufe nach Sprache:\n"); System.out.println(salesByLanguage.first(5));
Datenbereinigung in Java

Nach Gruppen aggregieren: Ausgaben

Durchschnittliche Verkäufe nach Sprache:

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

Filtern und Aggregation kombinieren

import static tech.tablesaw.aggregate.AggregateFunctions.sum;
// Filtern und Verkäufe nach Sprache zusammenfassen
Table bestsellersByLanguage = books
        // Bücher nach 1950 auswählen
        .where(books.intColumn("First_Published").isGreaterThan(1950))

// Verkäufe summieren .summarize("Sales_in_Millions", sum)
// Ergebnisse nach Sprache gruppieren .by("Language"); System.out.println("Moderne Bestseller (nach 1950) nach Sprache:\n"); System.out.println(bestsellersByLanguage);
Datenbereinigung in Java

Filtern und Aggregation kombinieren: Ausgaben

Moderne Bestseller (nach 1950) nach Sprache:

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

Alles zusammenführen

books.where(sales.isGreaterThan(150)); // Einfaches Filtern mit einer Bedingung
books.where(highSales.and(english)); // Mehrere Bedingungen mit .and() kombinieren
// Einfache Aggregation
books.summarize("Sales_in_Millions", mean)       // Mittelwerte berechnen
    .by("Language");                             // Nach Sprache gruppieren
// Kombinierte Operationen
books.where(books.intColumn("First_Published").isGreaterThan(1950)) // Filtern
    .summarize("Sales_in_Millions", mean) // Dann zusammenfassen
    .by("Language"); // Schließlich gruppieren
Datenbereinigung in Java

Lass uns üben!

Datenbereinigung in Java

Preparing Video For Download...