Lewati ke konten utama

Tutorial Memvisualisasikan Data dengan Python dan Tableau

Pelajari cara menggunakan Python untuk memperluas kemampuan visualisasi data Tableau.
Diperbarui 29 Sep 2026  · 15 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Tutorial Python Tableau

Mengapa menggunakan Python dengan Tableau

Tableau menyediakan beberapa opsi untuk menambah dan membuat field data baru. Anda dapat melakukan fungsi aritmetika, logika, spasial, dan pemodelan prediktif menggunakan calculated fields. Tableau adalah alat Business Intelligence (BI) yang kuat, tetapi ada keterbatasannya; di sinilah bahasa Python menjadi penyelamat.  

Python populer di kalangan komunitas data. Anda dapat menggunakannya untuk mengekstrak, membersihkan, memproses, dan menerapkan fungsi statistik yang kompleks pada data. Python menyediakan kerangka kerja machine learning, orkestrasi data, multiprocessing, dan pustaka kaya untuk melakukan hampir semua tugas yang mungkin. 

Python adalah bahasa serbaguna, dan menggunakannya bersama Tableau memberi kita keleluasaan untuk melakukan tugas yang sangat kompleks. Dalam tutorial ini, kita akan menggunakan Python untuk mengekstrak dan membersihkan data. Lalu, kita akan menggunakan data bersih tersebut untuk membuat visualisasi data di Tableau.

Kita tidak akan menggunakan Tabpy untuk membuat server Python Tableau dan mengeksekusi skrip Python di dalam Tableau. Sebagai gantinya, kita akan terlebih dahulu mengekstrak dan membersihkan data di Python (Jupyter Notebook) lalu menggunakan Tableau untuk membuat visualisasi interaktif. 

Visualisasi Data dengan Tableau
Goodreads Data Viz | Tableau Public

Ini adalah tutorial berbasis kode langkah demi langkah tentang Goodreads API dan membuat visualisasi kompleks di Tableau. Lihat tautan di bawah untuk mengakses kode dan dashboard Tableau. 

Ingesti dan Pemrosesan Data dengan Python

Di bagian pertama tutorial, kita akan belajar menggunakan Goodreads API untuk mengakses data publik. Dalam kasus kita, fokusnya pada profil pengguna dan mengonversinya menjadi dataframe Pandas yang mudah dibaca. Selanjutnya, kita akan membersihkan data dan mengekspornya ke format file CSV. 

Mulai

Kita akan menggunakan DataLab untuk menjalankan kode Python. DataLab sudah dilengkapi paket Python yang diperlukan untuk tugas data science. 

Jika Anda baru di Python dan ingin menyiapkan lingkungan di mesin lokal, instal Anaconda. Anaconda akan memasang Python, Jupyter Notebook, dan paket Python yang diperlukan. 

Sebelum mulai menulis kode, kita harus memasang paket xmltodict karena tidak termasuk dalam tumpukan data DataLab atau Anaconda. Kita akan menggunakan `pip` untuk memasang paket Python yang kurang.

Catatan: Simbol `!` hanya berfungsi di Jupyter Notebook. Simbol ini memungkinkan kita mengakses terminal di dalam sel kode Jupyter. 

!pip install xmltodict

>>> Collecting xmltodict
>>>   Using cached xmltodict-0.13.0-py2.py3-none-any.whl (10.0 kB)
>>> Installing collected packages: xmltodict
>>> Successfully installed xmltodict-0.13.0

Pada langkah berikutnya, kita akan mengimpor paket yang diperlukan. 

import pandas as pd
import xmltodict
import urllib.request

Mem-parsing Tautan Profil

Untuk mengekstrak data pengguna, kita membutuhkan user id dan user name. Di bagian ini, kita akan mem-parsing tautan profil pengguna (Abid). 

Catatan: Anda dapat menggunakan profil teman Anda atau profil Anda sendiri, lalu jalankan skrip ini. 

  1. Menarik user_id dengan memfilter digit dalam tautan dan mengembalikan "73376016". 
  2. Untuk mengekstrak user_name, kita akan memisahkan string pada user_id lalu memisahkannya pada tanda "-" untuk mendapatkan nama pengguna. Setelah mengganti "-" dengan spasi, kita mendapatkan nama pengguna "abid".
  3. Terakhir, kita akan menggabungkan user_id dengan user_name. ID unik ini akan digunakan pada bagian berikutnya untuk mengakses data pengguna.
Goodread_profile = "https://www.goodreads.com/user/show/73376016-abid"

user_id = ''.join(filter(lambda i: i.isdigit(), Goodread_profile))
user_name = Goodread_profile.split(user_id, 1)[1].split('-', 1)[1].replace('-', ' ')
user_id_name = user_id+'-'+user_name

print(user_id_name)

>>> 73376016-abid

Ekstraksi Data Goodreads

Pada akhir 2020, Goodreads akan berhenti menyediakan developer API. Anda dapat membaca laporan lengkapnya di sini. Untuk mengatasi hal ini, kita akan menggunakan kunci API dari proyek lama seperti streamlit_goodreads_app. Proyek ini menjelaskan cara mengakses data pengguna Goodreads menggunakan API. 

Goodreads juga memberi opsi untuk mengunduh data dalam format file CSV tanpa kunci API, tetapi terbatas pada satu pengguna dan tidak memberi kebebasan untuk mengekstrak data real-time. 

Di bagian ini, kita akan membuat fungsi yang menerima user_id_name, version, shelf, per_page, dan apiKey. 

  • apiKey: untuk mendapatkan akses ke data publik
  • version: untuk menentukan tipe data terbaru.
  • shelf: Ada beberapa shelf di profil pengguna, tetapi yang paling umum adalah read, to-read, dan currently-reading.
  • per_page: Jumlah entri buku per halaman

Fungsi akan mengambil input pengguna untuk menyiapkan URL lalu mengunduh data menggunakan urllib.request. Terakhir, kita mendapatkan data dalam format XML. 

apiKey = "ZRnySx6awjQuExO9tKEJXw"
version = "2"
shelf = "read"
per_page = "200"

def get_user_data(user_id, apiKey, version, shelf, per_page):
    api_url_base = "https://www.goodreads.com/review/list"
    final_url = (
        api_url_base
        + user_id
        + ".xml?key="
        + apiKey
        + "&v="
        + version
        + "&shelf="
        + shelf
        + "&per_page="
        + per_page
    )
    contents = urllib.request.urlopen(final_url).read()
    return contents
contents = get_user_data(user_id_name,apiKey,version, shelf, per_page)
print(contents[0:100])


>>> b'<?xml version="1.0" encoding="UTF-8"?>\n<GoodreadsResponse>\n  <Request>\n    <authentication>true</aut'

Mengonversi XML ke JSON

Data awal kita berformat XML, dan tidak ada cara langsung untuk mengonversinya menjadi basis data terstruktur. Jadi, kita akan mengubahnya menjadi JSON menggunakan paket Python xmltodict. 

Data XML diubah menjadi format JSON bertingkat, dan untuk menampilkan entri pertama pada data ulasan buku, kita akan menggunakan tanda kurung siku untuk mengakses data yang terenkapsulasi. 

Anda dapat bereksperimen dengan metadata dan mengeksplorasi lebih banyak opsi, tetapi dalam tutorial ini, kita akan fokus pada data ulasan pengguna.  

contents_json = xmltodict.parse(contents)
print(contents_json["GoodreadsResponse"]["reviews"]["review"][:1])

>>> [{'id': '4626706284', 'book': {'id': {'@type': 'integer', '#text': '57771224'}, 'isbn': '1250809606', 'isbn13': '9781250809605', 'text_reviews_count': {'@type': 'integer', '#text': '150'}, 'uri': 'kca://book/amzn1.gr.book.v3.tcNoY0o7ErAhczdQ', 'title': 'Good Intentions', 'title_without_series': 'Good Intentions', 'image_url': .........

Mengonversi JSON ke Dataframe Pandas 

Untuk mengonversi tipe data JSON menjadi dataframe Pandas, kita akan menggunakan fungsi json_normalize. Data ulasan berada pada tingkat ketiga, dan untuk mengaksesnya, kita akan mengakses GoodreadsResponse, reviews, dan review.

Sebelum menampilkan dataframe, kita akan menyaring data yang tidak relevan dengan menjatuhkan buku-buku yang kolom date_updated-nya hilang. 

Pelajari berbagai cara untuk mengimpor file CSV, spreadsheet, JSON, basis data SQL, dan API menggunakan Pandas dengan mengikuti kursus Streamlined Data Ingestion with pandas. 

df = pd.json_normalize(contents_json["GoodreadsResponse"]["reviews"]["review"])
df = df[df["date_updated"].notnull()]
df.head()

Mengonversi JSON ke Dataframe Pandas

Pembersihan Data

Dataframe mentah terlihat cukup bersih, tetapi kita tetap perlu mengurangi jumlah kolom. 

Seperti yang terlihat, ada 61 kolom.

df.shape
(200, 61)

Mari hapus kolom yang kosong. 

df.dropna(axis=1, how='all', inplace=True)
df.shape
(200, 58)

Kita berhasil menghapus 3 kolom dengan nilai hilang.

Sekarang kita akan memeriksa semua nama kolom menggunakan `df.columns` dan memilih kolom yang paling berguna. 

final_df = df[
    [
        "rating",
        "started_at",
        "read_at",
        "date_added",
        "book.title",
        "book.average_rating",
        'book.ratings_count',
        "book.publication_year",
        "book.authors.author.name"
    ]
]
final_df.head()

Seperti yang dapat kita amati, dataframe final terlihat bersih dengan field data yang relevan. 

Dataframe Final

Mengekspor File CSV

Pada bagian terakhir, kita akan mengekspor dataframe ke file CSV yang kompatibel dengan Tableau. Pada fungsi to_csv, tambahkan nama file beserta jenis ekstensinya dan hilangkan indeks dengan mengubah argumen index menjadi False. 

final_df.to_csv("abid_goodreads_clean_data.csv",index=False)

File CSV akan muncul di direktori saat ini.

File CSV Goodreads Bersih

File CSV Goodreads Bersih

Anda juga dapat melihat Python Jupyter Notebook: Ingesti Data menggunakan Goodreads API. Notebook ini akan membantu Anda men-debug kode, dan jika Anda ingin melewati bagian pemrograman Python, Anda cukup mengunduh file dengan mengeklik tombol Copy & Edit dan menjalankan skripnya. 

Visualisasi Data di Tableau

Pada bagian kedua, kita akan menggunakan data bersih dan membuat visualisasi data sederhana dan kompleks di Tableau. Tujuan kita adalah memplot grafik interaktif yang akan membantu kita memahami perilaku membaca buku pengguna. 

Menyambungkan Data

Kita akan menyambungkan file CSV dengan memilih opsi Text dan memilih file abid_goodreads_clean_data.csv. Setelah itu, kita akan mengubah field data Started At, Read At, dan Date Added menjadi Date & Time, seperti yang ditunjukkan di bawah. 

Catatan: Sebaiknya memodifikasi field data Anda di awal.  

Menyambungkan Data dan Mengubah Jenis Data
Menyambungkan Data dan Mengubah Jenis Data

Membuat Histogram Rating

Di bagian ini, kita akan membuat histogram rating buku pengguna. 

  • Pertama, seret dan jatuhkan field Rating ke rak Rows. 

Histogram Rating Pengguna Bagian 1
Histogram Rating Pengguna Bagian 1

  • Klik tombol drop-down Show Me untuk mengakses template visualisasi. Kita akan mengonversi bar chart menjadi histogram dengan mengeklik opsi Histogram.

Histogram Rating Pengguna Bagian 2
Histogram Rating Pengguna Bagian 2

  • Sumbu Rating memiliki tanda interval 0,5. Ubah tanda interval dengan klik kanan pada sumbu bawah dan pilih Edit Axis. Setelah itu klik tab Tick Marks dan ubah Major Tick Marks menjadi Fixed. Pastikan Tick Origin adalah 0 dan Tick Interval adalah 1.


Histogram Rating Pengguna Bagian 3

  • Kita akan menyesuaikan histogram dengan merapikan label sumbu, mengubah warna dan batas bar, serta menambahkan label mark. Anda dapat melakukan semua ini melalui opsi pada panel Marks. Panel ini berada di bagian tengah-kiri. 

Histogram Rating Pengguna Bagian 4
Histogram Rating Pengguna Bagian 4

Pengguna umumnya memberikan rating antara 3 dan 4. Rating nol adalah buku-buku yang tidak diberi rating. 

Line Plot

Untuk memplot grafik garis:

  1. Seret dan jatuhkan field Book.Publication Year ke rak Rows dan Columns.
  2. Ubah field data di Rows menjadi count dengan klik kanan lalu pilih Measure > Count. 
  3. Ubah field data di Columns menjadi dimensions dengan klik kanan lalu pilih Dimensions.
  4. Buka panel Marks, klik opsi dropdown Automatic, dan ubah menjadi Line. 
  5. Rapikan label sumbu, sesuaikan grafik, tambahkan judul, dan hapus nilai null.

Line Plot Tahun Publikasi Buku
Line Plot Tahun Publikasi Buku

Pengguna telah membaca beberapa buku lama, tetapi terutama tertarik pada buku-buku yang diterbitkan antara tahun 2015 dan 2020. 

Jika Anda merasa kewalahan dan ingin mempelajari dasar-dasar Tableau, Anda mungkin akan terbantu dengan Tableau Tutorial for Beginners oleh Eugenia Anello. 

Box Plot

Untuk memplot box-and-whisker plot:

  1. Seret dan jatuhkan field data Books.Ratings Count ke rak Rows. Ubah dari Discrete menjadi Continuous. 
  2. Seret dan jatuhkan field data Books.Ratings Count ke opsi Detail pada panel Marks. Ubah dari Measure menjadi Dimension.
  3. Klik opsi drop-down Show Me dan pilih opsi box-and-whisker plots. 
  4. Pindahkan field data dari rak Rows ke rak Columns untuk membuatnya horizontal. 
  5. Bagian terakhir adalah penyesuaian: kita akan memperbesar ukuran, mengubah warna, menambahkan judul, dan mengganti nama sumbu menjadi "Popularity".

Boxplot Jumlah Ulasan per Buku
Boxplot Jumlah Ulasan per Buku

Tampaknya pengguna membaca buku yang kurang populer dan beberapa buku terkenal. Ini berarti pengguna memiliki selera unik berdasarkan konten, bukan popularitas. 

Bubble Plot

Kita telah membuat visualisasi sederhana namun menarik untuk mempelajari perilaku membaca buku pengguna. Selanjutnya, kita akan mempelajari visualisasi data yang lebih kompleks yang mencakup membuat calculated field baru, mengedit bins, dan membuat beberapa layer.

Dalam bubble plot, label merepresentasikan jumlah hari yang dibutuhkan pengguna untuk menyelesaikan sebuah buku, dan ukuran gelembung merepresentasikan jumlah kemunculan. Kita tidak memiliki field data untuk durasi, tetapi kita dapat membuatnya menggunakan Started At dan Read At.

Pada langkah pertama, kita harus membuat calculated field baru dengan mengeklik tanda panah bawah di panel Data dan memilih Create Calculated Field. 

Membuat Calculated Field
Membuat Calculated Field

Jendela baru akan muncul, dan Anda harus:

  1. Ganti nama field judul menjadi "Read Duration"
  2. Gunakan fungsi DATEDIFF untuk mendapatkan selisih antara Read At dan Started At.
  3. Pastikan argumen pertama fungsi adalah "day".
  4. Seret dan jatuhkan atau ketik nama field di dalam tanda kurung siku sebagai argumen kedua dan ketiga. 

Durasi Baca dalam Hari
Durasi Baca dalam Hari

Field data Read Duration bersifat kontinu, dan untuk memplot visualisasi packed bubbles, kita harus membagi field data menjadi potongan-potongan kecil yang disebut bins. 

  1. Seret dan jatuhkan field `Read Duration` yang baru dibuat ke rak Rows.
  2. Klik Show Me dan pilih histogram. Ini akan otomatis membuat field bin untuk Anda.

Membuat Field Bin
Membuat Field Bin 

  1. Klik kanan pada field Read Duration (bin) yang baru dibuat dan pilih opsi Read Duration in Days.
  2. Ubah Size of Bins menjadi 10. Ini akan membuat beberapa potongan data yang lebih kecil yang membantu kita membuat versi packed bubbles plot yang lebih halus. 

Mengedit Bins
Mengedit Bins

Kita telah melewati bagian tersulit, dan kini saatnya melihat hasil kerja kita. 

  1. Untuk membuat visualisasi sederhana, klik Show Me dan pilih opsi packed bubbles. Anda akan melihat lingkaran dengan satu warna dalam berbagai ukuran. 
  2. Untuk menambahkan warna, kita akan menyeret dan menjatuhkan field Read Duration ke opsi Color di panel Marks. 
  3. Ubah field warna menjadi Count (Distinct) dengan klik kanan pada field lalu pilih Measure > Count (Distinct). Ini akan memberi warna unik pada setiap bin atau label. 

Packed Bubbles Plot Satu Warna
Packed Bubbles Plot Satu Warna

  1. Klik opsi Color di panel Marks dan pilih Edit Colors… > Sunrise-Sunset Diverging. Anda dapat memilih gradasi warna apa pun yang sesuai selera. 
  2. Bagian terakhir adalah penyesuaian dan memastikan visualisasi Anda menarik serta menyampaikan pesan yang tepat.

Packed Bubbles Plot
Packed Bubbles Plot 

Butuh waktu kurang dari sehari bagi pengguna untuk menyelesaikan sebagian besar buku. Anda juga dapat melihat beberapa outlier di atas 300. 

Kita juga dapat membuat dashboard Tableau dengan menggabungkan visualisasi ini. Pelajari cara membuat dashboard Tableau dalam tutorial ini.

Kesimpulan

Dalam tutorial ini, kita mempelajari pentingnya Python dan cara menggunakannya dengan Tableau. Pada bagian pertama, kita mengekstrak data pengguna Goodreads menggunakan developer API dan mengonversi data XML menjadi dataframe Pandas yang bersih dan terstruktur. Pada bagian kedua, kita menggunakan data bersih untuk membuat visualisasi data sederhana dan kompleks. 

Kombinasi Python dengan Tableau membuka dunia kemungkinan baru. Anda dapat mengintegrasikan pipeline data, menerapkan model machine learning, menjalankan analisis statistik yang kompleks, dan melakukan berbagai tugas yang mustahil dijalankan di Tableau saja. 

Anda dapat menjalankan kode Python di DataLab secara gratis, dan DataLab sudah dilengkapi semua paket yang diperlukan untuk menjalankan contoh ini. Untuk membuat visualisasi Tableau, kami menggunakan versi gratis Tableau yang disebut Tableau Public.

Jika Anda baru di Python dan ingin mempelajari lebih lanjut tentang fungsionalitas dan sintaksisnya, lihat kursus Introduction to Data Science in Python. Selain itu, Anda dapat menguasai dasar-dasar visualisasi dan kustomisasi Tableau dengan mengikuti jalur keterampilan Tableau Fundamentals. Jalur ini terdiri dari 5 kursus yang mencakup pengantar Tableau, analisis data, membuat dashboard interaktif, mengerjakan studi kasus, dan menghubungkan beberapa sumber data.

Topik
Tableau
Visualisasi Data
Python

Kursus Tableau dan Python di DataCamp 

Kursus

Pengantar Python

4 jam
7.1M
Kuasai dasar-dasar analisis data dengan Python dalam 4 jam. Kursus online ini memperkenalkan antarmuka Python dan pustaka populer.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya