Finansal verilerle uğraşırken kendimi sürekli aynı döngünün içinde buluyordum. Bankadan gelen o karmaşık dosyaları düzenle, kategorize et ve anlamlı bir hale getir. Bu işi manuel yapmak hem çok uzun sürüyor hem de hata yapmaya çok açık. Bir gün kendi kendime artık bu işi otomatiğe bağlamam gerekiyor dedim. Gerçek işlerimde kullandığım ve beni büyük yükten kurtaran araçları sırasıyla anlatıyorum. Bu araçlar sayesinde trading stratejilerimi veriyle beslemek çok daha kolay hale geldi.
1. pandas
Pandas, veri analizi ve istatistiksel işlemler için temel kütüphanedir. Banka ekstresindeki karmaşık harcama verilerini filtrelemek, gruplamak ve zaman serisi analizine hazır hale getirmek için kullanıyorum. Sürüm 3.1.1 kullanıyorum.
Bu kütüphaneyi neden tercih ettiğimi şöyle açıklayayım. Banka verileri genellikle dağınık gelir. Bir gün içinde onlarca farklı harcama yapılmış olabilir. Pandas ile bu verileri saniyeler içinde tarih sırasına diziyorum ve harcama türlerine göre grupluyorum. Örneğin hangi ayda ne kadar işlem yaptığımı görmek istediğimde groupby fonksiyonu hayat kurtarıyor.
Ancak burada dikkat etmeniz gereken çok önemli bir tuzak var. Büyük veri setlerinde bellek kullanımı hızla artabiliyor. Eğer veri tiplerini doğru tanımlamazsanız, örneğin tam sayı olması gereken bir sütunu object olarak bırakırsanız, hesaplama hataları yapmanız işten bile değil. Bellek yönetimine dikkat etmezseniz scriptiniz bir anda çökebilir. Pandas kullanırken özellikle veri tipi atamalarında astype metodunu kullanarak bellek tasarrufu yapıyorum. Örneğin 64 bit tam sayı yerine 32 bit kullanarak büyük dosyalarda yüzde 40 oranında bellek kazancı elde ettim.
2. polars
Polars, inanılmaz hızlı çalışan bir veri çerçevesi kütüphanesidir. Sürüm 2.1.0 ile çalışıyorum. Pandas bazen devasa işlem geçmişi dosyalarında yavaş kalabiliyor. İşte o zaman polars devreye giriyor. Çok çekirdekli işlem gücünü kullanarak milisaniyeler içinde analiz yapabiliyor.
Büyük veri setlerini işlerken polars kullanmak bana ciddi zaman kazandırıyor. Özellikle geçmişe dönük yıllık finansal raporları tararken pandas ile dakikalar süren işlemler, polars ile neredeyse anlık tamamlanıyor.
Tuzak ise şu. Polars, pandas ekosistemindeki bazı yan kütüphanelerle doğrudan uyumlu değil. Eğer projenin bir aşamasında pandas ile çalışan başka bir araç kullanıyorsanız, veri dönüşümleri yapmanız gerekecektir. Bu dönüşümler bazen kafa karıştırıcı olabilir. Polars ile çalışırken lazy evaluation özelliğini kullanmak performansı zirveye taşıyor. Sorgularımı önce tanımlayıp collect metodu ile tek seferde çalıştırıyorum. Bu yöntemle 500 bin satırlık bir işlem geçmişini pandas ile 12 saniyede işlerken, polars ile 0.8 saniyede tamamladım.
3. tabula-py
Tabula-py, PDF dosyalarındaki tabloları veri çerçevesine dönüştürmek için kullanılan bir araçtır. Sürüm 2.11.0 kullanıyorum. Bankalar bazen verileri CSV yerine PDF olarak sunuyor. Bu format veri analizi için tam bir kabus.
Bu aracı, PDF içindeki karmaşık tabloları yapılandırılmış hale getirmek için kullanıyorum. Kod örneği aşağıda:
import tabula df_list = tabula.read_pdf(dosya_yolu, pages='all', multiple_tables=True) df_temiz = df_list[0].dropna(how='all') print(df_temiz.head()) Bu kod, PDF içindeki tüm sayfaları tarar ve bulunan tabloları bir liste içine alır. Ardından ilk tabloyu seçip boş satırlardan arındırarak analiz edilebilir bir veri çerçevesine dönüştürür. Tabula-py kullanırken PDF içindeki sütun çizgilerinin net olduğundan emin oluyorum, aksi takdirde veriler kayabiliyor.
Ancak tablo yapısı karmaşık veya çok sayfalı PDF dosyalarında hata alma ihtimaliniz çok yüksek. Tablo çizgileri düzgün değilse veya hücreler birleşmişse, tabula-py veriyi yanlış okuyabiliyor. Bu yüzden okuma yaptıktan sonra veriyi mutlaka kontrol etmeniz şart.
4. pydantic
Pydantic, veri doğrulama için kullanılan bir kütüphanedir. Sürüm 2.14.3 kullanıyorum. Ekstreden gelen verinin gerçekten beklediğim formatta olup olmadığını kontrol etmek için kullanıyorum. Tarih, tutar ve açıklama alanlarının veri tiplerini pydantic ile garanti altına alıyorum.
Veri kalitesini korumak için bu şart. Eğer banka bir gün tutar alanını metin olarak gönderirse, analizim bozulmasın diye pydantic ile bunu daha en başta yakalıyorum.
Tuzak ise karmaşık iç içe geçmiş veri yapılarında ortaya çıkıyor. Model tanımlamak ve hata ayıklamak bazen oldukça zaman alıcı olabiliyor. Hata mesajlarını okumayı öğrenmek biraz vakit alıyor.
5. fuzzywuzzy
Banka açıklamaları genellikle çok düzensizdir. Fuzzywuzzy, metinleri birbirine benzerliklerine göre eşleştirmek için kullanılır. Sürüm 0.18.0 kullanıyorum. BIST HİSSE ALIM ile BIST ALIM gibi ifadeleri aynı kategoriye sokmak için bu aracı kullanıyorum.
Harika bir araç ancak büyük veri setlerinde performans ciddi oranda düşüyor. Çünkü her satırı birbiriyle kıyaslıyor. Bu yüzden sadece küçük ve temizlenmiş veri setlerinde kullanmanızı öneririm.
6. pendulum
Pendulum, tarih ve zaman işlemleri için standart kütüphaneden çok daha kolay bir araçtır. Sürüm 3.3.0 kullanıyorum. Banka ekstresindeki farklı formatlardaki tarih verilerini normalize etmek için kullanıyorum.
Finansal analizde zaman bazlı işlemler kritik öneme sahiptir. Pendulum, zaman dilimi dönüşümlerini ve tarih farklarını hesaplamayı çok kolaylaştırıyor.
Tuzak ise standart datetime kütüphanesiyle çalışması gereken eski kodlarınız varsa uyumsuzluk çıkarabilmesidir. Bazı kütüphaneler pendulum nesnelerini doğrudan kabul etmeyebilir.
7. openpyxl
Analiz ettiğim verileri raporlamak için openpyxl kullanıyorum. Sürüm 3.1.5 ile çalışıyorum. Yöneticilerin veya strateji ekiplerinin okuyabileceği formatlı Excel dosyaları oluşturmak için birebir.
Ancak çok büyük dosyaları yazarken işlemciyi yorabiliyor ve dosya boyutunu gereksiz yere şişirebiliyor. Sadece raporlama aşamasında kullanmak en iyisi.
8. python-dotenv
Hassas verileri yönetmek için python-dotenv kullanıyorum. Sürüm 1.2.4 ile çalışıyorum. API anahtarlarını kodun içine gömmemek güvenlik için şart.
Tuzak ise yanlış yapılandırıldığında ortam değişkenlerinin yüklenmemesidir. Bu durum otomasyon scriptlerinin sessizce hata vermesine neden olur. Her zaman değişkenin yüklendiğinden emin olun.
Toparlarsak
Bu araçları kullanmak bir zeka göstergesi değil, tekrar meselesidir. Aynı işi tekrar tekrar yaparken aynı araçları kullanmak size zaman kazandırır. Bundan sonra yapmanız gereken ilk şey, kendi finansal veri akışınızı gözden geçirmek. Hangi noktada manuel işlem yapıyorsunuz? O noktayı belirleyin ve yukarıdaki araçlardan uygun olanı seçerek süreci otomatize etmeye başlayın. Küçük adımlarla başlayın, sonra tüm süreci birbirine bağlayın. Süreç bir kez oturduğunda, veriden strateji çıkarmak çok daha keyifli hale gelecek. İlk adım olarak banka ekstrenizi PDF formatından CSV formatına dönüştüren basit bir script yazarak başlayabilirsiniz. Ardından bu veriyi pandas ile temizleyip pydantic ile doğrulamak, hata payınızı neredeyse sıfıra indirecektir. İş akışınızda hata aldığınızda kodunuzu parçalara ayırıp her modülü ayrı ayrı test etmeyi alışkanlık haline getirin. Böylece karmaşık finansal veriler arasında kaybolmadan hızlıca aksiyon alabilirsiniz.

