Pandas adalah library Python yang sangat powerful untuk manipulasi dan analisis data. Dalam proses data cleanup, Pandas menyediakan berbagai fungsi untuk :
- Menangani missing values.
- Menghapus duplikat.
- Mengubah tipe data.
- Filtering data.
- Normalisasi data.
Mengapa Pandas?
- Cepat dan efisien untuk dataset besar.
- Sintaksis yang mudah dipahami.
- Terintegrasi dengan library lain (NumPy, Matplotlib, Scikit-learn).
Persiapan Data
Sebelum memulai cleanup, kita perlu :
- Import library Pandas.
- Load dataset (dari CSV, Excel, SQL, dll).
Contoh :
import pandas as pd # Contoh dataset data = { 'Nama': ['Andi', 'Budi', 'Cici', None, 'Eva'], 'Usia': [21, 22, None, 24, 25], 'Nilai': [80, 85, 90, 95, None], 'Kota': ['Jakarta', 'Bandung', 'Jakarta', 'Surabaya', 'Jakarta'] } df = pd.DataFrame(data) print("Data Awal:") print(df)
Output :
Nama Usia Nilai Kota 0 Andi 21.0 80.0 Jakarta 1 Budi 22.0 85.0 Bandung 2 Cici NaN 90.0 Jakarta 3 None 24.0 95.0 Surabaya 4 Eva 25.0 NaN Jakarta
Menangani Missing Values
Missing values (NaN/None) dapat mengganggu analisis. Cara menanganinya :
a. Mengecek Missing Values
print("Jumlah Missing Values per Kolom:") print(df.isnull().sum())
Output:
Nama 1 Usia 1 Nilai 1 Kota 0
b. Menghapus Missing Values
# Hapus baris dengan missing values df_drop = df.dropna() print("Data setelah dropna():") print(df_drop)
Output :
Nama Usia Nilai Kota 0 Andi 21.0 80.0 Jakarta 1 Budi 22.0 85.0 Bandung
c. Mengisi Missing Values
# Isi dengan nilai rata-rata (untuk numerik) df['Usia'].fillna(df['Usia'].mean(), inplace=True) # Isi dengan modus (untuk kategorik) df['Nama'].fillna(df['Nama'].mode()[0], inplace=True) print("Data setelah fillna():") print(df)
Output :
Nama Usia Nilai Kota 0 Andi 21.0 80.0 Jakarta 1 Budi 22.0 85.0 Bandung 2 Cici 23.0 90.0 Jakarta 3 Andi 24.0 95.0 Surabaya 4 Eva 25.0 NaN Jakarta
Menghapus Duplikat
Data duplikat dapat menyebabkan bias.
a. Cek Duplikat
print("Jumlah Duplikat:", df.duplicated().sum())
b. Hapus Duplikat
df_deduplicated = df.drop_duplicates() print("Data setelah drop_duplicates():") print(df_deduplicated)
Mengubah Tipe Data
Tipe data yang salah dapat mempengaruhi analisis.
a. Cek Tipe Data
print("Tipe Data Awal:") print(df.dtypes)
Output :
Nama object Usia float64 Nilai float64 Kota object
b. Konversi Tipe Data
# Ubah 'Usia' ke integer df['Usia'] = df['Usia'].astype(int) # Ubah 'Nilai' ke integer (dengan handle missing values) df['Nilai'] = pd.to_numeric(df['Nilai'], errors='coerce').fillna(0).astype(int) print("Tipe Data Setelah Konversi:") print(df.dtypes)
Output :
Nama object Usia int32 Nilai int32 Kota object
Filtering Data
Memilih subset data berdasarkan kondisi tertentu.
a. Filter Sederhana
# Ambil data dengan Nilai > 85 df_filtered = df[df['Nilai'] > 85] print("Data dengan Nilai > 85:") print(df_filtered)
Output :
Nama Usia Nilai Kota 2 Cici 23 90 Jakarta 3 Andi 24 95 Surabaya
b. Query dengan Multiple Conditions
# Ambil data dari Jakarta dengan Usia < 25 df_complex_filter = df[(df['Kota'] == 'Jakarta') & (df['Usia'] < 25)] print("Data dari Jakarta dan Usia < 25:") print(df_complex_filter)
Normalisasi Data
Membuat data lebih konsisten untuk analisis.
a. Mengubah Teks ke Lowercase
df['Kota'] = df['Kota'].str.lower() print("Data setelah lowercase:") print(df)
b. Menghapus Whitespace
df['Nama'] = df['Nama'].str.strip()
GroupBy dan Aggregasi
Berguna untuk summarisasi data.
# Hitung rata-rata nilai per kota df_grouped = df.groupby('Kota')['Nilai'].mean() print("Rata-rata Nilai per Kota:") print(df_grouped)
Output :
Kota bandung 85 jakarta 85 surabaya 95
Export Data Bersih
Setelah cleanup, simpan data ke format yang diinginkan.
# Simpan ke CSV df.to_csv('data_clean.csv', index=False) # Simpan ke Excel df.to_excel('data_clean.xlsx', index=False)
Kesimpulan
Fungsi | Kegunaan | Contoh |
---|---|---|
dropna() |
Hapus missing values | df.dropna() |
fillna() |
Isi missing values | df.fillna(0) |
drop_duplicates() |
Hapus duplikat | df.drop_duplicates() |
astype() |
Ubah tipe data | df['Usia'].astype(int) |
groupby() |
Group data untuk aggregasi | df.groupby('Kota')['Nilai'].mean() |
to_csv() |
Simpan data ke CSV | df.to_csv('data_clean.csv') |
Tips :
- Selalu backup data sebelum cleanup.
- Gunakan
inplace=True
untuk modifikasi langsung pada DataFrame.
Latihan :
- Coba load dataset dari file CSV dan lakukan cleanup.
- Bandingkan hasil analisis sebelum/sesudah cleanup.