Eksplorasi Dan Penyiapan Dataset House Price Data 2.csv
Eksplorasi Dan Penyiapan Dataset House Price Data 2.csv
Dibuat oleh:
NPM/Nama:
6181901022/Dwi Lena Irawati
Tanggal:
12 September 2022
Jurusan Informatika
Universitas Katolik Parahyangan
I. Tujuan Eksperimen
Untuk menentukan prediksi harga rumah dari data yang telah disediakan dengan cara
melakukan eksplorasi data dan pembersihan data terlebih dahulu agar hasil yang dicapai lebih
akurat.
Id int64
Date object
Price float64
Bedrooms int64
Bathrooms float64
sqft_living int64
sqrt_lot int64
floors float64
waterfronts int64
view int64
condition int64
grade int64
sqft_above int64
sqft_basement int64
yr_built int64
yr_renovated int64
zipcode int64
lat float64
long float64
sqft_living15 int64
sqft_lot15 int64
Dari data diatas terdapat beberapa kesalahan, seperti bathrooms dan floors yang memiliki tipe
data float karena atribut bathrooms memiliki arti banyak kamar mandi yang ada di rumah dan
floors adalah banyak lantai pada rumah.
Untuk melakukan eksplorasi, melakukan pencarian distribusi nilai untuk setiap atribut dengan
menggunakan histogram. didapat hasil histogram dari setiap atribut sebagai berikut:
Dari histogram diatas dapat dilihat beberapa atribut yang memiliki distribusi mendekati normal.
4.1. Eksplorasi Nilai Tiap Kolom (Numerik)
Berikut ini hasil dari ekplorasi nilai dari setiap atribut seperti nilai rata-rata, nilai tengah dan nilai
tengah, nilai minimum, nilai maksimum, nilai 0, null, dan negatif.
Atribut 0 Null Nilai Nilai Modus Median Mean
Minimu Maksimu
m m
Pada tahapan penyiapan data, akan dilakukan pembersihan data. Pertama dilakukan penghapusan
atribut yang tidak akan digunakan sebagai atribut prediktor pada pembuatan model regresi. Atribut
yang diasumsikan bukan atribut prediktor adalah :
● Atribut date
● Atribut zipcode
Setelah dilakukan penghapusan atribut yang bukan atribut prediktor, akan dilakukan pembersihan dari
nilai yang tidak masuk akal pada atribut dengan cara melakukan pembulatan pada tipe data float atau
menghapus record seperti di bawah ini :
● Atribut price
Menghilangkan record dengan nilai price <=10
df2 = df2[(df2.price>10)]
setelah dilakukan pembersihan, dilakukan pengecekan kembali nilai minimal dan maksimal
dari atribut price. Hal ini dilakukan untuk memastikan tidak ada record yang salah.
Nilai min = 78000.0
Nilai max = 7700000.0
● Atribut bedroom
Menghilangkan record dengan nilai bedrooms <=0
df2 = df2[(df2.bedrooms>0)]
setelah dilakukan pembersihan, dilakukan pengecekan kembali nilai minimal dan maksimal
dari atribut bedroom. Hal ini dilakukan untuk memastikan tidak ada record yang salah.
Nilai min = 1
Nilai max = 33
● Atribut bathroom
Mengganti tipe data bathrooms dari float menjadi integer agar tidak ada record yang bernilai
pecahan.
data_types_dict = {'bathrooms': np.int64}
df2 = df2.astype(data_types_dict
● Atribut sqft_lot15
Menghilangkan record dengan nilai sqft_lot15 <=1
df2 = df2[(df2.sqft_lot15>0)]
setelah dilakukan pembersihan, dilakukan pengecekan kembali nilai minimal dan maksimal
dari atribut bathroom. Hal ini dilakukan untuk memastikan tidak ada record yang salah.
Nilai min = 651
Nilai max = 871200
● Atribut Floors
Mengganti tipe data floors dari float menjadi integer agar tidak ada record yang bernilai
pecahan.
data_types_dict = {'floors': np.int64}
df2 = df2.astype(data_types_dict)
setelah dilakukan pembersihan, dilakukan pengecekan kembali nilai minimal dan maksimal
dari atribut bathroom. Hal ini dilakukan untuk memastikan tidak ada record yang salah.
Nilai min = 1
Nilai max = 3
Setelah dilakukan pembersihan didapati hasil akhir didapati jumlah atribut sebesar 19 atribut dan
jumlah record sebesar 21523 record. Berikut ini histogram dari atribut yang telah dilakukan
pembersihan:
4.3. Eksplorasi Hubungan Nilai-nilai Kolom dengan Kolom price
Pada tahapan ini, akan dilakukan eksplorasi data hubungan dari 2 nilai atribut dengan menggunakan
visualisasi seperti scatter plot. Dari eksperimen 4.2, akan dipilih atribut yang berpotensi sebagai
atribut prediktor penentuan harga rumah.
Berikut atribut yang berpotensi untuk menjadi atribut prediktor harga rumah berdasarkan scatter plot
antara lain :
● Atribut sqft_living
● Atribut sqft_above
● Atribut sqft_basement
● Atribut sqft_living
Berdasarkan scatter plot dapat disimpulkan atribut yang berpotensi menjadi atribut prediktor adalah
atribut Atribut sqft_living, Atribut sqft_above, Atribut sqft_basement, Atribut sqft_living karena
dapat dilihat pada scatter plot datanya mengalami kenaikan sehingga dapat disimpulkan atribut
sqft_living, Atribut sqft_above, Atribut sqft_basement, Atribut sqft_living memiliki hubungan dengan
atribut price.
V. Kesimpulan
Berdasarkan scatter plot pada 4.3 dapat disimpulkan bahwa terdapat beberapa atribut yang memiliki
hubungan positif yaitu jika sumbu x membesar maka sumbu y juga akan membesar. Meskipun
demikian belum dapat disimpulkan bahwa nilai pada atribut prediktor yang menentukan harga rumah.
Dari tahapan scatter plot harus dianalisa lebih jauh dengan cara menguji korelasi untuk mengetahui
hubungan antar atribut prediktor dengan atribut harga. Jika nilai dari korelasi tersebut bernilai positif
dan mendekati 1, maka atribut price dan atribut prediktor memiliki hubungan searah, begitu pula
sebaliknya, jika nilai korelasi tersebut bernilai negatif dan mendekati 1, maka atribut price dan atribut
prediktor memiliki hubungan namun tidak searah.
Lampiran
import pandas as pd
from google.colab import files
upload=files.upload()
df = pd.read_csv('house_price_data_2.csv')
print(df.dtypes)
print(df.shape)
# ringkasan data
df.describe()
#Histogram 'price'
count, bin_edges = np.histogram(df['price'])
df['price'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk price')
plt.ylabel('Frekuensi')
plt.xlabel('price')
plt.show()
#cleaning data
import matplotlib.pyplot as plt
import pylab as pl
import numpy as np
from sklearn.tree import DecisionTreeClassifier
df2
=df[['id','price','bedrooms','bathrooms','sqft_living','sqft_lot','floors','w
aterfront','view','condition','grade','sqft_above','sqft_basement','yr_built'
,'yr_renovated','lat','long','sqft_living15','sqft_lot15
#price
df2 = df2[(df2.price>10)]
print(df2.price.min())
print(df2.price.max())
count, bin_edges = np.histogram(df['price'])
df2['price'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk price')
plt.ylabel('Frekuensi')
plt.xlabel('price')
plt.show()
#bathrooms
minn=df.bathrooms.min()
df2 = df2[(df2.bathrooms>0)]
print(df2.bathrooms.min())
print(df2.bathrooms.max())
data_types_dict = {'bathrooms': np.int64}
df2 = df2.astype(data_types_dict)
df2.bathrooms
count, bin_edges = np.histogram(df['bathrooms'])
df2['bathrooms'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk bathrooms')
plt.ylabel('Frekuensi')
plt.xlabel('bathrooms')
plt.show()
#bedrooms
minn=df.bedrooms.min()
df2 = df2[(df2.bedrooms>0)]
print(df2.bedrooms.min())
print(df2.bedrooms.max())
count, bin_edges = np.histogram(df['bedrooms'])
df2['bedrooms'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk bedrooms')
plt.ylabel('Frekuensi')
plt.xlabel('bedrooms')
plt.show()
#sqft_lot15
minn=df.sqft_lot15.min()
df2 = df2[(df2.sqft_lot15>0)]
print(df2.sqft_lot15.min())
print(df2.sqft_lot15.max())
count, bin_edges = np.histogram(df['sqft_lot15'])
df2['sqft_lot15'].plot(kind = 'hist', xticks = bin_edges)
plt.title('Histogram untuk sqft_lot15')
plt.ylabel('Frekuensi')
plt.xlabel('sqft_lot15')
plt.show()
#floors
data_types_dict = {'floors': np.int64}
df2 = df2.astype(data_types_dict)
print(df2.floors.min())
print(df2.floors.max())
df2.floors
cnt = df.count
cnt2=df2.count
print(cnt)
print(cnt2)