Dostlar, bugün kafayı yememin hikayesini anlatacağım. Şirket için aylık finansal raporları otomatize eden bir Python scripti yazmıştım. Her şey harika çalışıyordu, ta ki muhasebeden gelen yeni Excel dosyasını besleyene kadar. Script, her zamanki gibi çalıştı, hiç hata vermedi. Ama çıktıdaki rakamlar... Tam bir felaketti. Milyonluk cirolar, bin liraya düşmüştü. İlk başta algoritmamda devasa bir mantık hatası olduğunu düşündüm, 2 saat kodun içinde kayboldum.
Sonra bir ara değeri print etmeye karar verdim. Veriyi pandas ile read_csv gibi okuyordum aslında, ama dosya .xlsx'ti. Şu satırı kullanıyordum:
Python:
df = pd.read_excel('finans_raporu.xlsx')
Sorun, Excel'in bölgesel ayarlarından kaynaklanıyordu. Dosyayı açıp elle düzeltmek profesyonelce değildi. Çözüm, read_excel fonksiyonuna doğru decimal ve thousands parametrelerini vermekti. Nihai kurtarıcı kod:
Python:
df = pd.read_excel('rapor.xlsx', thousands='.', decimal=',')
İşin komik tarafı, script aylardır sorunsuz çalışıyordu ve bu tek dosya için her şey alt üst oldu. Veri temizliği ve validation'ın önemini bir kere daha çok acı bir şekilde anladım. Artık her Excel dosyasını okumadan önce bir kontrol fonksiyonundan geçiriyorum.
Siz de benzer "kültürel farklar" yüzünden kodunuzun çıldırdığı oldu mu? Ya da Excel/Pandas'la uğraşırken başka hangi gizli tuzaklara düştünüz?