Case Studi: Data Profiling
8:23 PM
Kamu bisa memprosesnya dengan cara berikut:
- Import dataset csv ke variable bernama uncleaned_raw
- Inspeksi dataframe uncleaned_raw
- Check kolom yang mengandung missing value, jika ada, kolom apakah itu dan berapa persen missing value pada kolom tersebut?
- Mengisi missing value tersebut dengan mean dari kolom tersebut!
Setelah membaca email tersebut, aku pun memulai kode programnya di code editor.
# Baca dataset uncleaned_raw.csv
uncleaned_raw = pd.read_csv('https://dqlab-dataset.s3-ap-southeast-1.amazonaws.com/uncleaned_raw.csv')
#inspeksi dataframe uncleaned_raw
print('Lima data teratas:')
print(uncleaned_raw.head())
#Check kolom yang mengandung missing value
print('\nKolom dengan missing value:')
print(uncleaned_raw.isnull().any())
#Persentase missing value
length_qty = len(uncleaned_raw['Quantity'])
count_qty = uncleaned_raw['Quantity'].count()
#mengurangi length dengan count
number_of_missing_values_qty = length_qty - count_qty
#mengubah ke bentuk float
float_of_missing_values_qty = float(number_of_missing_values_qty / length_qty)
#mengubah ke dalam bentuk persen
pct_of_missing_values_qty = '{0:.1f}%'.format(float_of_missing_values_qty*100)
#print hasil percent dari missing value
print('Persentase missing value kolom Quantity:', pct_of_missing_values_qty)
#Mengisi missing value tersebut dengan mean dari kolom tersebut
uncleaned_raw['Quantity'] = uncleaned_raw['Quantity'].fillna(uncleaned_raw['Quantity'].mean())
""" Output
Lima data teratas:
InvoiceNo Description ... CustomerID City
0 536365 WHITE HANGING HEART T-LIGHT HOLDER ... 17850 Surabaya
1 536366 WHITE METAL LANTERN ... 17850 Surabaya
2 536367 CREAM CUPID HEARTS COAT HANGER ... 17850 Surabaya
3 536368 KNITTED UNION FLAG HOT WATER BOTTLE ... 17850 Jakarta
4 536369 RED WOOLLY HOTTIE WHITE HEART. ... 17850 Medan
[5 rows x 7 columns]
Kolom dengan missing value:
InvoiceNo False
Description False
Quantity True
InvoiceDate False
UnitPrice False
CustomerID False
City False
dtype: bool
Persentase missing value kolom Quantity: 4.0%
"""
Untuk memprosesnya bisa dilakukan dengan cara berikut:
- Mengetahui kolom yang memiliki outliers! Gunakan visualisasi dengan boxplot pada dataframe uncleaned_raw.
import matplotlib.pyplot as plt
#Mengetahui kolom yang memiliki outliers!
uncleaned_raw.boxplot()
plt.show()
Langkah selanjutnya bisa dilakukan dengan cara berikut:
- Melakukan proses removing outliers pada kolom UnitPrice.
- Checking duplikasi and melakukan deduplikasi dataset tersebut!
#Check IQR
Q1 = uncleaned_raw['UnitPrice'].quantile(0.25)
Q3 = uncleaned_raw['UnitPrice'].quantile(0.75)
IQR = Q3 - Q1
#removing outliers
uncleaned_raw = uncleaned_raw[~((uncleaned_raw[['UnitPrice']] < (Q1 - 1.5 * IQR)) | (uncleaned_raw[['UnitPrice']] > (Q3 + 1.5 * IQR)))]
#check for duplication
print(uncleaned_raw.duplicated(subset=None))
#remove duplication
uncleaned_raw = uncleaned_raw.drop_duplicates()
""" Output
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 False
11 False
12 False
13 False
14 False
15 True
16 False
17 True
18 True
19 True
20 False
21 False
22 True
23 False
24 False
25 True
26 True
27 False
28 True
29 True
...
475 True
476 True
477 True
478 True
479 True
480 True
481 True
482 True
483 True
484 True
485 True
486 True
487 True
488 True
489 True
490 True
491 True
492 True
493 True
494 True
495 True
496 True
497 True
498 True
499 True
500 True
501 True
502 True
503 True
504 True
Length: 505, dtype: bool
"""