M11 - Exploratory Data Analysis dengan Python
M11 - Exploratory Data Analysis dengan Python
dengan Python
1
Topik
• Pengenalan Library dalam Python
• Library NumPy
• Library Pandas
• Library SciPy
• Library Matplotlib
• Memanggil library di Python
• Exploratory Data Analysis dengan Pandas – Bagian 1
• Membaca file dari Excel atau CSV sebagai data frame
• Inspeksi struktur data frame
• Melihat struktur kolom dan baris dari data frame
• Melihat preview data dari data frame
• Statistik Deskriptif dari Data Frame — Part 1
• Statistik Deskriptif dari Data Frame — Part 2
• Statistik Deskriptif dari Data Frame — Part 3
• Exploratory Data Analysis dengan Pandas ‐ Bagian 2
• Mengenal dan Membuat Distribusi Data dengan Histogram
• Standar Deviasi dan Varians pada Pandas
• Menemukan Outliers Menggunakan Pandas
• Rename Kolom Data Frame
• .groupby menggunakan Pandas
• Sorting Menggunakan Pandas
2
Exploratory Data Analysis dengan Python
• Exploratory Data Analysis (EDA) adalah tahapan penting sebelum
menganalisis suatu data karena EDA digunakan untuk mempelajari
karakteristik dari data tersebut.
• Karakteristik data yang dipelajari berupa memeriksa kesalahan‐
kesalahan data yang mungkin terjadi pada berbagai tahap, mulai dari
pencatatan data di lapangan sampai pada entry data pada komputer.
• Selain itu, EDA dapat digunakan untuk eksplorasi data sehingga kita
bisa menentukan model analisis yang tepat.
3
Pengenalan Library dalam Python
4
Pengenalan Library Python
• Dalam menganalisis data, kita tidak asing lagi dengan bahasa
pemograman — Python.
• Dalam topik ini akan dibahas kegunaan masing — masing library
dasar pada Python beserta contoh kasus penggunaan library tersebut
dalam menyelesaikan real — case di dunia kerja.
5
Macam‐macam Library pada Python
7
Library Pandas
• Pandas merupakan library yang memudahkan dalam melakukan
manipulasi, cleansing maupun analisis struktur data.
• Dengan menggunakan Pandas, dapat memanfaatkan lima fitur utama dalam pemrosesan
dan analisis data, yaitu:
• Load data
• Prepare data
• Manipulate data
• Modelling data
• Analysis data
• Pandas menggunakan konsep array dari NumPy namun memberikan index kepada array
tersebut, sehingga disebut series ataupun data frame.
• Sehingga bisa dikatakan Pandas menyimpan data dalam dictionary‐based NumPy arrays.
• 1‐Dimensi labelled array dinamakan sebagai Series.
• Sedangkan 2‐Dimensi dinamakan sebagai Data Frame.
8
Library Pandas
Bentuk 1D Pandas (Series)
9
Library SciPy
• Scipy dibangun untuk bekerja dengan array NumPy dan menyediakan
banyak komputasi numerik yang ramah pengguna dan efisien seperti
rutinitas untuk integrasi, diferensiasi dan optimasi numerik.
• Baik NumPy maupun SciPy berjalan pada semua operating system,
cepat dan mudah untuk diinstall dan gratis.
• NumPy dan SciPy mudah digunakan, dan kehandalannya membuat
beberapa data scientist dan researcher terkemuka dunia memilih
menggunakannya.
10
Library Matplotlib
• Matplotlib merupakan library dari Python yang umum digunakan untuk visualisasi
data.
• Matplotlib memiliki kapabilitas untuk membuat visualisasi data 2‐dimensional.
• Contoh visualisasi yang dapat dibuat dengan menggunakan matplotlib
diantaranya adalah:
1. Line chart
2. Bar chart
3. Pie chart
4. Box plot chart
5. Violin chart
6. Errorbar chart
7. Scatter chart
• Jenis‐jenis chart lainnya juga dapat dibuat melalui library ini.
11
Tes 1
• Karyawan A mendapatkan tugas dari karyawan B untuk membuat
summary dari hasil dataset penjualan di e‐commerce ABC, dimana
order dataset tersebut disimpan di CSV file. Namun karyawan A
memiliki kesulitan dalam melakukan proses loading dataset tersebut
ke dalam Python. Library dari Python manakah yang dapat
direkomendasikan kepada karyawan A?
12
Tes 2
• Setelah melakukan proses manipulasi data, untuk menyajikan data
tersebut, karyawan A butuh membuat beberapa chart terkait
distribusi data. Library manakah yang paling cocok digunakan oleh
karyawan A?
13
Memanggil library di Python
• Sebelum dapat digunakan, library tersebut harus terlebih dahulu dipanggil
ke dalam lingkungan Python.
• Command untuk memanggil library di Python menggunakan syntax
(menggunakan huruf kecil):
import library_name as alias
• Alias berfungsi sebagai pengganti nama library, sehingga menghemat
komputasi saat function dari library tersebut dipanggil.
• Contoh: mengimport library numpy & pandas:
import numpy as np
import pandas as pd
• Secara otomatis library numpy dan pandas akan diimport.
14
Exploratory Data Analysis dengan Pandas ‐ Bagian 1
15
Membaca file dari Excel atau CSV sebagai data frame
• Salah satu fungsi Pandas yaitu melakukan load data dari CSV atau
Excel file.
• Syntax yang digunakan untuk melakukan operasi tersebut, yaitu:
17
Inspeksi struktur data frame
• Setelah melakukan proses loading dataframe ke dalam Python, hal
selanjutnya sebelum memulai analisis adalah mengerti struktur
dataset tersebut.
• Sehingga langkah selanjutnya dari pre‐analisis biasanya dilakukan
untuk:
1. melihat struktur kolom dan baris data frame (.shape)
2. melihat preview data dari dataframe tersebut (.head() dan .tail())
3. membuat summary data sederhana dari dataset (.describe())
18
Inspeksi struktur data frame:
1. Melihat struktur kolom dan baris dari data frame
19
Tugas Praktek 2
• Pada order_df dataframe tuliskan syntax Python untuk melihat struktur
dari order_df dengan menggunakan fungsi shape!
• Lengkapi syntax berikut ini:
import ‐‐‐ as ‐‐‐
order_df = pd.‐‐‐(‐‐‐)
print(order_df.‐‐‐)
• Output:
(49999, 12)
20
Inspeksi struktur data frame:
2. Melihat preview data dari data frame
• Selanjutnya, untuk mendapatkan gambaran dari konten dataframe tersebut. Kita dapat
menggunakan function .head() dan .tail(), dengan syntax:
• Jika [jumlah_data] pada function .head() dan .tail() dikosongkan maka secara default akan
di ditampilkan sebanyak 5 (lima) baris saja. Sehingga bisa ditulis sebagai berikut:
21
Tugas Praktek 3
• Cobalah untuk check bagaimana contoh data dari dataframe tersebut dengan fungsi head dengan limit
10 baris! import ‐‐‐ as ‐‐
• Berikut syntaxnya: order_df = pd.‐‐‐(‐‐‐)
print(order_df.‐‐‐)
22
Inspeksi struktur data frame:
3. Statistik Deskriptif dari Data Frame — Bagian 1
23
Inspeksi struktur data frame:
3. Statistik Deskriptif dari Data Frame — Bagian 1
• Ketentuan umum:
• Secara umum function describe() akan secara otomatis mengabaikan
kolom category dan hanya memberikan summary statistik untuk kolom
berjenis numerik.
• Kita perlu menambahkan argument bernama include = “all” untuk
mendapatkan summary statistik atau statistik deskriptif dari kolom numerik
dan karakter (category).
• yaitu:
24
Inspeksi struktur data frame:
3. Statistik Deskriptif dari Data Frame — Bagian 1
Contoh penggunaan describe() di Pandas!
• Terdapat dataframe Pandas dengan nama nilai_skor_df dengan informasi seperti gambar
dibawah:
Menghasilkan:
25
Inspeksi struktur data frame:
3. Statistik Deskriptif dari Data Frame — Bagian 2
• Jika ingin mendapatkan summary statistik dari kolom yang tidak bernilai angka, maka dapat
menambahkan command include=[“object”] pada syntax describe().
• Hasil include=[“object”]:
Hasil include=”all” :
26
Inspeksi struktur data frame:
3. Statistik Deskriptif dari Data Frame — Bagian 3
• Selanjutnya, untuk mencari rataan dari suatu data dari dataframe. Gunakan syntax mean,
median, dan mode dari Pandas.
• Contoh penggunaan:
• Memberikan hasil:
21.4 # Mean
78 # Median
27
Tugas Praktek 4
1. Mengevaluasi performa cabang A dengan tambahan quick summary dari segi kuantitas, harga,
freight value, dan weight yang dibeli Konsumen. Manfaatkan dataframe order_df.
2. Mencari median dari total pembelian konsumen per transaksi kolom price
• Solusi nomor 1: Untuk bisa memperoleh data quick summary tersebut, gunakan
fungsi describe() terhadap order_df untuk melihat statistik deskriptif dari
kolom quantity, price, freight_value, dan product_weight_gram yang masing‐masing
mewakili kuantitas, harga, freight value, serta weight dari produk yang dibeli konsumen.
import ‐‐‐ as ‐‐‐
order_df = pd.‐‐‐("/path/order.csv")
# Quick summary dari segi kuantitas, harga, freight value, dan weight
print(order_df.‐‐‐)
28
Tugas Praktek 4
• Hanya dengan menggunakan fungsi describe() tanpa parameter
apapun, kita sudah langsung mendapatkan summary dari kolom data
yang kita inginkan.
• Mengapa? Karena kolom‐kolom tersebut bertipe numerik sehingga
kita hanya perlu menampilkannya
dengan describe() secara default saja.
29
Tugas Praktek 4
• No. 2: Mencari median dari total pembelian konsumen per transaksi
kolom “price”.
• Solusi:
• Pada bagian median kita harus mengetahui nama kolom yang ingin kita
analisis, sesuai permintaan yaitu kolom total pembelian konsumen per
transaksi, jika kita membuka dataframe dengan excel kita dapat melihat
bahwa kolom tersebut bernama “price”.
• Kemudian mengapa kita menggunakan syntax describe() pada kasus ini
dan bukannya .describe(include = “all”), dikarenakan sesuai
permintaan quick summary yang diinginkan hanya numerik saja.
30
Tugas Praktek 4
• Solusi No. 2: Menentukan median dari total pembelian Konsumen (kolom price) dengan
menggunakan fungsi median(). Dataframe yang akan kita gunakan dalam praktek ini
adalah order_df.
# Median dari total pembelian konsumen per transaksi kolom price
print(order_df.‐‐‐[:, ‐‐‐].‐‐‐)
• Output:
• Pada output diatas bahwa angka 2610000 merupakan nilai median dari total pembelian
konsumen per transaksi pada kolom price.
31
Exploratory Data Analysis dengan Pandas ‐ Bagian 2
32
Mengenal dan Membuat Distribusi Data dengan Histogram
• Histogram merupakan salah satu cara untuk mengidentifikasi sebaran distribusi dari data.
• Histogram adalah grafik yang berisi ringkasan dari sebaran (dispersi atau variasi) suatu data.
• Pada histogram, tidak ada jarak antar bar dari grafik.
• Hal ini dikarenakan bahwa titik data kelas bisa muncul dimana saja di daerah cakupan grafik.
• Sedangkan ketinggian bar sesuai dengan frekuensi atau frekuensi relatif jumlah data di kelas.
• Semakin tinggi bar, semakin tinggi frekuensi data.
• Semakin rendah bar, semakin rendah frekuensi data.
33
Mengenal dan Membuat Distribusi Data dengan Histogram
• Syntax umum:
34
Tugas Praktek 5
• Membuat suatu distribusi harga dari pembelian produk di cabang A.
• Dataframe yang akan kita gunakan sama seperti data sebelumnya, yaitu order_df.
• Supaya lebih mudah dipahami, kita akan membuatnya dalam bentuk histogram dari kolom price.
• Solusi:
• Pertama‐tama, import library yang dibutuhkan, yaitu Pandas dan Matplotlib.
• Selanjutnya, lakukan loading terhadap dataset order.csv kemudian membuat histogram dengan fungsi hist() untuk
membuat distribusi dari kolom price.
• Supaya histogram ini dapat ditampilkan, jangan lupa untuk menambahkan perintah plt.show(),
• Buat histogram pada kolom price dengan bins=10.
• Lengkapi:
• Hasil:
2.701851217
152.8
36
Tugas Praktek 6
• Menampilkan data persebaran product_weight_gram pada data penjualan cabang A yang kita
peroleh dari order.csv.
• Tampilkan standar deviasi dan varians dari kolom product_weight_gram pada
dataframe order_df tadi untuk menganalisis lebar persebaran distribusi tersebut.
• Kode: import ‐‐‐ as ‐‐‐
order_df = pd.‐‐‐("/path/order.csv")
• Setelah di run akan menghasilkan standar variasi & varians nya, yaitu:
3929.896875372737
15444089.451064402
37
Menemukan Outliers Menggunakan Pandas
• Sebelum menuju ke step by step dalam
menemukan outliers, kita harus memahami definisi
dari outliers.
• Outliers merupakan data observasi yang muncul dengan
nilai‐nilai ekstrim.
• Yang dimaksud dengan nilai‐nilai ekstrim dalam observasi
adalah nilai yang jauh atau beda sama sekali dengan
sebagian besar nilai lain dalam kelompoknya.
• Pada umumnya, outliers dapat ditentukan dengan metric
IQR (interquartile range).
• Rumus dasar dari IQR: Q3 — Q1.
• Data suatu observasi dapat dikatakan outliers jika
memenuhi kedua syarat dibawah ini:
• data < Q1 – 1.5 * IQR
• data > Q3 + 1.5 * IQR
38
Menemukan Outliers Menggunakan Pandas
• Contoh case: mengidentifikasi IQR dari dataframe nilai_skor_df
39
Tugas Praktek 7
• Setelah menentukan standar deviasi & varians pada kolom product_weight_gram, selanjutnya
dicoba menentukan batas IQR untuk bisa menentukan outliers bagi kolom product_weight_gram.
Manfaatkan dataframe order_df. import ‐‐‐ as ‐‐‐
order_df = pd.‐‐‐("/path/order.csv")
• Setelah di run maka yang ditampilkan adalah IQR yang merupakan hasil dari Q3‐Q1:
product_weight_gram 1550.0
dtype: float64
40
Rename Kolom Data Frame
• Mengganti nama kolom dataframe menggunakan library Pandas.
• Mengganti nama kolom pada Pandas dapat dilakukan dengan 2 cara:
1. Menggunakan nama kolom.
2. Menggunakan indeks kolom.
• Contoh penggunaan:
2. Rename menggunakan indeks kolom. Syntax:
• Contoh penggunaan:
41
Tugas Praktek 8
• Cobalah untuk mengubah kolom freight_value menjadi shipping_cost dalam data frame order_df, dengan
menggunakan fungsi rename().
• Syntax:
import ‐‐‐ as ‐‐‐
order_df = ‐‐.‐‐‐("/path/order.csv")
• Ketika dirun, maka kolom freight_value berganti nama menjadi kolom shipping_cost. Berikut
tampilannya:
seller_ id shipping_cost \
0 1554a68530182680ad5c8b042c3ab563 28000
1 1554a68530182680ad5c8b042c3ab563 45000
2 a425f92c199eb576938df686728acd20 174000
3 522620dcb18a6b31cd7bdf73665113a9 154000
4 25e6ffe976bd75618accfe16cefcbd0d 147000
... ... ...
49994 7ddcbb64b5bc1ef36ca8c151f6ec77df 172000
49995 4d6d651bd7684af3fffabd5f08d12e5a 130000
49996 955fee9216a65b617aa5c0531780ce60 14000
49997 955fee9216a65b617aa5c0531780ce60 108000
49998 1900267e848ceeba8fa32d80c1a5f5a8 189000
42
.groupby menggunakan Pandas
• Kegunaan .groupby adalah mencari summary dari data frame
dengan menggunakan aggregate dari kolom tertentu.
• Contoh penggunaan:
Diberikan dataframe bernama df seperti pada gambar dibawah!
43
Syntax penggunaan groupby:
Penggunaan groupby
Hasil:
Penjelasan:
Kode menggunakan
kolom ‘Name’ sebagai aggreg
ate dan kemudian
menghitung mean dari
kolom ‘Score’ pada tiap-tiap
aggregate tersebut.
Contoh lainnya:
Hasil:
Penjelasan:
Kode menggunakan
kolom ‘Name’ dan ‘Exam’ se
bagai aggregate dan
kemudian menghitung
mean dari
kolom ‘Score’ pada tiap -
tiap aggregate tersebut.
44
Tugas Praktek 9
• Setelah memahami penggunaan fungsi groupby(). Carilah rata rata dari kolom ‘price’ dengan
mengelompokkannya per payment_type dari dataset order_df!
• Syntax: import ‐‐‐ as ‐‐
order_df = ‐‐.‐‐‐("/path/order.csv")
• Hasil: payment_type
credit card 2.600706e+06
debit card 2.611974e+06
e‐wallet 2.598562e+06
virtual account 2.619786e+06
Name: price, dtype: float64
• Terlihat rata‐rata transaksi dari setiap tipe pembayaran.
• Terdapat 4 jenis tipe pembayaran dalam data tersebut, yaitu menggunakan kartu kredit
(credit_card), kartu debit (debit_card), e‐wallet (e‐wallet), dan akun virtual (virtual account).
• Rata‐rata nilai kolom price untuk masing‐masing tipe pembayaran tersebut memiliki jumlah yang
hampir sama.
Sorting Menggunakan Pandas
• Sorting adalah sebuah metode mengurutkan data berdasarkan syarat kolom tertentu, dan
biasanya digunakan untuk melihat nilai maksimum dan minimum dari dataset.
• Library Pandas menyediakan fungsi sorting sebagai fundamental dari exploratory data analysis.
• Syntax untuk operasi sorting pada Pandas:
46
Sorting Menggunakan Pandas
• Fungsi sorting secara default mengurutkan secara ascending (dimulai dari nilai terkecil), untuk
dapat mengurutkan secara descending (nilai terbesar lebih dahulu), dapat menggunakan properti
tambahan:
• Contoh:
• Sorting terhadap dataset nilai_skor_df berdasarkan age dimulai dari umur tertua!
• Menghasilkan:
47
Sorting Menggunakan Pandas
• Fungsi sorting di Pandas juga dapat dilakukan menggunakan lebih dari satu
kolom sebagai syarat.
• Contoh nya pada skenario dibawah, akan mencoba mengaplikasikan fungsi
Sorting menggunakan kolom ‘Age’ dan ‘Score’ sekaligus:
48
Tugas Praktek 10
• Cari berapa harga maksimum pembelian customer pada kolom ‘price’ di dataset order_df.
• Syntax: import ‐‐‐ as ‐‐‐
order_df = ‐‐‐.‐‐‐("/path/order.csv")
49
Tugas Praktek 11
Analisis data penjualan dari dataset order.csv dengan detail laporan sebagai berikut. Lakukan
dengan cara:
1. Mengitung median price yang dibayar customer dari masing‐masing metode pembayaran.
2. Tentukan metode pembayaran yang memiliki basket size (rataan median price) terbesar.
3. Ubah freight_value menjadi shipping_cost dan cari shipping_cost termahal dari
data penjualan tersebut menggunakan sort.
4. Untuk product_category_name, berapa rata‐rata weight produk tersebut dan standar
deviasi mana yang terkecil dari weight tersebut,
5. Buat histogram quantity penjualan dari dataset tersebut untuk melihat persebaran quantity
penjualan tersebut dengan bins = 5 dan figsize= (4,5)
50
Solusi 1: Median price yang dibayar customer dari masing‐masing metode pembayaran.
Solusi 2: Metode pembayaran yang memiliki basket size (rataan median price) terbesar.
• Soal pertama: caranya adalah menggunakan kolom payment_type sebagai aggregate dan kemudian
menghitung median dari kolom price pada tiap‐tiap aggregate tersebut. Dengan kata lain, kita akan
menghitung median harga (pada kolom ‘price’) dengan mengelompokkannya menurut masing‐
masing metode pembayarannya (pada kolom ‘payment_type’)
• Dengan contoh diatas kita dapat menerapkan fungsi .groupby pada kasus ini.
import ‐‐‐ as ‐‐‐
import ‐‐‐.pyplot as ‐‐‐
order_df = ‐‐‐.‐‐‐("/path/order.csv")
# Median price yang dibayar customer dari masing‐masing metode pembayaran
median_price = order_df[‐‐‐].‐‐‐(order_df[‐‐‐]).‐‐‐()
• Hasil: print(‐‐‐)
payment_type
credit card 2587500
debit card 2621500
e‐wallet 2589000
virtual account 2643000
Name: price, dtype: int64
• Terlihat median dari price berdasarkan tipe pembayaran nya masing‐masing.
• Soal kedua: setelah dijalankan terlihat bahwa tipe pembayaran virtual account yang memiliki rata‐rata
median price yang paling besar, yaitu sebesar 2643000.
51
• Selanjutnya, ganti nama kolom freight_value menjadi shipping_cost, serta cari
nilai shipping_cost termahal dengan menggunakan fungsi sort_values().
import ‐‐‐ as ‐‐‐
import ‐‐‐.pyplot as ‐‐‐
order_df = pd.read_csv("/path/order.csv")
# Ubah freight_value menjadi shiping_cost dan cari shipping_cost
# termahal dari data penjualan tersebut menggunakan sort
order_df.‐‐‐(columns={‐‐‐: ‐‐‐}, ‐‐‐ = ‐‐‐)
sort_value = order_df.‐‐‐(‐‐‐ = ‐‐‐, ascending=0)
print(‐‐‐)
product_category_name
automotive 3799.884166
beauty 3837.474929
electronics 3839.271768
fashion 3858.885213
gadget 3955.792741
sports 4032.850044
toys 3956.814749
utilities 4150.509909
Name: product_weight_gram, dtype: float64
• Terlihat dari data tersebut, produk ”beauty” memiliki berat rata‐rata paling kecil, yaitu sebesar 2120.088396
53
gram sedangkan produk “automotive” memiliki standar deviasi paling kecil, yaitu sebesar 3799.884166 gram.
Solusi 5: Buat histogram quantity penjualan dari dataset tersebut untuk melihat
persebaran quantity penjualan tersebut dengan bins = 5 dan figsize= (4,5).
• Syntax:
• Hasil:
54
Referensi
• Exploratory Data Analysis with Python for Beginner by DQLab.
• https://academy.dqlab.id/main/package/practice/163?pf=0
55