Penerapan Database MongoDB dengan Jupyter Notebook

Penerapan Database MongoDB dengan Jupyter Notebook

Selamat datang kembali, para pembaca setia blog ini! Kali ini, kita akan memasuki dunia menarik pengaplikasian database NoSQL, khususnya MongoDB, dengan menggunakan alat yang sangat bermanfaat, yaitu Jupyter Notebook.

Apa itu MongoDB?

MongoDB merupakan salah satu jenis database NoSQL yang berbasis dokumen. Berbeda dengan database relasional tradisional, MongoDB menggunakan format BSON (Binary JSON) untuk menyimpan data. Keunggulan MongoDB terletak pada kemampuannya menangani data semi-struktural atau tidak terstruktur dengan lebih efisien.

Mengapa MongoDB?

Pertanyaan ini wajar muncul. MongoDB menjadi pilihan populer karena kemudahannya dalam menyimpan data yang beragam, skalabilitas horizontal yang baik, dan fleksibilitas dalam memodelkan data. Penerapan MongoDB seringkali memberikan solusi yang optimal untuk aplikasi yang membutuhkan penanganan data yang cepat dan terdistribusi.

Apa Itu Jupyter Notebook?

Jupyter Notebook, di sisi lain, adalah lingkungan komputasi interaktif yang memungkinkan kita menggabungkan teks naratif, kode, dan hasil eksekusi dalam satu dokumen. Cocok sekali digunakan untuk eksplorasi data, visualisasi, dan analisis. Keterbukaan Jupyter terhadap berbagai bahasa pemrograman menjadikannya pilihan utama para data scientist dan pengembang.

Kombinasi MongoDB dan Jupyter Notebook

Menggabungkan MongoDB dengan Jupyter Notebook memberikan kita keunggulan lebih dalam menganalisis dan memanipulasi data. Pada artikel ini, kita akan menjelajahi langkah-langkah penerapan MongoDB dengan menggunakan Jupyter Notebook, serta bagaimana kombinasi ini dapat memberikan nilai tambah pada proyek pengembangan perangkat lunak atau analisis data kita.

Jadi, mari kita memulai petualangan kita dalam memahami penerapan database MongoDB dengan pengaplikasian Jupyter Notebook! Simak langkah-langkahnya dengan seksama dan jangan ragu untuk mencoba sendiri di lingkungan pengembangan Anda.

Penerapan

Sebelum masuk ke materi prakter, tentunya kita perlu data untuk diolah, data dapat di cari pada laman web kaggle.com. Tampilannya seperti ini.

Disini saya menggunakan database dari "Spotify Track Genre". 

Import Data dari File CSV ke MongoDB Menggunakan Python

Dalam artikel ini, kita akan membahas bagaimana cara mengimpor data dari file CSV ke MongoDB menggunakan Python. Untuk demonstrasi, kita akan menggunakan contoh file CSV Spotify.csv dan menghubungkannya dengan koleksi 'Data' pada database 'Spotify'.

1. Menghubungkan ke MongoDB

Pertama-tama, kita menggunakan pymongo untuk menghubungkan Python dengan MongoDB. Dalam contoh ini, kita terhubung ke server MongoDB yang berjalan di localhost dan port 27017. Pastikan Anda sudah mengganti 'nama_database' dan 'nama_koleksi' sesuai dengan kebutuhan Anda.

from pymongo import MongoClient

# Terhubung ke MongoDB
client = MongoClient('mongodb://localhost:27017/')
db = client['Spotify']  # Ganti 'nama_database' dengan nama database Anda
koleksi = db['Data']  # Ganti 'nama_koleksi' dengan nama koleksi Anda


2. Menentukan Jalur File CSV

Selanjutnya, kita tentukan jalur file CSV yang akan diimpor. Pastikan file CSV Anda memiliki struktur yang sesuai dengan kebutuhan.

# Tentukan jalur ke file CSV Anda
path_csv = 'Spotify.csv'

3. Membuka dan Memasukkan Data ke MongoDB

Buka file CSV menggunakan csv.DictReader untuk membaca setiap baris sebagai kamus. Kemudian, konversi kunci menjadi string dan masukkan setiap baris ke dalam koleksi MongoDB.

import csv

# Buka file CSV dan masukkan setiap baris ke dalam koleksi MongoDB
with open(path_csv, 'r', encoding='utf-8') as csvfile:
    csv_reader = csv.DictReader(csvfile)
    for row in csv_reader:
        # Konversi setiap kunci menjadi string
        row_str_keys = {str(key): value for key, value in row.items()}
        
        # Masukkan setiap baris sebagai dokumen dalam koleksi MongoDB
        koleksi.insert_one(row_str_keys)

Tampilannya akan seperti ini:


Setelah proses selesai, Anda akan mendapatkan pesan "Data berhasil diimpor. :)" yang menandakan bahwa data telah berhasil dimasukkan ke dalam koleksi MongoDB.

Membangun Aplikasi MongoDB dengan Fungsionalitas CRUD dan Visualisasi Data Menggunakan Python

Selanjutnya, kita akan membahas bagaimana membangun aplikasi sederhana menggunakan Python untuk berinteraksi dengan MongoDB. Aplikasi ini mencakup fungsi dasar CRUD (Create, Read, Update, Delete) serta visualisasi data dengan grafik histogram, line plot, dan vertical bar chart.

1. Koneksi ke MongoDB
Pertama-tama, kita perlu terhubung ke MongoDB menggunakan library pymongo. Dengan menggunakan MongoClient, kita dapat mengakses database dan koleksi yang akan digunakan.

import pymongo

# Koneksi ke MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
database = client["Spotify"]
collection = database["Data"]


2. Fungsi CRUD
Kemudian, kita mendefinisikan fungsi untuk operasi CRUD. Ini mencakup pembuatan dokumen baru, membaca dokumen berdasarkan kueri, memperbarui dokumen, dan menghapus dokumen.

def create_document(data):
    # Membuat dokumen baru
    result = collection.insert_one(data)
    print(f"Dokumen berhasil ditambahkan dengan ID: {result.inserted_id}")

def read_documents(query={}):
    # Membaca dokumen berdasarkan kueri
    documents = collection.find(query)
    
    # Mengubah dokumen menjadi DataFrame
    df = pd.DataFrame(documents)
    
    return df

def update_document(query, new_data):
    # Memperbarui dokumen berdasarkan kueri
    result = collection.update_one(query, {"$set": new_data})
    print(f"Jumlah dokumen yang diubah: {result.modified_count}")

def delete_document(album_name):
    # Menghapus dokumen berdasarkan kueri
    result = collection.delete_one({'album_name': album_name})
    
    if result.deleted_count > 0:
        print(f'Album dengan nama "{album_name}" telah dihapus.')
    else:
        print(f'Album dengan nama "{album_name}" tidak ditemukan.')


3. Visualisasi Data
Selanjutnya, kita membuat fungsi untuk menampilkan tabel data dan visualisasi data. Fungsi ini mencakup tampilan tabel data parsial, histogram, line plot, dan vertical bar chart.

def display_partial_table(df, start=0, end=5):
    # Menampilkan tabel data parsial
    if not df.empty:
        partial_df = df.iloc[start:end]
        table = tabulate(partial_df, headers='keys', tablefmt='pretty', showindex=False)
        print(table)
    else:
        print("Tidak ada data untuk ditampilkan.")

def display_histogram(df, column_name):
    # Menampilkan histogram dari kolom tertentu
    if column_name in df.columns:
        try:
            df[column_name] = pd.to_numeric(df[column_name])
            
            plt.hist(df[column_name], bins=20, color='blue', edgecolor='black')
            plt.title(f'Histogram dari Kolom {column_name}')
            plt.xlabel(column_name)
            plt.ylabel('Frekuensi')
            plt.show()
        except ValueError as e:
            print(f"Error: {e}")
            print(f"Gagal mengonversi kolom {column_name} ke tipe data numerik.")
    else:
        print(f"Kolom dengan nama {column_name} tidak ditemukan.")

def display_line_plot(df, x_column, y_column):
    # Menampilkan line plot dari dua kolom tertentu
    if x_column in df.columns and y_column in df.columns:
        try:
            df[x_column] = pd.to_numeric(df[x_column], errors='coerce')
            df[y_column] = pd.to_numeric(df[y_column], errors='coerce')
            
            plt.plot(df[x_column], df[y_column], marker='o', linestyle='-')
            plt.title(f'Line Plot dari {y_column} terhadap {x_column}')
            plt.xlabel(x_column)
            plt.ylabel(y_column)
            plt.show()
        except ValueError as e:
            print(f"Error: {e}")
            print(f"Gagal mengonversi kolom {x_column} atau {y_column} ke tipe data numerik.")
    else:
        print(f"Kolom {x_column} atau {y_column} tidak ditemukan.")

def display_vertical_bar_chart(df, x_column, y_column):
    # Menampilkan vertical bar chart dari dua kolom tertentu
    if x_column in df.columns and y_column in df.columns:
        try:
            df[x_column] = pd.to_numeric(df[x_column], errors='coerce')
            df[y_column] = pd.to_numeric(df[y_column], errors='coerce')
            
            plt.bar(df[x_column], df[y_column], color='blue')
            plt.title(f'Vertical Bar Chart dari {y_column} terhadap {x_column}')
            plt.xlabel(x_column)
            plt.ylabel(y_column)
            plt.show()
        except ValueError as e:
            print(f"Error: {e}")
            print(f"Gagal mengonversi kolom {x_column} atau {y_column} ke tipe data numerik.")
    else:
        print(f"Kolom {x_column} atau {y_column} tidak ditemukan.")

# Fungsi untuk membuat dan menampilkan pie chart dari kolom tertentu
def display_pie_chart(df, column_name):
    if column_name in df.columns:
        try:
            # Menghitung frekuensi nilai unik dalam kolom
            counts = df[column_name].value_counts()

            # Menampilkan pie chart
            plt.pie(counts, labels=counts.index, autopct='%1.1f%%', startangle=90, colors=plt.cm.Paired.colors)
            plt.title(f'Pie Chart dari Kolom {column_name}')
            plt.axis('equal')  # Memastikan pie chart berbentuk lingkaran
            plt.show()
        except ValueError as e:
            print(f"Error: {e}")
            print(f"Gagal menghitung frekuensi untuk kolom {column_name}.")
    else:
        print(f"Kolom dengan nama {column_name} tidak ditemukan.")

Maka tampilannya akan seperti ini



Dengan menggabungkan fungsionalitas CRUD dan visualisasi data, kita dapat membangun aplikasi yang dapat membantu dalam manajemen dan analisis data Spotify pada database MongoDB. Artikel ini memberikan dasar untuk memahami cara menggunakan Python untuk berinteraksi dengan MongoDB dan memvisualisasikan data dengan grafik.

Testing

Menambahkan Data Baru ke Database Spotify Menggunakan Python

Dalam contoh ini, kita akan membahas cara menambahkan data baru ke database Spotify kita menggunakan Python. Kita akan menggunakan fungsi create_document yang telah kita definisikan sebelumnya.

Kode di bawah ini menunjukkan cara membuat dokumen baru dalam database Spotify dengan menggunakan data contoh. Dokumen ini mencakup informasi tentang sebuah lagu, seperti artis, nama album, nama trek, popularitas, durasi, dan sebagainya.

sample_data = {
    'artists': 'Tulus ',
    'album_name': 'Monokrom',
    'track_name': 'Monokrom',
    'popularity': 80,
    'duration_ms': 200400,
    'explicit': False,
    'danceability': 0.75,
    'energy': 0.8,
    'key': 5,
    'loudness': -5.5,
    'mode': 1,
    'speechiness': 0.1,
    'acousticness': 0.2,
    'instrumentalness': 0.05,
    'liveness': 0.3,
    'valence': 0.7,
    'tempo': 120,
    'time_signature': 4,
    'track_genre': 'Jazz'
}

# Menambahkan data baru ke database
create_document(sample_data)

Tampilan gambar:

Dengan menjalankan kode di atas, kita dapat melihat hasilnya di MongoDB dengan dokumen baru yang berhasil ditambahkan. Pada contoh ini, kita menambahkan data lagu "Monokrom" oleh Tulus ke koleksi 'Data' dalam database 'Spotify'.

Membaca Data dari Database

Pertama-tama, kita akan membaca data dari koleksi 'Data' dalam database 'Spotify' menggunakan fungsi read_documents.

# Memanggil fungsi read_documents
df = read_documents()


Memperbarui Data Lagu Tertentu

Selanjutnya, kita akan memperbarui data lagu "This Time Tomorrow" dengan meningkatkan nilai popularitasnya.

# Memperbarui data
update_query = {'track_name': 'This Time Tomorrow'}
updated_data = {'popularity': 85}
update_document(update_query, updated_data)

Menghapus Data Album

Selanjutnya, kita akan menghapus data album dengan nama "Monokrom" dari koleksi.

# Menghapus data album
album_name_to_delete = 'Monokrom'
delete_document(album_name_to_delete)


Visualisasi Data

Terakhir, kita akan memvisualisasikan data menggunakan grafik histogram, line plot, vertical bar chart dan pie.

# Memanggil fungsi display_histogram untuk kolom 'popularity'
display_histogram(df, 'popularity')

# Memanggil fungsi display_line_plot untuk kolom 'tempo' dan 'popularity'
display_line_plot(df, 'tempo', 'popularity')

# Memanggil fungsi display_vertical_bar_chart untuk kolom 'artists' dan 'popularity'
display_vertical_bar_chart(df, 'tempo', 'popularity')





Tampilan grafik, akan menyesuaikan dengan data yang nantinya akan dipakai.


Dengan menjalankan kode-kode di atas, kita dapat menambahkan, membaca, memperbarui, dan menghapus data dalam database MongoDB serta melihat visualisasi data untuk memahami karakteristiknya. Semoga artikel ini memberikan pemahaman tentang cara melakukan berbagai operasi pada data menggunakan Python dan MongoDB. Selamat mencoba!

Komentar

Postingan populer dari blog ini

OSINT

LOCAL/REMOTE FILE INCLUSION

OSINT UTS