Analisis dan visualisasi

Menyelesaikan proyek analisis dari EDA sampai grafik akhir dengan pertanyaan yang jelas.

Daftar isi

Analisis yang berangkat dari pertanyaan yang jelas berakhir pada jawaban yang dapat diperiksa. Topik ini menuntaskan proyek analisis perpustakaan dari data bersih hasil pembersihan, dimulai dari pernyataan pertanyaan, eksplorasi singkat (exploratory data analysis, EDA), agregasi per bulan dan kategori, sampai grafik akhir yang beranotasi. Setiap langkah menyertakan kode beserta keluaran aslinya, sehingga seluruh proyek dapat diulang dari datanya. Setelah topik ini, alur dari pertanyaan sampai temuan dapat diterapkan pada dataset lain yang sudah bersih.

Pertanyaan analisis dan data bersih#

Setiap proyek analisis dimulai dari satu pertanyaan yang jelas, karena pertanyaan itulah yang menentukan data yang diperlukan, tabel yang dihitung, dan grafik yang digambar. Pertanyaan proyek ini berbunyi: “Kategori buku apa yang paling memadatkan peminjaman, dan kapan puncaknya?” Pertanyaan itu menyebut ukuran yang terukur, yaitu jumlah peminjaman, beserta dua dimensi yang dicari, yaitu kategori dan waktu. Pertanyaan yang lebih kabur, misalnya “bagaimana kondisi peminjaman”, akan menghasilkan analisis yang sama kaburnya.

Data yang menjawabnya berupa berkas peminjaman-bersih.csv hasil pipeline pembersihan, dan berkas itu tersedia di folder topik ini. Kolom yang relevan berupa tanggal_pinjam dan kategori, sedangkan kolom nama, judul, dan lama_hari menjadi konteks tambahan bila dibutuhkan. Pertanyaan juga dibatasi pada data yang tersedia, karena pertanyaan tentang harga buku atau pengarangnya tidak dapat dijawab oleh kolom yang ada.

csv peminjaman-bersih.csv
tanggal_pinjam,nama,kategori,judul,lama_hari
2026-08-04,Ali,Sains,Ensiklopedia Sains,6
2026-08-04,Budi,Sains,Atlas Tubuh Manusia,7
2026-08-19,Budi,Sejarah,Sejarah Kerajaan Nusantara,9
2026-09-02,Citra,Sains,Eksperimen Sederhana,8
2026-09-10,Dewi,Sejarah,Jalur Rempah Nusantara,8
2026-09-23,Dewi,Fiksi,Kumpulan Dongeng Nusantara,12
2026-10-01,Citra,Fiksi,Petualangan di Pulau Tengah,10
2026-10-14,Budi,Fiksi,Cerita Legenda Gunung,11
2026-11-03,Dewi,Sains,Atlas Tubuh Manusia,7
2026-11-12,Citra,Sains,Eksperimen Sederhana,5
2026-11-20,Ali,Sains,Kamus Biologi,10
2026-11-28,Dewi,Sejarah,Sejarah Kerajaan Nusantara,8
2026-12-02,Ali,Fiksi,Cerita Legenda Gunung,8
python Memuat data bersih proyek
import pandas as pd

pinjam = pd.read_csv("peminjaman-bersih.csv")
pinjam["tanggal_pinjam"] = pd.to_datetime(pinjam["tanggal_pinjam"])

print(pinjam.shape)
print(pinjam["tanggal_pinjam"].min().date(), "sampai", pinjam["tanggal_pinjam"].max().date())
print()
print(pinjam)
text Keluaran
(13, 5)
2026-08-04 sampai 2026-12-02

   tanggal_pinjam   nama kategori                        judul  lama_hari
0      2026-08-04    Ali    Sains           Ensiklopedia Sains          6
1      2026-08-04   Budi    Sains          Atlas Tubuh Manusia          7
2      2026-08-19   Budi  Sejarah   Sejarah Kerajaan Nusantara          9
3      2026-09-02  Citra    Sains         Eksperimen Sederhana          8
4      2026-09-10   Dewi  Sejarah       Jalur Rempah Nusantara          8
5      2026-09-23   Dewi    Fiksi   Kumpulan Dongeng Nusantara         12
6      2026-10-01  Citra    Fiksi  Petualangan di Pulau Tengah         10
7      2026-10-14   Budi    Fiksi        Cerita Legenda Gunung         11
8      2026-11-03   Dewi    Sains          Atlas Tubuh Manusia          7
9      2026-11-12  Citra    Sains         Eksperimen Sederhana          5
10     2026-11-20    Ali    Sains                Kamus Biologi         10
11     2026-11-28   Dewi  Sejarah   Sejarah Kerajaan Nusantara          8
12     2026-12-02    Ali    Fiksi        Cerita Legenda Gunung          8

Keluarannya menegaskan 13 catatan peminjaman dari 2026-08-04 sampai 2026-12-02, bersih dari duplikat dan sel kosong. Kolom tanggal diubah kembali menjadi tipe tanggal karena berkas CSV menyimpannya sebagai teks. Ukuran data yang kecil memudahkan pemeriksaan mata, tetapi seluruh langkah tetap dijalankan melalui kode agar dapat diulang pada data yang lebih besar.

Eksplorasi ringkas#

EDA memeriksa bentuk dasar data sebelum grafik akhir dirancang. Dua pemeriksaan eksplorasinya berupa perhitungan jumlah peminjaman per kategori dan ringkasan sebaran lama pinjam, dan keduanya dijawab oleh satu blok berikut.

python Eksplorasi kategori dan lama pinjam
import pandas as pd

pinjam = pd.read_csv("peminjaman-bersih.csv")

print(pinjam["kategori"].value_counts())
print()
print(pinjam["lama_hari"].describe())
text Keluaran
kategori
Sains      6
Fiksi      4
Sejarah    3
Name: count, dtype: int64

count    13.000000
mean      8.384615
std       1.980676
min       5.000000
25%       7.000000
50%       8.000000
75%      10.000000
max      12.000000
Name: lama_hari, dtype: float64

Kategori Sains unggul dengan enam catatan, disusul Fiksi dengan empat dan Sejarah dengan tiga, sedangkan lama pinjam berkisar 5 sampai 12 hari dengan nilai tengah 8 hari. Angka-angka ini belum menjadi jawaban, karena pertanyaan proyek menuntut dimensi waktu. Eksplorasi ini tetap berguna, yaitu memastikan data cukup beragam untuk dianalisis dan tidak ada keanehan yang tersisa dari pembersihan.

Agregasi per bulan dan kategori#

Pertanyaan proyek menyatukan dua dimensi, sehingga data dirangkum ke dalam tabel silang bulan dan kategori. Fungsi crosstab menghitung frekuensi setiap pasangan bulan dan kategori, lalu total per bulan dijumlahkan untuk menemukan puncaknya. Bulan dinyatakan sebagai angka kalender agar urutannya menaik secara alami.

python Tabel silang peminjaman per bulan dan kategori
import pandas as pd

pinjam = pd.read_csv("peminjaman-bersih.csv")
pinjam["tanggal_pinjam"] = pd.to_datetime(pinjam["tanggal_pinjam"])
pinjam["bulan"] = pinjam["tanggal_pinjam"].dt.month

tabel = pd.crosstab(pinjam["bulan"], pinjam["kategori"])
print(tabel)
print()
print("total per bulan:")
print(tabel.sum(axis=1))
text Keluaran
kategori  Fiksi  Sains  Sejarah
bulan                          
8             0      2        1
9             1      1        1
10            2      0        0
11            0      3        1
12            1      0        0

total per bulan:
bulan
8     3
9     3
10    2
11    4
12    1
dtype: int64

November menjadi bulan dengan total tertinggi, yaitu empat peminjaman, dan tiga di antaranya berasal dari kategori Sains. Sepanjang semester, Sains memimpin dengan enam peminjaman dibandingkan dengan empat pada Fiksi dan tiga pada Sejarah. Tabel inilah bahan langsung grafik akhir, sehingga grafik tidak menghitung ulang apa pun, melainkan menggambar tabel yang sama.

Grafik akhir yang beranotasi#

Grafik akhir menerjemahkan tabel agregasi menjadi satu pesan yang menjawab pertanyaan proyek. Grafik batang berkelompok dipilih karena membandingkan tiga kategori pada setiap bulan sekaligus, sedangkan anotasi menyorot puncak November. Judulnya menyatakan temuan, bukan nama variabelnya.

python grafik-akhir.py
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import pandas as pd

pinjam = pd.read_csv("peminjaman-bersih.csv")
pinjam["tanggal_pinjam"] = pd.to_datetime(pinjam["tanggal_pinjam"])
pinjam["bulan"] = pinjam["tanggal_pinjam"].dt.month

label_bulan = {8: "Agu", 9: "Sep", 10: "Okt", 11: "Nov", 12: "Des"}
tabel = pd.crosstab(pinjam["bulan"], pinjam["kategori"])

kategori = ["Sains", "Fiksi", "Sejarah"]
warna = {"Sains": "#3b6ea5", "Fiksi": "#e0a458", "Sejarah": "#7aa874"}
posisi = range(len(tabel.index))
lebar = 0.26

fig, ax = plt.subplots()
for i, kat in enumerate(kategori):
    ax.bar([p + i * lebar for p in posisi], tabel[kat], width=lebar,
           label=kat, color=warna[kat])

ax.set_xticks([p + lebar for p in posisi])
ax.set_xticklabels([label_bulan[b] for b in tabel.index])
ax.set_xlabel("Bulan")
ax.set_ylabel("Jumlah peminjaman")
ax.set_yticks([0, 1, 2, 3, 4])
ax.set_ylim(0, 5)
ax.set_title("Peminjaman memuncak pada November dan dipimpin kategori Sains")
ax.legend(title="Kategori", loc="upper left")
ax.annotate("Puncak November: 4 peminjaman,\n3 di antaranya kategori Sains",
            xy=(3 + lebar, 3), xytext=(2.6, 4.05), va="bottom",
            arrowprops={"arrowstyle": "->", "color": "dimgray"})
plt.savefig("grafik-akhir.png", dpi=120)
print("Grafik tersimpan: grafik-akhir.png")
text Keluaran
Grafik tersimpan: grafik-akhir.png

Grafik batang berkelompok peminjaman per bulan dan kategori dengan anotasi puncak November
Grafik batang berkelompok peminjaman per bulan dan kategori dengan anotasi puncak November

Batas sumbu vertikal ditetapkan 0 sampai 5 dengan garis skala bulat, karena data berupa hitungan yang tidak memiliki nilai pecahan. Anotasi ditempatkan pada ruang kosong bagian atas dengan panah menuju batang Sains November, dan legenda menyebut ketiga kategorinya. Gambar tersimpan sebagai grafik-akhir.png di folder topik ini, siap disisipkan ke laporan atau notebook.

Pilihan bentuknya juga mengikuti pertanyaannya. Grafik garis hanya menampilkan total per bulan dan menyembunyikan komposisi kategorinya, sedangkan grafik batang bertumpuk menyulitkan perbandingan Fiksi dan Sejarah yang nilainya kecil. Batang berkelompok mempertahankan ketiga kategori pada setiap bulan, sehingga puncak November beserta penyumbang utamanya terbaca sekaligus. Apabila pertanyaan proyeknya hanya total peminjaman per bulan, grafik garis sederhana justru menjadi pilihan yang lebih ringkas.

Temuan dan catatan kehati-hatian#

Jawaban atas pertanyaan proyek terbaca dari tabel dan grafik yang sama. Peminjaman memuncak pada November dengan empat catatan, sedangkan kategori Sains paling menonjol sepanjang semester dengan enam dari tiga belas peminjaman, termasuk tiga dari empat peminjaman pada November. Kalimat keputusannya berbunyi: “Pengadaan dan pameran koleksi Sains paling berguna dijadwalkan sebelum November.”

Temuan ini menyertakan batasnya. Data berupa 13 catatan dari satu semester di satu perpustakaan, sehingga polanya layak diperiksa ulang dengan data beberapa tahun sebelum menjadi dasar keputusan pengadaan yang besar. Puncak November juga baru menunjukkan hubungan waktu, bukan sebab, karena kenaikannya dapat dipicu oleh ujian, program perpustakaan, atau faktor lain yang tidak terekam. Ketiga catatan ini ditulis di dekat temuannya, bukan disembunyikan.

Ringkasan#

  • Pertanyaan yang jelas menentukan data, tabel, dan grafik yang dibutuhkan proyek analisis.
  • EDA memeriksa bentuk dasar data sebelum agregasi, dan tabel silang bulan-kategori menjadi bahan langsung grafik akhir.
  • Grafik akhir menyatakan satu temuan lewat judul, anotasi, dan skala sumbu yang sesuai jenis datanya.
  • Temuan disertai batas data dan peringatan hubungan-bukan-sebab di dekat temuannya.

Referensi#