0% menganggap dokumen ini bermanfaat (0 suara)
163 tayangan

Tutorial Lab 1

Lab 1 memperkenalkan konsep dasar data science dan analisis data menggunakan bahasa pemrograman Python. Terdapat instruksi untuk mengerjakan soal-soal yang melibatkan penggunaan library NumPy untuk operasi array dan Pandas untuk manipulasi dataset.

Diunggah oleh

LuthfiArif
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
163 tayangan

Tutorial Lab 1

Lab 1 memperkenalkan konsep dasar data science dan analisis data menggunakan bahasa pemrograman Python. Terdapat instruksi untuk mengerjakan soal-soal yang melibatkan penggunaan library NumPy untuk operasi array dan Pandas untuk manipulasi dataset.

Diunggah oleh

LuthfiArif
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 22

Lab 1 Data Science & Analysis

Bagian 1

Petunjuk:

1. Anda diharuskan mencoba sendiri setiap materi yang diberikan.


2. Kerjakan semua (6) soal yang terdapat pada tutorial.
3. Setelah sesi lab berakhir akan ada tugas yang diberikan pada dokumen yang berbeda.

Lab ini menggunakan Bahasa Pemrograman Python yang mengacu pada buku pedomanyang
digunakan di kelas. Anda bebas untuk menggunakan software apapun untuk mengerjakan
(Jupyter Notebook, JupyterLab, Google Colab, Spyder, Kaggle).

A. Numpy

import​ numpy ​as​ np

1. Konversi List ke Numpy Array

Numpy memiliki beberapa fungsi built-in untuk membuat array baru, tetapi jika anda
belum terbiasa dengan numpy, anda selalu dapat membuat numpy array (1D) dari
python list.

risuto = [​8​, ​777​, ​6​, ​4​, ​114514​, ​7​, ​21​, ​42​, ​888​]
numpy_array = np.array(risuto)

print​(​'ini adalah list biasa :'​, risuto, ​type​(risuto))


print​(​'ini adalah numpy array :'​, numpy_array, ​type​(numpy_array))

Output:
ini adalah list biasa : [8, 777, 6, 4, 114514, 7, 21, 42, 888]
<class 'list'>
ini adalah numpy array : [8 777 6 4 114514 7 21 42 888]
<class 'numpy.ndarray'>
2. Operasi Dasar Numpy Array

# mengakses element dengan index 3


print​(​'elemen ke-3 :'​, numpy_array[​3​])

# menambahkan elemen ke dalam list, dan mengembalikan list


tersebut
appended_array = np.append(numpy_array, ​9999​)
print​(​'original array :'​, numpy_array)
print​(​'appended array :'​, appended_array)

Output:
elemen ke-3 : 4
original array : [8 777 6 4 114514 7 21 42 888]
appended array : [8 777 6 4 114514 7 21 42 888
9999]

3. Mengambil Nilai Statistik dari Array

Numpy memiliki beberapa fungsi built-in untuk mempermudah pengambilan nilai-nilai


statistik​. 

print​(​'rata-rata dari array:'​, numpy_array.mean())


print​(​'nilai maksimum dari array:'​, numpy_array.​max​()) 

Output:
rata-rata dari array: 12918.555555555555
nilai maksimum dari array: 114514

Soal 1

Cari dan tampilkan nilai median, minimum, standar deviasi, ​variance,​ dan jumlah dari
array np_risuto!
4. Sort​ Numpy Array

sorted_array = np.sort(numpy_array)
print​(sorted_array)

Output:
[ 4 6 7 8 21 42 777 888 114514]

5. Elementwise Operation​ antar 2 Numpy Array

a = np.array([​1​, ​6​, ​21​])


b = np.array([​0.1​, ​0.2​, ​0.3​])
print​(​'hasil penjumlahan:'​, np.add(a, b))
print​(​'hasil perkalian:'​, np.multiply(a, b))

Output:
hasil penjumlahan: [ 1.1 6.2 21.3 ]
hasil perkalian: [ 0.1 1.2 6.3 ]

Soal 2

Carilah dan print array hasil ​elementwise substraction dan ​elementwise division dari
array a dan b di atas!

6. Menampilkan Nilai Unik dari Array

jo_array = np.array([​'johnny'​, ​'johnny'​, ​'johnny'​, ​'jolyne'​,


'johnny'​, ​'joseph'​, ​'jonathan'​, ​'jolyne'​,
'jolyne'​, ​'joseph'​, ​'johnny'​, ​'johnny'​,
'jolyne'​,​'johnny'​, ​'jolyne'​, ​'jolyne'​])

# nilai unik dari array


unique = np.unique(jo_array)
print​(unique)

Output:
['johnny' 'jolyne' 'jonathan' 'joseph']

# nilai unik beserta jumlahnya


unique, counts = np.unique(jo_array, return_counts=​True​)
nilai_unik = ​dict​(​zip​(unique, counts))
print​(nilai_unik)

Output:
{'johnny': 7, 'jolyne': 6, 'jonathan': 1, 'joseph': 2}

7. Membuat Matriks dengan Numpy

matrix_a = np.matrix(
[[​1​, ​2​, ​3​],
[​4​, ​5​, ​6​],
[​7​, ​8​, ​9​]]
)
matrix_b = np.matrix(
[[​1​, ​4​, ​3​],
[​2​, ​6​, ​6​],
[​7​, ​0​, ​9​]]
)

8. Operasi Dasar Matriks

# Transpose
transposed_matrix = np.transpose(matrix_a)
print​(​'transposed:'​)
print​(transposed_matrix)

# Invers
inversed_matrix = np.linalg.inv(matrix_b)
print​(​'inversed:'​)
print​(inversed_matrix)

Output:
transposed:
[[1 4 7]
[2 5 8]
[3 6 9]]
inversed:
[[ 2.25000000e+00 -1.50000000e+00 2.50000000e-01]
[ 1.00000000e+00 -5.00000000e-01 9.25185854e-18]
[-1.75000000e+00 1.16666667e+00 -8.33333333e-02]]

9. Operasi Dua Matriks

# dot product
print​(np.dot(matrix_a , matrix_b))

# penjumlahan
print​(np.add(matrix_a , matrix_b))

# pengurangan
print​(np.subtract(matrix_a , matrix_b))

Output:
[[ 26 16 42]
[ 56 46 96]
[ 86 76 150]]
[[ 2 6 6]
[ 6 11 12]
[14 8 18]]
[[ 0 -2 0]
[ 2 -1 0]
[ 0 8 0]]

B. Pandas

import​ pandas ​as​ pd


1. Membaca Dataset

# Membaca dataset dari url


cancer_df = pd.read_csv(
'https://archive.ics.uci.edu/ml/machine-learning-databases/breast-
cancer-wisconsin/breast-cancer-wisconsin.data'​,header=​None​)

# Membaca dataset dari lokal


drinks = pd.read_csv(​'drinks.csv'​)
display(drinks)

Output:

Perhatikan bahwa index data dimulai dari 0 bukan 1. Untuk mengetahui dimensi data,
gunakan fungsi variabel name.shape

print​(​'shape dataset:'​, drinks.shape)


print​(​'artinya, dataset terdiri dari {} baris dan {}
kolom'​.​format​(drinks.shape[​0​], drinks.shape[​1​]))

Output:
shape dataset: (193, 6)
artinya, dataset terdiri dari 193 baris dan 6 kolom
2. Menampilkan Tipe data dari tiap kolom

drinks.dtypes

Output:
country object
beer_servings int64
spirit_servings float64
wine_servings int64
total_litres_of_pure_alcohol float64
continent object
dtype: object

3. Menampilkan Nilai-Nilai Statistik dari Setiap Kolom Numerikal

Gunakan fungsi describe() untuk menampilkan gambaran statistik singkat dari


keseluruhan data atau kolom/fitur tertentu dari data.

drinks.describe()

Output:

Fungsi describe() akan menampilkan statistik standar (mean, std, min, max) untuk
kolom/atribut bertipe kuantitatif sedangkan untuk kolom bertipe kualitatif maka informasi
yang akan ditampilkan berupa:

1. count: Jumlah filled in/ row yang terisi


2. unique: Berapa banyak nilai unik/level
3. top: Nama item yang paling banyak muncul
4. dataFreq: Seberapa sering top item umum muncul dalam data

Perhatikan perbedaan output describe() dari kedua kolom berikut:

drinks[​'continent'​].describe()

Output:
count 170
unique 5
top AF
freq 53
Name: continent, dtype: object

drinks[​'beer_servings'​].describe()

Output:
count 193.000000
mean 106.160622
std 101.143103
min 0.000000
25% 20.000000
50% 76.000000
75% 188.000000
max 376.000000
Name: beer_servings, dtype: float64

4. Menampilkan ​Pearson Correlation​ dari ​DataFrame

drinks.corr(method=​'pearson'​)

Output:
5. Menghitung Jumlah Elemen

Pada contoh dibawah terlihat bahwa terdapat kolom dengan jumlah elemen kurang dari
jumlah baris, artinya kolom tersebut memiliki missing value.

# Menghitung jumlah elemen tidak null


drinks.count()

Output:
country 193
beer_servings 193
spirit_servings 189
wine_servings 193
total_litres_of_pure_alcohol 193
continent 170
dtype: int64

6. Missing Values

Missing values adalah informasi yang tidak tersedia untuk sebuah objek (kasus). Missing
value terjadi karena informasi untuk sesuatu tentang objek tidak diberikan, sulit dicari,
atau memang informasi tersebut tidak ada. Missing Value biasanya ditandai dengan
“NA” atau “NaN” dalam sebuah data.

Beberapa cara mengatasi missing values (disesuaikan dengan kebutuhan) seperti:


menghapus tuple data yang tidak lengkap, menghapus variable (kolom data), mengisi
missing value dengan mean/median/mode, mengisi missing value dengan nilai
prediction. Silahkan dipelajari lebih lanjut.

# Menghitung jumlah missing values dengan


drinks.isnull().​sum​()

Output:
country 0
beer_servings 0
spirit_servings 4
wine_servings 0
total_litres_of_pure_alcohol 0
continent 23
dtype: int64

Berikut kita adalah contoh menangani missing value dengan mengganti NA/NaN dengan
nilai rata-rata atau nilai tertentu. Misalnya semua nilai NA/NaN pada kolom continent
akan diganti dengan nilai yang paling sering muncul yaitu “AF” dan semua nilai NaN
pada kolom spirit serving akan diganti dengan nilai rata-rata dari kolom tersebut.
Silahkan pelajari lebih lanjut pada link berikut:

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.htm
l

filled_drinks = drinks.copy()
average_spirit = filled_drinks[​'spirit_servings'​].mean()
filled_drinks[​'spirit_servings'​].fillna(average_spirit, inplace =
True​)
filled_drinks[​'continent'​].fillna(​'AF'​, inplace = ​True​)

print​(​'before fill:'​)
display(drinks.iloc[[​192​]])

print​(​'after fill:'​)
display(filled_drinks.iloc[[​192​]])

Output:

Soal 3

- Buat dan tampilkan DataFrame baru yang dihasilkan dari dataset drinks
dengan mendrop row yang berisi missing value (minimal satu). hint: bisa
dilakukan dengan satu baris

- Tampilkan shape, count, dan isnull().sum() dari DataFrame baru tersebut


7. Sorting DataFrame

Contoh di bawah melakukan sort DataFrame berdasarkan nilai kolom ​beer_servings​,


secara ascending. Artinya baris teratas adalah negara dengan ​beer servings paling
kecil.

drinks_sorted_by_beer_servings =
drinks.sort_values(​'beer_servings'​)
display(drinks_sorted_by_beer_servings)

Output:

8. Query pada DataFrame

Terdapat beberapa aliran untuk melakukan query pada DataFrame. Pada lab ini
digunakan query.

# dataframe dengan beer servings lebih dari 20


high_beer = drinks.query(​'beer_servings > 200'​)
display(high_beer)

Output:
Soal 4

Tampilkan baris-baris pada dataset drinks dimana beer_servings nya 0 dan continent
nya AS.

9. Menampilkan Beberapa Baris dan kolom

# menampilkan baris 0-2, baris 1-4


drinks_subset = drinks.iloc [​0​:​3​, ​1​:​5​]
display(drinks_subset)

Output:

# dataframe yang hanya berisi column country


countries = drinks[[​'country'​]]
display(countries)

Output:

# pandas series yang berisi column country


countries_pandas_series = drinks[​'country'​]
type​(countries_pandas_series)
print​(​'ini pandas series'​, countries_pandas_series)

print​()

# numpy array yang berisi column country


countries_numpy_array = countries_pandas_series.values
type​(countries_numpy_array)
print​(​'ini numpy array'​, countries_numpy_array)

Output:
# Mengambil Row 2
row_2 = drinks.iloc[​2​]
display(row_2)

Output:
country Algeria
beer_servings 25
spirit_servings 0
wine_servings 14
total_litres_of_pure_alcohol 0.7
continent AF
Name: 2, dtype: object

# Mengubah row menjadi python dictionary


row_2.to_dict()

Output:
{'beer_servings': 25,
'continent': 'AF',
'country': 'Algeria',
'spirit_servings': 0.0,
'total_litres_of_pure_alcohol': 0.7,
'wine_servings': 14}

C. Plotting
Untuk memahami data dan memperoleh informasi yang terkandung dalam data, kita
perlu untuk menganalisis data tersebut. Salah satu bentuk analisis data adalah melihat
visualisasi data dalam bentuk graph, plot, dan lain-lain. Visualisasi data tersebut
dilakukan dengan tujuan:

● Presentasi,
● Sarana untuk mengkomunikasikan data,
● Melihat keterhubungan antar data,
● Memahami data dengan cepat.

Berikut ini berbagai bentuk visualisasi data yang dapat dibuat di Python. Anda dapat
menggunakan library pandas, numpy, matplotlib.pyplot, dan seaborn untuk melakukan
visualisasi data. Untuk tutorial ini Anda akan menggunakan tips dataset.

import​ pandas ​as​ pd


import​ numpy ​as​ np
import​ matplotlib.pyplot ​as​ plt
import​ seaborn ​as​ sns
tips = sns.load_dataset(​'tips'​)
tips.head()

Output:
1. Scatter Plot

Goal: Untuk melihat keterhubungan antar dua variabel. Anda akan melakukan plotting
terhadap variabel total_bil dan tip menggunakan lmplot().

sns.lmplot(x=​'total_bill'​, y=​'tip'​, data=tips, fit_reg = ​False​)


plt.show()

Output:

# menggambarkan scatter plot sekaligus garis regresi


sns.lmplot(x=​'total_bill'​, y=​'tip'​, data=tips)
plt.show()

Output:
Selanjutnya, kita dapat melihat keterhubungan antara variabel total_bil dan tip
berdasarkan faktor jenis kelamin menggunakan hue = (nama_variabel).

# scatterplot yang warnanya dibedakan berdasarkan suatu nilai,


dibawah ini
# dibedakan dengan sex
sns.lmplot(x=​'total_bill'​, y=​'tip'​, data=tips, hue=​'sex'​,
fit_reg=​False​,
palette=​'Set1'​)
plt.show()

Output:

2. Line Graphs

Goal: Melihat perubahan suatu variabel dalam jangka waktu tertentu. Anda akan
melakukan plotting pada variabel tip dan numb menggunakan plt.plot()

tips[​'numb'​] = ​range​(​1​,​245​)
x = tips[​'numb'​]
y = tips[​'tip'​]
# normal plot
plt.plot(x,y)
# plot with data point marker
plt.plot(x,y, marker=​'o'​, color=​'purple'​, linewidth=​0.1​)
plt.show()
Output:

3. Bar Charts

Goal: Membandingkan variabel di berbagai kelompok. Anda akan melakukan ploting


terhadap variabel tip dan day menggunakan barplot() untuk melihat seberapa banyak tip
yang diperoleh pada setiap harinya.

sns.set_style(​"whitegrid"​)
tips = sns.load_dataset(​"tips"​)
sns.barplot(x=​"day"​, y=​"total_bill"​, data=tips)
plt.show()

Output:

# Bar plot dipisah berdasarkan gender.


sns.barplot(x=​"day"​, y=​"total_bill"​, hue=​"sex"​, data=tips)
plt.show()
Output:

Soal 5

Tampilkan barplot yang menampilkan beer_servings dari 5 negara dengan nilai


beer_servings terbesar, diurutkan dari yang paling besar (kiri = besar).

4. Histograms

Goal: Menampilkan distribusi frekuensi dari satu variabel kuantitatif dengan memisahkan
data berdasarkan range. Anda akan melakukan plotting terhadap variabel total_bil
menggunakan hist(). 

tips[​'tip_pct'​] = ​100​ * tips[​'tip'​]


tips[​'tip_pct'​].hist(bins=​20​)
plt.show() 

Output:
Soal 6

Tampilkan histogram plot wine servings dari negara di EU, dari dataset drinks.

5. Box Plots

Goal: Melihat distribusi suatu nilai.

● Nilai minimum
● Nilai Q1
● Nilai median / Q2
● Nilai Q3
● Nilai maksimum

Anda akan melakukan plotting pada variabel day dan tip menggunakan boxplot().

Selain itu anda juga dapat memperoleh informasi mengenai data outlier. Seperti pada
gambar di bawah ini, terdapat titik-titik kecil hitam yang merupakan data outlier.

sns.boxplot(x=​'day'​, y=​'tip'​, data=tips)


plt.ylabel(​'tip ($)'​)
plt.show()

sns.boxplot(x=​'sex'​, y=​'tip'​, data=tips)


plt.ylabel(​'tip ($)'​)
plt.show()

Output:
6. Plotting Dimensi Tinggi

Untuk melakukan plotting dimensi tinggi (lebih dari 4), kita dapat menggunakan
scatterplot matrix. Plot dibawah menunjukan scatter plot 2D dari setiap pasangan atribut.

import​ plotly.express ​as​ px


df = px.data.iris()
display(df)
fig = px.scatter_matrix(df,
dimensions=[​"sepal_width"​, ​"sepal_length"​, ​"petal_width"​,
"petal_length"​],
color=​"species"​)
fig.show()

Output:

Anda mungkin juga menyukai