Sütun temizleme ve standartlaştırma

Java'da Veri Temizleme

Dennis Lee

Software Engineer

Kitap satışları veri kümesi

Kitaplar Yazarlar Dil İlk_Yayın Satış_Milyon Ortalama_Fiyat
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
Java'da Veri Temizleme

Veri türlerini inceleme

import tech.tablesaw.api.Table;
import tech.tablesaw.api.StringColumn;
import tech.tablesaw.api.DoubleColumn;
Table books = Table.read().csv("bestsellers.csv");

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

// Sütun adını ve türünü yazdır System.out.println(colName + ": " + books.column(colName).type()); }
Java'da Veri Temizleme

Veri türlerini inceleme: çıktılar

Books: STRING
Authors: STRING
Language: STRING
First_Published: INTEGER
Sales_in_Millions: INTEGER
Average_Price: DOUBLE
Java'da Veri Temizleme

Sayısal biçimleri dönüştürme

// Tablesaw bunu INTEGER olarak çıkardığı için IntColumn'u DoubleColumn'a dönüştürün
DoubleColumn sales = books.intColumn("Sales_in_Millions")
      .asDoubleColumn();

System.out.println("Dönüşüm sonrası sales sütununun veri türü: " + sales.type());
Dönüşüm sonrası sales sütununun veri türü: DOUBLE
// DoubleColumn'u IntColumn'a dönüştürmek de mümkündür
IntColumn salesAsInt = sales.asIntColumn();
Java'da Veri Temizleme

Sütunları çarpma

DoubleColumn averagePrice = books.doubleColumn("Average_Price");

// İki sütunu çarparak toplam geliri hesaplayın
DoubleColumn totalRevenue = sales.multiply(averagePrice)

.setName("Total_Revenue_Millions");
books.addColumns(totalRevenue); System.out.println("\nİki sütunu çarpma: Satış × Fiyat = Gelir"); System.out.println(books.selectColumns("Books", "Sales_in_Millions", "Average_Price", "Total_Revenue_Millions") .first(4).print());
Java'da Veri Temizleme

Sütunları çarpma: çıktılar

İki sütunu çarpma: Satış × Fiyat = Gelir

| Kitaplar                            | Satış_     | Ortalama_ | Toplam_Gelir_  |
|                                     | Milyon     | Fiyat     | Milyon         |
|-------------------------------------|------------|-----------|----------------|
| A Tale of Two Cities                | 200        | 12.99     | 2598           |
| The Little Prince (Le Petit Prince) | 200        | 15.50     | 3100           |
| Harry Potter and                    | 120        | 19.99     | 2398.80        |
|   the Philosopher's Stone           |            |           |                |
| And Then There Were None            | 100        | 14.95     | 1495           |
Java'da Veri Temizleme

Parantezleri eşlemek için regex

  • \\(.*\\) deseni parantezleri eşleştirir
  • Örnek eşleşmeler: "(Organic)", "(2 pack)", "(Large)"
  • Sonuç: "Apple (Organic)" → "Apple"
\\(     // Açılış parantezini eşleştir (\\ ile kaçırılmış)
.*      // Herhangi bir karakteri (.) sıfır veya daha çok (*) eşleştir
\\)     // Kapanış parantezini eşleştir (\\ ile kaçırılmış)
Java'da Veri Temizleme

Özel karakterleri işleme

// Başlıklardan parantez içi çevirileri kaldırın
StringColumn titlesNoParentheses = titles
        // Her başlık için parantezleri ve çevresindeki boşlukları kaldırın
        .map(t -> t.replaceAll("\\(.*\\)", "").trim())
        // Yeni sütun adını ayarlayın
        .setName("Parantezsiz Başlıklar");

System.out.println("Orijinal: " + titles.get(1)); // İlk öğeyi alın
System.out.println("Temizlenmiş: " + titlesNoParentheses.get(1));
Orijinal: The Little Prince (Le Petit Prince)
Temizlenmiş: The Little Prince
Java'da Veri Temizleme

Dize işlemlerini birleştirme

// Parantezleri kaldırma ve küçük harfe çevirme işlemlerini birleştirin
StringColumn titlesCombinedCleaning =
        titles.map(t -> t.replaceAll("\\(.*\\)", "") // Parantezleri kaldır

.trim() // Çevresel boşluğu kaldır
.toLowerCase()) // Küçük harfe çevir .setName("Clean_Titles_Combined"); // Sütun adını ayarla System.out.println("Orijinal başlık: " + titles.get(1)); System.out.println("Temizlik sonrası başlık: " + titlesCombinedCleaning.get(1));
Orijinal başlık: The Little Prince (Le Petit Prince)
Temizlik sonrası başlık: the little prince
Java'da Veri Temizleme

Hepsini bir araya getirme

books.column(colName).type(); // Sütun türünü al
books.intColumn("Sales_in_Millions").asDoubleColumn(); // Tür dönüştür
DoubleColumn totalRevenue = sales.multiply(averagePrice) // Sütunları çarp
    .setName("Total_Revenue_Millions"); // Yeni sütunu adlandır
titles.map(String::toLowerCase) // Küçük harfe çevir
    .setName("Lowercase_Titles"); // Yeni sütunu adlandır
titles.map(t -> t.replaceAll("\\(.*\\)", "").trim()) // Parantezleri kaldır
    .setName("Parantezsiz Başlıklar"); // Yeni sütunu adlandır
Java'da Veri Temizleme

Hadi pratik yapalım!

Java'da Veri Temizleme

Preparing Video For Download...