Bab 2 Eksplorasi Data
Pada pertemuan sebelumnya telah depelajari pengenalan dasar bagaimana mengakses basis data dengan menggunakan Python ke MySQL dan PostgreSQL. Pada pertemuan kedua ini, akan fokus untuk berlatih untuk melakukan CRUDA dan Filter tabel. Secara garis besar materi yang akan dibahas adalah;
- Mengulang kembali bagaimana meng-akses basis data dengan Python ke MySQL dan PostgreSQL
- Membuat dan menghapus basis data
- Membuat database lengkap dengan melakukan import data dari Excel (database rekayasa untuk pelatihan Data Analytics di JNE)
- Operasi tabel pada database
- Menambahkan pengaturan batasan tabel
2.1 Koneksi MySQL dan Python
Untuk mengakses basis data yang ada pada MySQL dengan Python dapat menggunakan koding berikut di Jupiterlab anda.
# import module
import mysql.connector
# koneksi server
db1 = mysql.connector.connect(
host='localhost',
user='bakti',
passwd='123'
)
Jika tidak muncul pesan error pada saat menjalankan koding diatas pada Chunck Jupiterlab anda. Artinya, koneksi Python ke MySQL sudah terhubung dengan baik.
2.1.1 Memeriksa Daftar Database
Setelah kita terhubung dengan local server menggunakan Python dan MySQL. Sekarang saatnya kita mulai untuk memerikas database apa saja yang ada didalamnya.
2.1.2 Membuat Database
Berikut ini adalah koding yang dapat digunakan untuk membuat database baru dengan menggunakan koneksi db.cursor()
yang ada pada objek cursor
.
2.1.3 Menghapus Database
Jika anda ingin menghapus database tertentu dari lokal server, maka dapat melakukannya dengan koding berikut:
2.1.4 Memeriksa Daftar Tabel
Untuk memeriksa daftar tabel yang ada pada local server. Perhatikan Koding berikut:
# import module
import mysql.connector
# koneksi salah satu database MySQl ke Python
db2 = mysql.connector.connect(
host='localhost',
user='bakti',
passwd='123',
database='jne2'
)
# membuat objek 'cursor` sebagai kata kunci eksekusi SQL
cursor2 = db2.cursor()
# Perintah SQL
sql = "SHOW TABLES"
# Eksekusi perintah SQL
cursor2.execute(sql)
# menampilkan daftar tabel
for x in cursor2:
print(x)
2.2 CRUDA Tabel
Pada materi sebelumnya telah dipelajari bagaimana untuk melakukan CRUDA
Tabel yang ada pada database. CRUDA
merupakan singkatan dari **Create, Read, Update, Delete, dan Alter. Berikut ini akan diperlihatkan cara untuk menambahkan daftar database dari CSV. Langkah pertama, import data dari Excel menggukan Python.
import pandas as pd
link_data = 'https://raw.githubusercontent.com/dsciencelabs/JNE_Data_Analytics_PySQL/main/data/data_latihan/inventory_items.csv'
df1 = pd.read_csv(link_data, sep=';' )
df1.head(5)
2.2.1 CREATE
Jika data tabel yang telah di import dari file CSV sudah ada dalam memori Jupeterlab (Python) anda, maka selanjutnya untuk menambahkan tabel tersebut ke database adalah sebagai berikut:
import pymysql
from sqlalchemy import create_engine
# membuat engine
engine = create_engine("mysql+pymysql://{user}:{pw}@localhost/{db}"
.format(user="bakti",
pw="123",
db="jne2"))
# df1.to_sql('users', engine, if_exists = 'append', index = True)
df1.to_sql('user', engine, if_exists='replace', index = False)
Tugas Kelompok:
Tambahkan tabel berikut ke database jne2
dengan mengikuti materi yang sudah anda pelajari sebelumnya.
- https://raw.githubusercontent.com/dsciencelabs/JNE_Data_Analytics_PySQL/main/data/data_latihan/products.csv
- https://raw.githubusercontent.com/dsciencelabs/JNE_Data_Analytics_PySQL/main/data/data_latihan/orders.csv
- https://raw.githubusercontent.com/dsciencelabs/JNE_Data_Analytics_PySQL/main/data/data_latihan/order_items.csv
- https://raw.githubusercontent.com/dsciencelabs/JNE_Data_Analytics_PySQL/main/data/data_latihan/inventory_items.csv
- https://raw.githubusercontent.com/dsciencelabs/JNE_Data_Analytics_PySQL/main/data/data_latihan/events.csv
- https://raw.githubusercontent.com/dsciencelabs/JNE_Data_Analytics_PySQL/main/data/data_latihan/distribution_centers.csv
2.2.2 READ
Berbeda dengan materi materi dasar yang kita pelajari sebelumnya, untuk membaca data tabel dari database dalam bentuk dataframe dapat dilakukan dengan cara berikut;
2.2.3 UPDATE
Sama seperti yang telah dipelajari sebelumnya, melakukan update data pada tabel disini dapat dilakukan dengan cara berikut:
import pandas as pd
en_co = engine.connect()
sql = 'UPDATE distribution_centers SET name=%s, latitude=%s, longitude=%s WHERE id=%s'
val = ("JNE", 106.7977, -6.1774, 10)
cursor2.execute(sql, val)
db2.commit()
pd.read_sql_table('distribution_centers', en_co)
Tugas Kelompok:
- Tambahkan satu lokasi baru pada tabel
distribution_centers
- Tambahkan tiga lokasi baru pada tabel
distribution_centers
2.2.4 DELETE
Pada bagian hapus data sama seperti update data. Kita harus menggunakan query DELETE untuk menghapus dan WHERE untuk menentukan data yang akan dihapus.
sql = "DELETE FROM distribution_centers WHERE id=%s"
val = (11, )
cursor2.execute(sql, val)
db2.commit()
print("{} data dihapus".format(cursor2.rowcount))
Tugas Kelompok:
- Hapuskan tiga lokasi baru sebelumnya, yang anda tambahkan pada tabel
distribution_centers
secara bersamaan.
Catatan: Untuk menghapus kolom dalam tabel, gunakan sintaks berikut (perhatikan bahwa beberapa sistem database tidak mengizinkan penghapusan kolom):
2.3 Filter Tabel
Berikut ini adalah beberapa cara yang dapat digunakan untuk memilah-milah tabel dari database.
2.3.2 WHERE
Kondisi yang dinyatakan pada klausa WHERE bisa simpel ataupun kompleks. Kita dapat menggabungkan beberapa kondisi menggunakan logical connectives (AND, OR dan NOT) menjadi sebuah kondisi tunggal. Berikut adalah contoh penggunaan klausa WHERE:
2.3.3 ORDER BY
Klausa ORDER BY digunakan untuk menampilkan output dalam bentuk urutan alfabet ASCending atau DESCending.
2.4 Tugas Kelompok
Diskusikan dan Kerjakan soal berikut bersama Kelompok Masing2.
Tambahkanlah kolom
Product_Price
pada tableinventory_items
Hapuslah kolom
Product_Price
pada tableinventory_items
Tambahkanlah kolom
Id
pada tableorders
Hapuslah kolom
Id
pada tableorders
Tambahkanlah kolom
Total_Sales
pada tableorder_items
Hapuslah kolom
Total_Sales
pada tableorder_items
Tampilkanlah data yang
order_id>= 50
dari tableorders
Tampilkanlah data berdasarkan negara london dari table
events
Tampilkanlah data yang memiliki product_id = 9482 dari table
inventory_items
Tampilkanlah data yang memiliki id = 72884 dan dengan status cancelled dari table
order_items
Urutkanlah Data dari table
distribution_centers
dengan nama dari huruf z ke aUrutkanlah Data dari table
order_items
dengansale_price
dari terkecil ke besarTambahkan Tabel dari local (tidak menggunakan link) ke database
jne2
Upload Tugas 2 Kelompok A Disini
Upload Tugas 2 Kelompok B Disini
Upload Tugas 2 Kelompok C Disini
2.5 Cara mengatasi XAMPP tidak berfungsi dengan baik
https://www.amalankomputer.com/2021/01/cara-mengatasi-apache-shutdown.html