data cleaning menggunakan python

Data Cleaning Menggunakan Python

Data cleaning adalah salah satu area dalam siklus hidup Ilmu Data yang bahkan tidak harus dilakukan oleh analis data. Tetap saja, ilmuwan data dan tugas harian mereka adalah membersihkan data sehingga algoritma pembelajaran mesin memiliki data yang cukup baik untuk dimasukkan. Oleh karena itu kita perlu memiliki semacam template untuk membersihkan dataset.

Pada artikel ini, kita akan mempelajari cara membersihkan dataset, yaitu beberapa langkah wajib yang harus diketahui sebelum memulai fase persiapan data proyek sains data. Dengan cara ini, para pemula yang telah memulai perjalanannya akan memahami langkah-langkah penting dalam membersihkan/menyiapkan kumpulan data untuk berbagai proses seperti rekayasa fitur dan pengembangan model pembelajaran mesin.

Singkatnya, kita akan mencoba membuat template untuk data cleaning menggunakan Python dan library terkenalnya yaitu Numpy dan Pandas.

Hal pertama yang harus kita lakukan sebelum benar-benar memulai data cleaning adalah – Ajukan Pertanyaan kepada diri kita sendiri, yaitu wawasan apa yang ingin Anda ambil dari analisis Anda? apa yang perlu diperbaiki berdasarkan kebutuhan bisnis? Demikian pula, kami telah menyusun beberapa tugas utama untuk kami (terutama untuk contoh ini):

  • Bagaimana dataset menangani nilai yang tidak valid?
  • Apa yang ingin kita lakukan dengan nilai nol?
  • Apakah kita ingin meringkas, mengelompokkan, atau memfilter data?

Import Library

Pertama, kami akan mengimpor semua library yang diperlukan untuk membangun template.

import pandas as pd
import numpy as np

Pandas dan Numpy adalah pustaka yang paling direkomendasikan dan andal dalam menangani data terstruktur atau data tabular

Pandas: Pandas ditandai sebagai perpustakaan manipulasi data oleh setiap analis data (baik yang berpengalaman maupun yang baru) karena diperkaya dengan fungsionalitas vital dan lebih dari segalanya untuk menangani data tabular.

Numpy: Numpy terutama digunakan untuk bekerja dengan array dan perhitungan matematis kompleks dengan menyediakan beberapa fungsi berguna dalam aljabar linier, transformasi Fourier, dan matriks.

Load Dataset

Disini kita akan menggunakan dataset diabetes yang dapat di download melalui kaggle. Setelah itu, tempatkan dataset tersebut dalam satu folder dengan file python kita tadi. Selanjutnya, kita akan load dataset tersebut menggunakan pandas.

df = pd.read_csv("diabetes.csv")
df.info()

Pertama kita mulai dengan membaca dataset (ini adalah dataset Diabetes yang terkenal dari repositori pembelajaran mesin UCI) menggunakan fungsi read.csv(). Kemudian untuk intervensi lebih lanjut menggunakan metode info() , yang memberi kita wawasan berikut:

  • Apakah dataset kami memiliki nilai nol? Jawabannya adalah tidak! seperti yang kita lihat 768 nilai bukan nol.
  • Tipe data nyata terdeteksi untuk setiap kolom untuk fungsi BMI dan Pedigree yang merupakan pelampung. Selebihnya, itu adalah bilangan bulat.
df.head()

Tahapan Data Cleaning

Jadi sepertinya mereka menggunakan nilai 0 di mana mereka tidak memiliki data. Saya tidak berpikir mereka menggunakan NaN sama sekali, tetapi jika ya kita bisa membuang baris itu (menjatuhkan a) atau mengisinya ke beberapa nilai (file). Karena mereka sudah menggunakan 0, sebaiknya lakukan ini untuk berjaga-jaga.

df = df.fillna(0)

Jadi sekarang kita tahu ada nilai NaN. Kami juga bisa saja, Anda tahu, memeriksa NaN, tetapi sekarang saya mencoba menunjukkan fungsi yang dapat Anda gunakan.

Jadi, apa yang harus dilakukan dengan nilai nol ini? Kadang-kadang, kita bisa mengisinya dengan sesuatu yang masuk akal, tapi itu biasanya hanya membuat data menjadi bias. Jadi kebanyakan, kami akan mengabaikannya. Jadi kami ingin bertanya bagaimana kami ingin menggunakan data. Apakah kita akan menggunakan SkinThickness? Apakah kita peduli jika ada outlier non-fisik?

Jika kita terutama memperhatikan Glukosa, BMI, dan Usia, kita dapat menyingkirkan banyak masalah ini tetapi hanya melihat kolom tersebut.

df2 = df[["Glucose", "BMI", "Age", "Outcome"]]
df2.head()

Di sini, kami telah mengambil kolom di mana kami lebih tertarik untuk melakukan analisis kami, dan ini bisa menjadi langkah luas dan penting dalam proses pembersihan data apa pun karena kami tidak memerlukan semua kolom di tangan untuk ditangani. Oleh karena itu memilih kumpulan data yang tepat sangat penting.

Dapat diperhatikan bahwa Kami memilih kolom Glukosa, BMI, Usia, dan Hasil, di mana yang terakhir adalah target, dan sisanya adalah fitur. Mereka diekstraksi menggunakan multi-pengindeksan.

df2.describe()

Tapi sekarang, mari kita singkirkan angka nol yang tersesat. Yang ingin kami lakukan adalah menemukan baris dengan angka nol berapa pun dan menghapus baris itu. Atau dalam hal menerapkan topeng, temukan baris yang memiliki nol (Benar), dan balikkan itu (ke Salah) sehingga ketika kita menerapkan topeng menggunakan loc, entri Palsu akan dihapus.

df3 = df2.loc[~(df2[df2.columns[:-1]] == 0).any(axis=1)]
df3.describe()
df3.info()

Bagus, jadi kami telah memilih data yang kami minati dan memastikannya tidak memiliki nilai seperti null. Kami akan melanjutkan untuk memeriksa hal-hal yang terlihat waras dengan beberapa plot di bagian selanjutnya. Satu hal terakhir yang bisa kita lakukan adalah mengelompokkan data berdasarkan hasilnya. Mungkin membuatnya lebih mudah untuk mencari pola dalam diagnosis.

Kita dapat melakukannya dengan membagi DataFrame menjadi dua (satu untuk ya dan satu untuk tidak), atau jika kita menginginkan statistik ringkasan, kita dapat menggunakan fungsi groupBy :

df3.groupby("Outcome").mean()

Hal ini dapat memberi tahu kita bahwa, secara umum, semakin tinggi kadar glukosa Anda, semakin Anda kelebihan berat badan, dan semakin tua usia Anda, semakin besar peluang Anda untuk didiagnosis menderita diabetes. Yang, mungkin, tidak terlalu mengejutkan.

Kita dapat melakukan hal-hal lain menggunakan grup dengan pernyataan, seperti:

df3.groupby("Outcome").agg({"Glucose": "mean", "BMI": "median", "Age": "sum"})

Ada beberapa cara menggunakan fungsi GroupBy. Ini adalah cara kedua di mana kita dapat menggunakan fungsi AGG untuk membantu kita menggunakan beberapa metode tendensi sentral seperti rata-rata, median, jumlah, dan sebagainya.

Hal yang sama terlihat pada output, dimana Glukosa, BMI, dan usia dikelompokkan berdasarkan ketiga mean, median, dan sum.

df3.groupby("Outcome").agg(["mean", "median"])

Kita juga dapat melihat lebih dari satu metode statistik menggunakan .agg([“method1”, “method2″,…”methods”). Kita juga dapat membagi kumpulan data menjadi hasil positif dan negatif.

positive = df3.loc[df3["Outcome"] == 1]
negative = df3.loc[df3["Outcome"] == 0]
print(positive.shape, negative.shape)

Untuk mengetahui apakah dataset kita seimbang atau tidak, kita perlu melihat berapa banyak hasil positif dan berapa banyak negatifnya. Dari output di atas, kita dapat menyimpulkan bahwa dataset tidak seimbang karena kasus negatif > kasus positif.

Kita belum akan menggunakan pemisahan ini, jadi mari kita simpan dataset yang sudah dibersihkan dan disiapkan, df3, ke file, sehingga kode analisis kita dapat memuatnya di masa mendatang tanpa harus menyalin-tempel kode persiapan data ke notebook mendatang.

df3.to_csv("clean_diabetes.csv", index=False)

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top