Arkadaşlar merhaba, son zamanlarda üzerinde çalıştığım bir projede Python'la büyük veri işlerken ciddi bir performans sorunuyla karşılaştım. Özellikle 10-15 milyon satırlık CSV dosyalarını işlemeye çalışırken pandas kullanıyordum ama işler gerçekten yavaşlamaya başladı. Bellek kullanımı da tavan yapıyor, bazen kod 20-30 dakika sürüyor ve neredeyse bilgisayarı kitliyor. Normalde pandas'ın bu tür durumlar için optimize edildiğini düşünürdüm ama görünen o ki yanılmışım. Acaba başka kütüphaneler mi denemeliyim yoksa kod yapımda bir hata mı var? Veriyi parça parça okumayı denedim ama o da işe yaramadı, her seferinde aynı sorunla karşılaşıyorum.
Özellikle veriler üzerinde groupby ve merge işlemleri yaparken performans iyice dibe vuruyor. Mesela 5-6 farklı CSV dosyasını birleştirip analiz yapmak zorunda kalıyorum, bu noktada pandas'ın belleği şişirmesi can sıkıcı oluyor. Acaba dask veya vaex gibi araçlar daha mı iyi çalışır? Yoksa doğrudan SQLite veya PostgreSQL'e yükleyip orada işlem yapmak daha mantıklı olur mu? Benim gibi bu tür büyük veri kümeleriyle uğraşan var mı, hangi yöntemleri kullanıyorsunuz? Ayrıca paralel işleme için multiprocessing kullanmayı da düşündüm ama pandas'ın içinde ne kadar işe yarar emin değilim, tecrübesi olan varsa paylaşırsa sevinirim.
Bir de aslında merak ettiğim nokta şu: Python'da büyük veri işleme konusunda genel bir trend var mı? Ben genelde küçük ve orta ölçekli projelerde Python kullanıyordum ama bu projeyle birlikte sınırları zorlamaya başladım. Belki de numpy veya cython gibi daha düşük seviyeli çözümler denemeliyim. Ya da veriyi önceden filtreleyip boyutunu küçültmek en mantıklısı olabilir. Siz ne düşünüyorsunuz? Benzer sorunlar yaşayan veya çözüm önerisi olan varsa yazsın, tartışalım.
Özellikle veriler üzerinde groupby ve merge işlemleri yaparken performans iyice dibe vuruyor. Mesela 5-6 farklı CSV dosyasını birleştirip analiz yapmak zorunda kalıyorum, bu noktada pandas'ın belleği şişirmesi can sıkıcı oluyor. Acaba dask veya vaex gibi araçlar daha mı iyi çalışır? Yoksa doğrudan SQLite veya PostgreSQL'e yükleyip orada işlem yapmak daha mantıklı olur mu? Benim gibi bu tür büyük veri kümeleriyle uğraşan var mı, hangi yöntemleri kullanıyorsunuz? Ayrıca paralel işleme için multiprocessing kullanmayı da düşündüm ama pandas'ın içinde ne kadar işe yarar emin değilim, tecrübesi olan varsa paylaşırsa sevinirim.
Bir de aslında merak ettiğim nokta şu: Python'da büyük veri işleme konusunda genel bir trend var mı? Ben genelde küçük ve orta ölçekli projelerde Python kullanıyordum ama bu projeyle birlikte sınırları zorlamaya başladım. Belki de numpy veya cython gibi daha düşük seviyeli çözümler denemeliyim. Ya da veriyi önceden filtreleyip boyutunu küçültmek en mantıklısı olabilir. Siz ne düşünüyorsunuz? Benzer sorunlar yaşayan veya çözüm önerisi olan varsa yazsın, tartışalım.