Pandas & NumPy Academy · Pelajaran

Visualisasi Trend Bulanan

Plotkan hasil bulanan sebagai carta garis, tindankan purata bergerak 3 bulan dan anotasi bulan puncak serta bulan terendah.

Pelajaran 4 daripada 413 langkah

Visualisasi Trend Bulanan ialah pelajaran Pandas & NumPy Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pandas & NumPy Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pandas & NumPy Academy merangkumi sejumlah 4 pelajaran.

Mengira Jumlah Hasil Bulanan

Sebelum melukis carta, agregatkan DataFrame jualan kepada jumlah bulanan. Kelompokkan mengikut lajur Period year_month dan jumlahkan hasil. Tukarkan PeriodIndex kepada DatetimeIndex dengan .to_timestamp() supaya pemformat tarikh Matplotlib memaparkan label tanda dengan betul. Mengisih mengikut indeks memastikan carta garis bergerak dari kiri ke kanan mengikut kronologi.

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())

Melukis Carta Garis Hasil Bulanan

Cipta Figure dan Axes dengan plt.subplots(figsize=(12, 5)) dan panggil ax.plot() untuk melukis arah aliran hasil bulanan. Gunakan marker='o' untuk meletakkan titik pada setiap bulan supaya titik data individu kelihatan walaupun garisnya licin. Tetapkan warna dan lebar garis supaya arah aliran utama lebih menonjol daripada lapisan tambahan yang anda tambahkan kemudian.

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()

Menindihkan Purata Bergerak 3 Bulan

Garis hasil bulanan mentah boleh kelihatan berlekuk-lekuk akibat turun naik bermusim. Tindihkan purata bergerak 3 bulan yang dikira dengan monthly.rolling(3).mean() untuk menunjukkan arah aliran asas dengan lebih jelas. Lukiskannya sebagai garis putus-putus dalam warna berbeza supaya mudah dibezakan daripada siri mentah tanpa mengaburkannya.

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()

Menganotasi Bulan Kemuncak

Gunakan ax.annotate() untuk menandakan bulan dengan hasil tertinggi. Cari kemuncak menggunakan monthly.idxmax() dan nilainya menggunakan monthly.max(). Anak panah anotasi menghala dari label teks ke titik data kemuncak, menjadikan dapatan itu terus kelihatan kepada mana-mana pembaca carta, termasuk mereka yang menerimanya sebagai 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()

Menganotasi Bulan Terendah

Begitu juga, tandakan bulan dengan hasil terendah menggunakan monthly.idxmin() untuk mengenal pasti kemungkinan corak bermusim atau gangguan. Anotasi pada bulan puncak dan bulan terendah memberikan gambaran yang lengkap: anotasi ini membolehkan pihak berkepentingan melihat bukan sahaja bulan terbaik, tetapi juga sejauh mana hasil boleh merosot, yang membantu perancangan aliran tunai.

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 Tarikh

Label tanda tarikh lalai Matplotlib sering bertindih atau menggunakan format yang sukar dibaca. Import mdates daripada matplotlib, kemudian tetapkan MonthLocator dan DateFormatter untuk mengawal kekerapan tanda serta format label. Memutarkan label tanda sebanyak 45 darjah mengelakkan pertindihan pada paksi 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()

Menambah Rantau Berlorek untuk Q4

Serlahkan tempoh Q4 (Oktober–Disember) dengan latar belakang berlorek menggunakan ax.axvspan(). Ini menjadikan corak bermusim kelihatan dengan serta-merta: jika puncak sentiasa berada dalam kawasan berlorek, Q4 ialah tempoh jualan utama yang wajar disasarkan dengan promosi. Parameter alpha mengawal ketelusan lorekan.

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()

Memplot Hasil Mengikut Kategori Mengikut Masa

Cipta carta berbilang garis yang setiap garisnya mewakili satu kategori produk. Pivotkan DataFrame bulanan mengikut kategori supaya lajur mewakili kategori dan indeks mewakili masa, kemudian ulangi setiap lajur dan panggil ax.plot() untuk setiap satunya. Matplotlib menetapkan warna yang berbeza secara automatik bagi setiap garis apabila 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()

Carta Bar Bertindan untuk Hasil Bulanan

Carta bar bertindan menunjukkan jumlah hasil bulanan dan pada masa yang sama mendedahkan sumbangan setiap kategori kepada tindanan tersebut. Gunakan monthly_cat.plot(kind='bar', stacked=True, ax=ax) secara terus pada DataFrame yang telah dipivotkan. Bar bertindan paling sesuai apabila terdapat kurang daripada enam kategori; jika tidak, warna akan menjadi sukar untuk dibezakan.

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()

Kadar Pertumbuhan Bulan ke Bulan

Plotkan kadar pertumbuhan peratusan bulan ke bulan bersama-sama hasil untuk memberikan konteks: bar yang kelihatan kecil pada bulan Januari mungkin mewakili lonjakan pertumbuhan sebanyak 20% berbanding bulan sebelumnya. Kira pertumbuhan dengan monthly.pct_change() * 100 dan plotkan pada paksi-y kedua menggunakan ax.twinx() supaya berkongsi paksi-x yang sama tanpa mencampuradukkan unit.

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 Rajah untuk Laporan

Gunakan fig.savefig('monthly_trend.png', dpi=150, bbox_inches='tight') untuk menghasilkan PNG beresolusi tinggi yang sesuai bagi pembentangan slaid atau papan pemuka web. Argumen bbox_inches='tight' memangkas ruang putih berlebihan, manakala dpi=150 menghasilkan imej yang tajam tanpa fail yang terlalu besar. Simpan juga sebagai PDF untuk laporan berkualiti cetakan.

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')

Semakan Pantas

Uji pemahaman anda tentang konsep Analisis Data daripada pelajaran ini.

Rumusan Pelajaran

Dalam pelajaran ini, anda telah mempelajari: mengira jumlah hasil bulanan dan memplotkannya sebagai carta garis, melapiskan purata bergerak serta menganotasi bulan puncak dan bulan terendah, dan menyimpan rajah berkualiti penerbitan dalam format PNG dan PDF. Seterusnya, kita akan meneroka pembentukan sesi dan penjujukan peristiwa dalam data tingkah laku pengguna.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Visualisasi Trend Bulanan” percuma?

Ya — teks penuh “Visualisasi Trend Bulanan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Pandas & NumPy Academy, tingkat taraf kepada CoddyKit PRO. Kursus Pandas & NumPy Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Visualisasi Trend Bulanan”?

Plotkan hasil bulanan sebagai carta garis, tindankan purata bergerak 3 bulan dan anotasi bulan puncak serta bulan terendah. Anda berlatih Pandas & NumPy Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pandas & NumPy Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pandas & NumPy Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Visualisasi Trend Bulanan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Memuatkan dan Mengaudit Set Data Jualan
  2. Pengiraan Hasil dan Kejuruteraan Ciri
  3. Analisis GroupBy Mengikut Wilayah dan Kategori
  4. Visualisasi Trend Bulanan
← Kembali ke Pandas & NumPy Academy