top of page
Gambar penulisCornellius Yudha Wijaya

Library Python Terbaik untuk Data Cleaning

Data cleaning adalah kegiatan yang harus dilakukan oleh setiap data expert karena kita perlu memastikan data bebas dari kesalahan, konsisten, dan dapat digunakan untuk analisis. Tanpa langkah ini, hasil analisis mungkin akan buruk. Namun, data cleaning sering memakan waktu lama dan bisa repetitif. Selain itu, terkadang kita melewatkan sebuah kesalahan yang seharusnya kita sadari.


Itulah mengapa kita bisa mengandalkan paket Python yang dirancang untuk data cleaning. Paket-paket ini dirancang untuk meningkatkan pengalaman data cleaning dan memperpendek waktu proses data cleaning. Apa saja paket-paket ini? Mari kita bahas.



PyJanitor

Pandas menyediakan banyak fungsi data cleaning, seperti fillna dan dropna, tetapi fungsi-fungsi tersebut masih bisa ditingkatkan. PyJanitor adalah paket Python yang menyediakan API data cleaning dalam API Pandas tanpa menggantikannya. Paket ini menyediakan berbagai metode termasuk:

  • Cleaning Nama Kolom,

  • Mengidentifikasi Duplicate Values,

  • Data Factorization,

  • Data Encoding,

dan masih banyak lagi. Namun, yang istimewa dari PyJanitor adalah API-nya dapat dijalankan melalui metode chaining. Mari kita uji dengan contoh data. Untuk contoh ini, saya akan menggunakan Titanic Training data dari Kaggle.


Untuk memulai, mari kita instal paket PyJanitor.

pip install pyjanitor

Lalu kita akan memuat dataset Titanic.

import pandas as pd
df = pd.read_csv('train.csv')
df.head()
Library Python Terbaik untuk Data Cleaning
import janitor

df.factorize_columns(column_names=["Sex"]).also(
    lambda df: print(f"DataFrame shape after factorize is: {df.shape}")
).bin_numeric(from_column_name="Age", to_column_name="Age_binned").also(
    lambda df: print(f"DataFrame shape after binning is: {df.shape}")
).clean_names()
Library Python Terbaik untuk Data Cleaning

Kita mengubah kerangka data awal dengan metode chaining. Jadi, apa yang terjadi dengan kode di atas? Mari saya jelaskan.

  • Pertama, kita mengubah kolom Sex menjadi numerik dengan fungsi factorize,

  • Dengan fungsi also, kita melakukan print shape setelah faktorisasi,

  • Selanjutnya, kita mengelompokkan usia menggunakan fungsi bin_numeric,

  • Fungsi also sama seperti sebelumnya,

  • Terakhir, kita membersihkan nama kolom dengan mengubahnya menjadi lowercase, lalu mengganti semua spasi dengan garis bawah menggunakan clean_names.

Semua langkah-langkah di atas dapat dilakukan dengan metode chaining tunggal yang langsung dilakukan dalam kerangka data Pandas. Anda masih bisa melakukan lebih banyak lagi dengan paket PyJanitor, jadi saya sarankan Anda meninjau dokumentasinya.

Feature-engine

Feature-Engine adalah paket Python yang dirancang untuk feature engineering dan feature selection yang mempertahankan metode API scikit-learn, seperti fit dan transform. Paket ini dirancang untuk menyediakan transformer data yang terintegrasi dalam machine learning pipeline.


Paket ini menyediakan berbagai data-cleaning transformers, diantaranya:

  • Data Imputation,

  • Categorical Encoding,

  • Outlier Removal,

  • Variable Selection,

dan masih banyak fungsi lainnya. Mari coba paket ini dengan menginstalnya terlebih dahulu.

pip install feature-engine

Penggunaan Feature-Engine cukup mudah; Anda hanya perlu mengimpornya dan melatih transformernya, mirip dengan API scikit-learn. Sebagai contoh, saya menggunakan Imputer untuk mengisi missing data pada kolom Age dengan nilai Median.

from feature_engine.imputation import MeanMedianImputer

# Atur imputer
median_imputer = MeanMedianImputer(imputation_method='median', variables=['Age'])
# Terapkan imputer
median_imputer.fit(df)

median_imputer.transform(df)

Kode di atas akan mengisi kolom Age pada data dengan nilai median. Ada banyak transformer yang bisa Anda coba. Cobalah temukan yang sesuai dengan pipeline data Anda di dokumentasinya.



Cleanlab

Cleanlab adalah paket Python open-source untuk membersihkan masalah apa pun pada label dataset machine learning. Ini dirancang untuk membuat training machine learning dengan label noisy menjadi lebih kuat dan memberikan output yang andal. Model apa pun dengan output probabilistik dapat dilatih bersama paket Cleanlab.


Mari coba paket ini dengan contoh kode. Pertama, kita perlu menginstal Cleanlab.

pip install cleanlab

Karena Cleanlab bekerja untuk membersihkan masalah label, mari kita persiapkan dataset untuk machine learning training.

# Pilih fitur
df = df[["Survived", "Pclass", "SibSp", "Parch"]]


# Bagi dataset
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    df.drop("Survived", axis=1), df["Survived"], random_state=42
)

Setelah dataset siap, kita akan mencoba memasang dataset dengan model classifier. Mari lihat metrik prediksi tanpa membersihkan labelnya.

#Fit model
from sklearn.linear_model import LogisticRegression

model = LogisticRegression(random_state = 42)
model.fit(X_train, y_train)
preds = model.predict(X_test)

#Cetak hasil metrics
from sklearn.metrics import classification_report

print(classification_report(y_test, preds))
Library Python Terbaik untuk Data Cleaning

Ini adalah hasil yang bagus, tetapi mari kita lihat apakah kita bisa meningkatkan hasilnya setelah membersihkan labelnya. Mari coba lakukan dengan kode berikut.

from cleanlab.classification import CleanLearning

#inisiasi model dengan CleanLearning
cl = CleanLearning(model, seed=42)

# Fit model
cl.fit(X_train, y_train)

# Periksa kualitas label
cl.get_label_issues()
Library Python Terbaik untuk Data Cleaning

Kita bisa melihat dari hasil di atas bahwa beberapa label memiliki masalah karena kesalahan prediksi. Dengan membersihkan label, mari kita lihat hasil metrik model.

clean_preds = cl.predict(X_test)
print(classification_report(y_test, clean_preds))
Library Python Terbaik untuk Data Cleaning

Kita bisa melihat ada peningkatan pada hasilnya dibandingkan model sebelumnya tanpa pembersihan label. Anda masih bisa melakukan banyak hal dengan Cleanlab; saya sarankan Anda mengunjungi dokumentasinya untuk belajar lebih lanjut.


Kesimpulan

Data cleaning adalah langkah yang harus dilakukan dalam proses analisis data apa pun. Namun, sering kali memakan banyak waktu untuk membersihkan semuanya dengan benar. Untungnya, ada paket Python yang dikembangkan untuk membantu kita membersihkan data dengan benar. Dalam artikel ini, saya memperkenalkan tiga paket untuk membantu membersihkan data: PyJanitor, Feature-Engine, dan Cleanlab.



14 tampilan0 komentar

Comentários


bottom of page