Son Görselleştirme ve Rapor Dışa Aktarma
Açıklamalı grafikler içeren çok panelli bir Matplotlib şekli oluşturun, PNG ve PDF olarak dışa aktarın ve yapılandırılmış bir özeti markdown dosyasına yazın.
Son Görselleştirme ve Rapor Dışa Aktarma, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
Nihai Teslim Edilebilir Çıktı
Bitirme projesinin son aşaması, hesaplanan KPI'ları özenli ve paylaşılabilir bir teslim edilebilir çıktıya dönüştürür: açıklamalar eklenmiş grafiklere sahip çok panelli bir Matplotlib şekli ve görselleştirme başvuruları içeren yapılandırılmış bir markdown raporu. Paydaşların gerçekten aldığı çıktı budur; açık görseller ve anlatı niteliğinde bir özet. İyi görselleştirme sayıları içgörülere dönüştürür; iyi rapor yapısı ise bu içgörüleri eyleme geçirilebilir kılar. Bu derste şekil mimarisi, açıklama ekleme, PNG/PDF'ye aktarma ve yapılandırılmış markdown oluşturma ele alınır.
Çok Panelli Şekli Oluşturma
Farklı boyutlarda panellere sahip bir şekil oluşturmak için figsize ve gridspec_kw ile birlikte plt.subplots() kullanın. Yaygın bir yönetici raporu yerleşimi şöyledir: üstte geniş bir eğilim grafiği, alt satırda ise bir elde tutma heatmap'i ve bölge çubuk grafiği. Her öğeyi elle biçimlendirmeden temiz ve profesyonel görünümlü grafikler elde etmek için baştan tutarlı bir stil belirleyin: plt.style.use('seaborn-v0_8-whitegrid').
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.style.use('seaborn-v0_8-whitegrid')
# 2x2 layout with custom row heights
fig = plt.figure(figsize=(16, 12))
gs = gridspec.GridSpec(2, 2,
height_ratios=[1, 1.2],
hspace=0.4, wspace=0.35)
ax_trend = fig.add_subplot(gs[0, :]) # full width top row
ax_heatmap = fig.add_subplot(gs[1, 0]) # bottom left
ax_bar = fig.add_subplot(gs[1, 1]) # bottom right
print('Figure with 3 panels created.')Panel 1: Aylık Gelir Eğilim Çizgisi
Toplam aylık geliri işaretçiler içeren bir çizgi olarak çizin, üzerine 3 aylık hareketli ortalamayı ekleyin ve gerçek çizginin altındaki alanı gölgelendirin. ax.annotate() kullanarak en yüksek ve en düşük ayları oklar ve metinlerle açıklayın. Bu, hikâyeyi anında anlatır: gelirin nerede en güçlü olduğunu, nerede düştüğünü ve uzun vadeli eğilimin pozitif olup olmadığını gösterir. Gerçek ve yumuşatılmış değerleri birbirinden ayıran, ancak birbiriyle çakışmayan renkler kullanın.
import pandas as pd
import matplotlib.pyplot as plt
monthly = pd.read_parquet('output/kpi_monthly_category_revenue.parquet')
monthly_total = monthly.sum(axis=1)
ax = plt.gca()
ax.plot(monthly_total.index, monthly_total.values,
marker='o', linewidth=2, color='#2196F3', label='Monthly Revenue')
ax.plot(monthly_total.index,
monthly_total.rolling(3, min_periods=1).mean().values,
linewidth=2, linestyle='--', color='#FF5722', label='3-Month Avg')
ax.fill_between(monthly_total.index, monthly_total.values, alpha=0.1, color='#2196F3')
# Annotate peak
peak_idx = monthly_total.idxmax()
ax.annotate(f'Peak: ${monthly_total[peak_idx]/1e3:.0f}K',
xy=(peak_idx, monthly_total[peak_idx]),
xytext=(0, 20), textcoords='offset points',
arrowprops=dict(arrowstyle='->', color='#E91E63'),
color='#E91E63', fontsize=10)
ax.set_title('Monthly Revenue Trend', fontsize=14, fontweight='bold')
ax.legend()
plt.show()Panel 2: Kohort Elde Tutma Heatmap'i
Seaborn kullanarak kohort elde tutma matrisini renk kodlu bir ısı haritası olarak görselleştirin. Değerleri, %100'ün (0. dönem) en parlak renkle, elde tutma oranındaki düşüşlerin ise giderek koyulaşan renklerle gösterileceği şekilde normalleştirin. Grafiği düzenli tutmak için NaN hücrelerini (henüz gerçekleşmemiş gelecek dönemleri) maskeleyin. Hızlı okunabilmesi için her hücreye yüzde değerini ekleyin. Bu grafik, müşteri sadakati örüntülerini anlamak için en değerli araçlardan biridir.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
retention = pd.read_parquet('output/kpi_cohort_retention.parquet')
fig, ax = plt.subplots(figsize=(10, 6))
sns.heatmap(
retention,
annot=True,
fmt='.0%',
cmap='YlOrRd_r',
mask=retention.isna(),
linewidths=0.5,
ax=ax,
cbar_kws={'label': 'Retention Rate'}
)
ax.set_title('Cohort Retention Matrix', fontsize=14, fontweight='bold')
ax.set_xlabel('Months After First Purchase')
ax.set_ylabel('Cohort Month')
plt.tight_layout()
plt.show()Panel 3: En İyi Bölgelerin Yatay Çubuk Grafiği
Yatay çubuk grafiği, bölge adlarını (y eksenindeki metin etiketlerini) gelire göre karşılaştırmak için idealdir. En iyi bölgenin üstte yer alması için çubukları azalan düzende sıralayın. ax.text() kullanarak her çubuğun sonuna gelir değerini ekleyin. Gelir payına dayalı, farklı yönlere doğru renklenen bir palet kullanın; en iyi bölge en koyu renkle gösterilsin. Bu grafik, coğrafi yoğunlaşmayı ve bölgesel performansı doğrudan ortaya koyar.
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
region_kpi = pd.read_parquet('output/kpi_region_summary.parquet')
top5 = region_kpi.head(5).sort_values('total_revenue')
fig, ax = plt.subplots(figsize=(8, 5))
colors = cm.Blues(np.linspace(0.4, 0.9, len(top5)))
bars = ax.barh(top5['region'], top5['total_revenue'], color=colors)
for bar, val in zip(bars, top5['total_revenue']):
ax.text(bar.get_width() * 1.01, bar.get_y() + bar.get_height()/2,
f'${val/1e3:.0f}K', va='center', fontsize=9)
ax.set_title('Top 5 Regions by Revenue', fontsize=13, fontweight='bold')
ax.set_xlabel('Total Revenue ($)')
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.tight_layout()
plt.show()Çok Panelli Şekli Kaydetme
Tamamlanan şekli iki biçimde dışa aktarın: sunumlara ve web raporlarına eklemek için PNG, yüksek çözünürlüklü baskı için PDF. Şeklin ekran çözünürlüğünde keskin görünmesini sağlamak için PNG'de dpi=150 veya daha yüksek bir değer kullanın. Şeklin kenarındaki etiketlerin kırpılmasını önlemek için bbox_inches='tight' parametresini iletin. Dosyayı proje kurulum aşamasında belirlenen çıktı klasörüne kaydedin.
import matplotlib.pyplot as plt
# After assembling all panels in the figure
fig.suptitle('2024 Sales Performance Report', fontsize=16,
fontweight='bold', y=1.02)
# Save as PNG (for web/presentations)
fig.savefig('output/report_figure.png',
dpi=150,
bbox_inches='tight',
facecolor='white')
# Save as PDF (for print)
fig.savefig('output/report_figure.pdf',
bbox_inches='tight',
facecolor='white')
print('Figures saved:')
print(' output/report_figure.png')
print(' output/report_figure.pdf')Yapılandırılmış Markdown Raporu Yazma
Yapılandırılmış bir markdown dosyasını program aracılığıyla yazarak metin raporunu oluşturun. Bir başlık, temel KPI'ları içeren yönetici özeti, her analiz bölümünden önemli bulgular ve kaydedilen şekil dosyalarına referanslar ekleyin. Raporu elle yazmak yerine koddan oluşturarak her çalıştırmada, gerçekte hesaplanan değerleri yansıtan yeni ve doğru bir rapor üretilmesini sağlarsınız. Hesaplanan sayıları doğrudan metne yerleştirmek için Python f-string'lerini kullanın.
import pandas as pd
from datetime import datetime
df = pd.read_parquet('output/analysis_ready.parquet')
region_kpi = pd.read_parquet('output/kpi_region_summary.parquet')
retention = pd.read_parquet('output/kpi_cohort_retention.parquet')
report = f'''
# 2024 Sales Performance Report
Generated: {datetime.now().strftime('%Y-%m-%d %H:%M')}
## Executive Summary
- **Total Revenue**: ${df['revenue'].sum():,.0f}
- **Total Orders**: {df['order_id'].nunique():,}
- **Unique Customers**: {df['customer_id'].nunique():,}
- **Top Region**: {region_kpi.iloc[0]['region']} (${region_kpi.iloc[0]['total_revenue']:,.0f})
- **Average Month-3 Retention**: {retention.get(3, pd.Series([0])).mean():.1%}
## Key Findings
1. Revenue grew steadily through the year with a peak in October.
2. The top region accounts for {region_kpi.iloc[0]['revenue_share']:.0%} of total revenue.
3. Month-3 cohort retention averages {retention.get(3, pd.Series([0])).mean():.1%}.
## Figures

'''
with open('output/report.md', 'w') as f:
f.write(report)
print('Report written to output/report.md')Graflara Açıklamalar Ekleme
Etkili grafikler, açıklamalar aracılığıyla bir hikâye anlatır. Önemli olayları (ürün lansmanı veya fiyat değişikliği gibi) işaretlemek için ax.axvline(), durgunluk dönemlerini gölgelendirmek için ax.axhspan() ve dikkat çekici veri noktalarını metin ve oklarla belirtmek için ax.annotate() kullanın. Eksenleri birimleriyle etiketleyin (ax.set_ylabel('Revenue ($)')), açıklayıcı bir başlık ekleyin, birden fazla Series gösterildiğinde gösterge ekleyin ve okunabilirlik için işaret etiketlerini ax.yaxis.set_major_formatter(FuncFormatter(...)) kullanarak biçimlendirin.
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import pandas as pd
monthly_total = pd.read_parquet('output/kpi_monthly_category_revenue.parquet').sum(axis=1)
fig, ax = plt.subplots(figsize=(12, 5))
ax.plot(monthly_total.index, monthly_total.values, linewidth=2.5, color='#1565C0')
# Format y-axis as $K
ax.yaxis.set_major_formatter(
mticker.FuncFormatter(lambda x, _: f'${x/1e3:.0f}K')
)
# Mark a hypothetical event
ax.axvline(x='2024-06', color='red', linestyle=':', alpha=0.6)
ax.text('2024-06', monthly_total.max() * 0.95,
' Campaign\n Launch', color='red', fontsize=9)
ax.set_title('Monthly Revenue 2024', fontsize=14, fontweight='bold')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()Veri Tablolarını Excel'e Dışa Aktarma
Bazı paydaşlar markdown raporları yerine Excel'i tercih eder. Birden fazla DataFrames'i tek bir Excel çalışma kitabındaki farklı sayfalara aktarmak için pd.ExcelWriter kullanın. Bu, verileri kendileri incelemek isteyen iş paydaşları için profesyonel bir teslimattır. Tabloları bir sayfa içinde düzenlemek için startrow ve startcol kullanın; en üst düzey sayıları içeren bir 'Summary' sayfasını ilk sekme olarak ekleyin.
import pandas as pd
region_kpi = pd.read_parquet('output/kpi_region_summary.parquet')
retention = pd.read_parquet('output/kpi_cohort_retention.parquet')
product_rank = pd.read_parquet('output/kpi_product_ranking.parquet')
with pd.ExcelWriter('output/sales_report_2024.xlsx', engine='openpyxl') as writer:
region_kpi.to_excel(writer, sheet_name='Region KPIs', index=False)
retention.to_excel(writer, sheet_name='Cohort Retention')
product_rank.head(50).to_excel(writer, sheet_name='Top 50 Products', index=False)
print('Excel workbook written: output/sales_report_2024.xlsx')Rapor Oluşturmayı Otomatikleştirme
Veri alma, temizleme, KPI hesaplama, görselleştirme ve rapor dışa aktarma aşamalarının tamamını, komut satırından çalıştırılabilen bir main() işlevi içinde birleştirin. Başlangıç ve bitiş zamanlarını, her aşamadaki satır sayılarını ve tespit edilen anormallikleri kaydetmek için Python'ın logging modülünü kullanın. Tek bir python pipeline.py komutuyla uçtan uca çalışan bir veri işleme hattı, cron, Airflow veya bulut zamanlayıcısı aracılığıyla zamanlanmış otomasyona hazırdır.
import logging
import time
from datetime import datetime
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s [%(levelname)s] %(message)s'
)
def main():
start = time.time()
logging.info('Pipeline started')
logging.info('Step 1: Data ingestion')
# load_and_merge() # returns df
logging.info('Step 2: Data cleaning')
# clean(df) # returns df_clean
logging.info('Step 3: KPI computation')
# compute_kpis(df_clean) # saves parquet files
logging.info('Step 4: Visualisation and report export')
# build_report() # saves PNG, PDF, markdown, Excel
elapsed = time.time() - start
logging.info(f'Pipeline complete in {elapsed:.1f}s')
if __name__ == '__main__':
main()Kursu Tamamlama ve Sonraki Adımlar
Veri Analizi: Pandas ve NumPy öğrenim yolunu tamamladınız. Artık şunları yapabilirsiniz: broadcasting ve doğrusal cebir kullanarak NumPy dizileri oluşturup dönüştürmek, herhangi bir veri kaynağından Pandas DataFrames oluşturup bunları işlemek, gerçek dünya veri kümelerini temizlemek, yeniden şekillendirmek ve toplulaştırmak, Matplotlib ve Seaborn ile yayın kalitesinde görselleştirmeler oluşturmak, SciPy ile istatistiksel sınamalar uygulamak, parçalama ve Dask ile büyük veri kümelerine ölçeklenmek, Pandas'ı SQL veritabanlarıyla bütünleştirmek ve yeniden üretilebilir uçtan uca veri işleme hatları tasarlamak. Bu beceriler, sektördeki veri odaklı her rolün temelini oluşturur.
Hızlı Kontrol
Bu dersteki Veri Analizi kavramlarını anlayıp anlamadığınızı sınayın.
Ders Özeti
Bu son derste şunları öğrendiniz: GridSpec içeren çok panelli Matplotlib şekilleri, birden fazla grafik türünü birleştiren profesyonel rapor düzenleri oluşturur; açıklamalar (axvline, annotate, text), grafiklere anlatı bağlamı katar; main() işlevindeki otomatik rapor oluşturma (markdown, Excel, PNG, PDF), veri işleme hattının zamanlanabilir ve yeniden üretilebilir olmasını sağlar. Pandas ve NumPy öğrenim yolunu tamamladığınız için tebrikler — artık gerçek dünya veri analizi sorunlarıyla başa çıkmaya hazırsınız!
Yapay zeka eğitmeniyle Python öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“Son Görselleştirme ve Rapor Dışa Aktarma” dersi ücretsiz mi?
Evet — “Son Görselleştirme ve Rapor Dışa Aktarma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
“Son Görselleştirme ve Rapor Dışa Aktarma” dersinde ne öğreneceğim?
Açıklamalı grafikler içeren çok panelli bir Matplotlib şekli oluşturun, PNG ve PDF olarak dışa aktarın ve yapılandırılmış bir özeti markdown dosyasına yazın. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Son Görselleştirme ve Rapor Dışa Aktarma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Proje Kurulumu ve Veri Alma
- Veri Temizleme ve Özellik Mühendisliği
- Analiz ve KPI Hesaplama
- Son Görselleştirme ve Rapor Dışa Aktarma