Klarvo.

Python ile veri analizi: Her hafta elle hazırlanan Excel raporunu otomatikleştirin

Yazar: Atalay Deveci · Yayın 12 Ekim 2026 · 3 dk okuma

▶ Kısa cevap

Her hafta elle hazırlanan bir Excel raporu, Python'un ücretsiz pandas kütüphanesiyle yaklaşık 25 satırlık bir koda dönüştürülebilir. Kod veriyi okur, temizler, özetler ve yeni bir Excel dosyasına yazar. Sonra işletim sisteminin zamanlayıcısıyla her hafta kendiliğinden çalışır.

Önce hesabı yapın: Bu rapor size kaça mal oluyor?

Otomasyona başlamadan önce elle hazırlanan raporların yılda kaç saate mal olduğunu görün. Hesap basittir: Rapor başına süreyi, kaç kişinin uğraştığını ve yılda kaç kez tekrarlandığını çarpın. Bunu Manuel Raporlama Maliyeti aracı ile tarayıcınızda iki dakikada hesaplayın.

Yıllık saat = Σ (rapor başına saat × kişi sayısı × yıllık tekrar)

  • Rapor başına saat: raporu bir kez hazırlamak için harcanan süre
  • Kişi sayısı: rapora emek veren çalışan sayısı
  • Yıllık tekrar: haftalık rapor için 52, aylık rapor için 12
Yıllık maliyeti bulmak için sonucu çalışanın saatlik maliyetiyle çarpın.

Neye ihtiyacınız var?

Excel raporu otomasyonu için gereken ücretsiz araçlar
AraçNe işe yararÜcret
Python 3Kodu çalıştıran programlama diliÜcretsiz, açık kaynak
pandasTabloları okur, temizler, özetler [1]Ücretsiz, açık kaynak
openpyxlpandas'ın .xlsx dosyası okuyup yazmasını sağlar [5]Ücretsiz, açık kaynak
Görev Zamanlayıcı ya da cronKodu her hafta otomatik çalıştırır [6][7]İşletim sistemiyle gelir

Kurulum için Python'u yükledikten sonra komut satırında pip install pandas openpyxl komutunu çalıştırmanız yeterlidir.

Adım adım: 25 satırlık rapor kodu

Örnekte ERP'den her hafta alınan bir satış dosyası kullanılıyor; dosyada Tarih, Bölge, Ürün, Adet ve Tutar sütunları bulunuyor. Hedef, bölgelere göre aylık satış tablosunu ve en çok satan 10 ürünü içeren bir rapor üretmektir. Kodu kendi sütun adlarınıza göre uyarlayın.

import pandas as pd

# 1) Oku
df = pd.read_excel("satislar.xlsx")
# CSV ise: df = pd.read_csv("satislar.csv", sep=";", decimal=",", encoding="cp1254")

# 2) Temizle
df["Tarih"] = pd.to_datetime(df["Tarih"], dayfirst=True)
df = df.dropna(subset=["Tutar"]).drop_duplicates()

# 3) Özetle
df["Ay"] = df["Tarih"].dt.to_period("M").astype(str)
bolge_ay = df.pivot_table(index="Bölge", columns="Ay", values="Tutar", aggfunc="sum", fill_value=0)
ilk10 = (
    df.groupby("Ürün", as_index=False)["Tutar"].sum()
    .sort_values("Tutar", ascending=False)
    .head(10)
)

# 4) Yaz
with pd.ExcelWriter("haftalik_rapor.xlsx") as yazici:
    bolge_ay.to_excel(yazici, sheet_name="Bölge x Ay")
    ilk10.to_excel(yazici, sheet_name="İlk 10 ürün", index=False)

1. Okuma

read_excel Excel dosyasını bir tabloya (DataFrame) dönüştürür [2]. Dosyanız CSV ise read_csv kullanın [3]. Türkiye'deki eski sistemlerden alınan CSV dosyaları çoğu zaman noktalı virgülle ayrılır, ondalık için virgül kullanır ve Windows-1254 kodlamasıyla kaydedilir. Bu yüzden sep, decimal ve encoding="cp1254" parametrelerini verin; aksi halde ş, ğ, ı gibi harfler bozuk görünür [4].

2. Temizleme

Tarihleri gün-ay-yıl biçiminde okumak için dayfirst=True kullanın. Tutarı boş satırları ve birebir tekrar eden satırları atın. Gerçek veride iş bu kadar kısa sürmez: Aynı müşterinin farklı yazılışları, birim karışıklıkları ve eksik kayıtlar çıkar. Dosyanızdaki sorunları görmek için ücretsiz Veri Kalite Kontrolü'nü kullanın; dosya tarayıcınızdan çıkmaz.

3. Özetleme

pivot_table, Excel'deki özet tablonun karşılığıdır: satırlarda bölgeler, sütunlarda aylar, hücrelerde toplam tutar yer alır [1]. groupby ise ürün bazında toplamı hesaplar; ardından tablo büyükten küçüğe sıralanır ve ilk 10 satır alınır.

4. Yazma

ExcelWriter, iki tabloyu aynı dosyanın iki ayrı sayfasına yazar [5]. Rapor artık her çalıştırmada aynı biçimde ve hatasız üretilir.

Kodu her hafta kendiliğinden çalıştırın

  • Windows: Görev Zamanlayıcı'da yeni bir görev oluşturun ve her pazartesi 08:00'de python rapor.py komutunu çalıştıracak şekilde ayarlayın [6].
  • Linux ve macOS: cron'a 0 8 * * 1 python3 /yol/rapor.py satırını ekleyin; bu satır kodu her pazartesi 08:00'de çalıştırır [7].

Bu yöntemin sınırları

Bu kod tek bir dosya ve tek bir rapor için iyi bir başlangıç sağlar. Raporlar çoğaldığında, veri birden fazla sistemden geldiğinde ya da aynı rakam farklı raporlarda farklı çıktığında sorun artık kodda değil, veri altyapısında olur. O noktada her raporun beslendiği tek doğru veri kaynağı kurmak gerekir; raporlama otomasyonu çalışmalarında yaptığım iş tam olarak budur.

Python scripti mi, veri altyapısı mı?
DurumPython scripti yeterliAltyapı gerekir
Rapor sayısı1–3Onlarca
Veri kaynağıTek dosyaERP, CRM, e-ticaret, Excel birlikte
Rakamlar tutarlı mı?EvetDepartmanlar farklı rakam görüyor
Kim bakıyor?Kodu yazan kişiKişiye bağlı olmamalı

▶ Sık sorulan sorular

Python ile veri analizi için programcı olmak gerekir mi?

Gerekmez. Excel'de formül ve özet tablo kullanabilen biri, pandas'ın temel işlevlerini birkaç haftada öğrenebilir. Kurumsal eğitimlerde katılımcıların büyük kısmı hiç kod yazmadan başlar.

Python ve pandas ücretli mi?

Hayır. Python, pandas ve openpyxl açık kaynaklıdır ve ticari kullanım dahil ücretsizdir.

CSV dosyasında Türkçe karakterler bozuk çıkıyor, ne yapmalıyım?

Dosya büyük olasılıkla Windows-1254 kodlamasıyla kaydedilmiştir. read_csv fonksiyonuna encoding="cp1254" parametresini verin. Dosya UTF-8 ise encoding="utf-8" kullanın.

Power BI ya da Excel makroları yerine neden Python?

Python ücretsizdir, sürüm kontrolüne uygundur ve aynı kod hem analizde hem otomasyonda kullanılır. Görsel bir pano gerekiyorsa veri yine Python ile hazırlanıp herhangi bir panoya aktarılabilir.

▶ Kavramlar

Wikipedia ve Wikidata kayıtlarına bağlanır.

▶ Kaynaklar

  1. [1]pandas, pandas.pivot_table — API reference, 2026. pandas.pydata.org/docs/reference/api/pandas.pivot_table.html
  2. [2]pandas, pandas.read_excel — API reference, 2026. pandas.pydata.org/docs/reference/api/pandas.read_excel.html
  3. [3]pandas, pandas.read_csv — API reference, 2026. pandas.pydata.org/docs/reference/api/pandas.read_csv.html
  4. [4]Python Software Foundation, codecs — Standard Encodings (cp1254), 2026. docs.python.org/3/library/codecs.html
  5. [5]pandas, pandas.DataFrame.to_excel — API reference, 2026. pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_excel.html
  6. [6]Microsoft Learn, Task Scheduler, 2026. learn.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page
  7. [7]Wikipedia, cron, 2026-10. en.wikipedia.org/wiki/Cron

▶ Ücretsiz rapor

Uygulamadan önce resmin tamamına bakın.

Raporu indirerek bu adımın şirketinizde neden önemli olduğunu yönetiminize kaynaklarıyla anlatın.

Hazırsanız doğrudan görüşme ayarlayın: Tanışma görüşmesi ayarlayın →

E-postanızı bırakın, raporu indirin.

Bilgilerinizi yalnızca raporu kimin indirdiğini görmek ve gerekirse rapor hakkında size bir kez yazmak için kullanırım; bülten göndermem. Kişisel verilerin nasıl işlendiğini okuyun

▶ İlgili sayfalar