Pandas & NumPy Academy · Pelajaran

Visualisasi Tren Bulanan

Plot pendapatan bulanan sebagai diagram garis, tumpangkan rata-rata bergerak 3 bulan, dan beri anotasi pada bulan dengan puncak serta titik terendah.

Pelajaran 4 dari 413 langkah

Visualisasi Tren Bulanan adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Menghitung Total Pendapatan Bulanan

Sebelum membuat plot, agregasikan DataFrame penjualan menjadi total bulanan. Kelompokkan berdasarkan kolom Period year_month dan jumlahkan pendapatan. Konversi PeriodIndex menjadi DatetimeIndex dengan .to_timestamp() agar pemformat tanggal Matplotlib menampilkan label penanda dengan benar. Pengurutan berdasarkan indeks memastikan diagram garis bergerak dari kiri ke kanan secara kronologis.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_parquet('sales_features.parquet')

monthly = df.groupby('year_month')['revenue'].sum().sort_index()
monthly.index = monthly.index.to_timestamp()
print(monthly.head())

Membuat Diagram Garis Pendapatan Bulanan

Buat Figure dan Axes dengan plt.subplots(figsize=(12, 5)), lalu panggil ax.plot() untuk menggambar tren pendapatan bulanan. Gunakan marker='o' untuk menempatkan titik pada setiap bulan agar titik data individual tetap terlihat meskipun garisnya halus. Atur warna dan lebar garis agar tren utama lebih menonjol daripada lapisan lain yang mungkin Anda tambahkan nanti.

fig, ax = plt.subplots(figsize=(12, 5))

ax.plot(monthly.index, monthly.values,
        color='steelblue', linewidth=2, marker='o', markersize=5,
        label='Monthly Revenue')

ax.set_title('Monthly Revenue Trend')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue (USD)')
plt.tight_layout()
plt.show()

Menambahkan Rata-Rata Bergerak 3 Bulan

Garis pendapatan bulanan mentah dapat tampak bergerigi akibat gangguan musiman. Tambahkan rata-rata bergerak 3 bulan yang dihitung dengan monthly.rolling(3).mean() untuk menampilkan tren dasarnya dengan lebih jelas. Buat sebagai garis putus-putus dengan warna kontras agar menonjol dari deret mentah tanpa menutupinya.

rolling_avg = monthly.rolling(3).mean()

ax.plot(rolling_avg.index, rolling_avg.values,
        color='darkorange', linewidth=2, linestyle='--',
        label='3-Month Moving Avg')

ax.legend()
plt.show()

Memberi Anotasi pada Bulan Puncak

Gunakan ax.annotate() untuk menandai bulan dengan pendapatan tertinggi. Temukan puncaknya dengan monthly.idxmax() dan nilainya dengan monthly.max(). Panah anotasi mengarah dari label teks ke titik data puncak, sehingga wawasan tersebut langsung terlihat oleh siapa pun yang membaca diagram, termasuk mereka yang menerimanya dalam format PNG atau PDF.

peak_date = monthly.idxmax()
peak_val = monthly.max()

ax.annotate(f'Peak: ${peak_val:,.0f}',
            xy=(peak_date, peak_val),
            xytext=(peak_date, peak_val * 1.1),
            arrowprops=dict(arrowstyle='->', color='red'),
            color='red', fontsize=10)
plt.show()

Memberi Anotasi pada Bulan Terendah

Demikian pula, tandai bulan dengan pendapatan terendah menggunakan monthly.idxmin() untuk menandai kemungkinan pola musiman atau gangguan. Anotasi pada titik tertinggi dan terendah memberikan gambaran yang lengkap: pemangku kepentingan dapat melihat bukan hanya bulan terbaik, tetapi juga seberapa jauh pendapatan dapat menurun, sehingga membantu perencanaan arus kas.

trough_date = monthly.idxmin()
trough_val = monthly.min()

ax.annotate(f'Trough: ${trough_val:,.0f}',
            xy=(trough_date, trough_val),
            xytext=(trough_date, trough_val * 0.85),
            arrowprops=dict(arrowstyle='->', color='navy'),
            color='navy', fontsize=10)
plt.show()

Memformat Label Tanda Skala Tanggal

Label tanda skala tanggal bawaan Matplotlib sering saling bertumpuk atau menggunakan format yang sulit dibaca. Impor mdates dari matplotlib, lalu tetapkan MonthLocator dan DateFormatter untuk mengatur frekuensi tanda skala dan format label. Memutar label tanda skala sebesar 45 derajat mencegahnya bertumpuk pada sumbu 12 bulan.

import matplotlib.dates as mdates

ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))

plt.xticks(rotation=45, ha='right')
plt.tight_layout()
plt.show()

Menambahkan Wilayah Berarsir untuk Q4

Sorot periode Q4 (Oktober–Desember) dengan latar belakang berarsir menggunakan ax.axvspan(). Dengan demikian, pola musiman dapat langsung terlihat: jika titik tertinggi secara konsisten berada di dalam area berarsir, Q4 merupakan periode penjualan penting yang layak menjadi sasaran promosi. Parameter alpha mengatur transparansi arsiran.

import datetime

q4_start = datetime.datetime(2023, 10, 1)
q4_end = datetime.datetime(2023, 12, 31)

ax.axvspan(q4_start, q4_end, alpha=0.15, color='gold', label='Q4')
ax.legend()
plt.show()

Membuat Grafik Pendapatan per Kategori dari Waktu ke Waktu

Buat grafik multi-garis, dengan setiap garis mewakili satu kategori produk. Putar DataFrame bulanan berdasarkan kategori sehingga kolomnya menjadi kategori dan indeksnya menjadi waktu, lalu lakukan iterasi pada kolom dan panggil ax.plot() untuk setiap kolom. Matplotlib secara otomatis menetapkan warna yang berbeda untuk setiap garis saat dipanggil berulang kali pada Axes yang sama.

monthly_cat = df.groupby(['year_month', 'category'])['revenue'].sum().unstack('category')
monthly_cat.index = monthly_cat.index.to_timestamp()

fig, ax = plt.subplots(figsize=(12, 6))
for col in monthly_cat.columns:
    ax.plot(monthly_cat.index, monthly_cat[col], label=col, linewidth=1.5)

ax.legend(loc='upper left', fontsize=8)
ax.set_title('Monthly Revenue by Category')
plt.tight_layout()
plt.show()

Grafik Batang Bertumpuk untuk Pendapatan Bulanan

Grafik batang bertumpuk menampilkan total pendapatan bulanan sekaligus memperlihatkan kontribusi setiap kategori terhadap tumpukan tersebut. Gunakan monthly_cat.plot(kind='bar', stacked=True, ax=ax) langsung pada DataFrame yang telah diputar. Batang bertumpuk paling sesuai jika Anda memiliki kurang dari enam kategori; jika lebih, warna akan sulit dibedakan.

fig, ax = plt.subplots(figsize=(12, 5))

monthly_cat.plot(kind='bar', stacked=True, ax=ax, colormap='tab10')

ax.set_title('Monthly Revenue by Category (Stacked)')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue')
ax.legend(loc='upper left', fontsize=8)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

Tingkat Pertumbuhan dari Bulan ke Bulan

Buat grafik tingkat pertumbuhan persentase dari bulan ke bulan di samping pendapatan untuk memberikan konteks: batang yang tampak kecil pada Januari mungkin menunjukkan lonjakan pertumbuhan sebesar 20 % dari bulan sebelumnya. Hitung pertumbuhan dengan monthly.pct_change() * 100, lalu tampilkan pada sumbu y sekunder menggunakan ax.twinx() agar berbagi sumbu x yang sama tanpa mencampur satuan.

growth = monthly.pct_change() * 100

fig, ax1 = plt.subplots(figsize=(12, 5))
ax2 = ax1.twinx()

ax1.bar(monthly.index, monthly.values, width=20, color='steelblue', alpha=0.6, label='Revenue')
ax2.plot(growth.index, growth.values, color='red', marker='o', label='MoM Growth %')

ax1.set_ylabel('Revenue')
ax2.set_ylabel('MoM Growth %')
plt.title('Revenue and Month-over-Month Growth')
plt.tight_layout()
plt.show()

Menyimpan Gambar untuk Laporan

Gunakan fig.savefig('monthly_trend.png', dpi=150, bbox_inches='tight') untuk menghasilkan PNG beresolusi tinggi yang sesuai untuk presentasi atau dasbor web. Argumen bbox_inches='tight' memangkas ruang putih berlebih, sedangkan dpi=150 menghasilkan gambar yang tajam tanpa ukuran file yang terlalu besar. Simpan juga dalam format PDF untuk laporan berkualitas cetak.

fig.savefig('monthly_trend.png', dpi=150, bbox_inches='tight')
fig.savefig('monthly_trend.pdf', bbox_inches='tight')
print('Figure saved as PNG and PDF')

Pemeriksaan Singkat

Uji pemahaman Anda tentang konsep Analisis Data dari pelajaran ini.

Rangkuman Pelajaran

Dalam pelajaran ini, Anda mempelajari: menghitung total pendapatan bulanan dan menampilkannya sebagai grafik garis, menambahkan rata-rata bergerak serta memberi anotasi pada bulan dengan titik tertinggi dan terendah, dan menyimpan gambar berkualitas publikasi dalam format PNG dan PDF. Selanjutnya, kita akan mempelajari pembentukan sesi dan pengurutan kejadian dalam data perilaku pengguna.

Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Visualisasi Tren Bulanan” gratis?

Ya — teks lengkap “Visualisasi Tren Bulanan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Visualisasi Tren Bulanan”?

Plot pendapatan bulanan sebagai diagram garis, tumpangkan rata-rata bergerak 3 bulan, dan beri anotasi pada bulan dengan puncak serta titik terendah. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?

Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Visualisasi Tren Bulanan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Memuat dan Mengaudit Dataset Penjualan
  2. Perhitungan Pendapatan dan Rekayasa Fitur
  3. Analisis GroupBy berdasarkan Wilayah dan Kategori
  4. Visualisasi Tren Bulanan
← Kembali ke Pandas & NumPy Academy