PyArrow entegrasyonu, boş değer alabilen veri türleri ve daha iyi performans ile verimlilik için nanosaniye dışı tarih-saat çözünürlüğü gibi yeni özelliklerle, temel veri analizi kütüphanesinin en son güncellemesi pandas 2.0’a dalın.
Veri analizi çoğu zaman vazgeçilmez pandas kütüphanesine büyük ölçüde dayanır. Pandas, tablo şeklindeki veri kümelerini verimli bir şekilde işlemek için kullanımı kolay veri yapıları ve veri işleme işlevleri sunar. Pandas ile kullanıcılar; CSV dosyaları, Excel tabloları, SQL veritabanları ve daha fazlası dahil çeşitli kaynaklardan verileri kolayca içe aktarabilir, temizleyebilir, dönüştürebilir ve birleştirebilir.
Pandas ile verileri nasıl içe aktaracağınızı ve temizleyeceğinizi, istatistik hesaplayıp görselleştirmeler oluşturacağınızı öğrenmek isterseniz, pandas ile Veri Manipülasyonu Kursumuzu inceleyin.
Bu eğitimde, pandas kütüphanesinin en yeni sürümünü, bunların nasıl kullanılacağına dair örneklerle birlikte en güncel özellikleri inceleyeceğiz.
Uzun Zamandır Beklenen pandas 2.0 Güncellemesi Nihayet Yayında
Pandas 2.0, üç yıllık geliştirmenin ardından 3 Nisan 2023’te yayımlandı. Bu en son sürüm; geliştirilmiş uzantı dizi desteği, PyArrow için DataFrame desteği ve nanosaniye olmayan tarih-saat çözünürlüğü gibi bir dizi yeni özellik sunuyor. Ancak bununla birlikte, API değişikliklerine yol açan zorunlu kullanımdan kaldırmalar da içeriyor.
Pandas’a yapılan önemli bir güncelleme olarak 2.0 sürümü, 1.X’te duyurulan tüm kullanımdan kaldırmaları hayata geçiriyor. 1.5.3’ün en son sürümünde yaklaşık 150 uyarı bulunuyordu. Kodunuz 1.X’te uyarısız çalışıyorsa, 2.0 sürümüyle uyumlu olmalıdır.
pandas 2.0’daki En Yeni Özellikler
Gelin, pandas 2.0 ile nelerin yeni olduğuna ve bazı iyileştirilmiş özelliklerin nasıl kullanılacağına bakalım.
Geliştirilmiş Performans: Daha Hızlı ve Daha Bellek Verimli İşlemler
Bu sürümün belirleyici özelliği olarak PyArrow görülebilir.
Pandas başlangıçta bellek yönetimi için NumPy veri yapıları kullanılarak geliştirildi, ancak artık kullanıcılar arka planda bellek biçimi olarak PyArrow’u kullanmayı tercih edebiliyor.
PyArrow, (Arrow üzerine inşa edilmiş) bir Python kütüphanesidir ve Arrow bellek yapılarıyla büyük veri kümelerini işlemek için bir arayüzün yanı sıra serileştirme, sıkıştırma ve Apache Spark ile Apache Parquet gibi diğer veri işleme sistemleriyle entegrasyon için araçlar sağlar.
Arrow, verileri bellekte temsil etmek için açık kaynaklı ve dilden bağımsız sütun bazlı bir veri biçimidir. C++ ile yazılmıştır, ancak dilden bağımsızdır.
Orijinal NumPy arka ucunun neden olduğu verimsiz bellek kullanımı, kullanıcıları Spark, Dask, Ray vb. gibi alternatif veri işleme araçlarını denemeye iten yaygın bir sorundur. PyArrow arka ucu sayesinde bellek tüketimini azaltarak, Pandas artık kullanıcılara daha akıcı bir deneyim sunabilir ve daha verimli çalışmalarını mümkün kılar.
NumPy ve PyArrow arka uçlarıyla yapılan ortalama alma ve değer değiştirme işlemlerinin, Polars ile birlikte karşılaştırıldığı kıyaslamalar
Polars, Python için Rust tabanlı bir veri işleme kütüphanesidir ve pandas’a benzer bir DataFrame API’si sunar; ancak büyük veri kümeleri için gelişmiş performans ve ölçeklenebilirlik sağlar. Polars kütüphanesi hakkında daha fazla bilgi için resmi web sitesine göz atın.
İşte PyArrow’u arka uç olarak kullanarak bir CSV dosyasını okuma kod parçacığı:
pd.read_csv(my_file, dytpe_backend='pyarrow')
Python kodunuzu optimize etmek için pandas’ta verimli teknikleri öğrenmek isterseniz, DataCamp’teki pandas ile Verimli Kod Yazma kursuna göz atın.
Boş değer alabilen veri türleri artık mümkün
Pandas’ta eksik değerlerle çalışmak geçmişte zordu; çünkü NumPy belirli veri türlerinde null değerlere destek vermiyordu. Örneğin, NumPy tamsayı dtype’ları null değerlere izin vermez. Bir tamsayı sütununa null değer eklendiğinde, sütun otomatik olarak float dtype’a dönüştürülürdü ki bu ideal değildir.
Pandas 1.0 boş değer alabilen dtype’ları tanıttı; ancak bunları kullanmak için bir miktar çaba gerekiyordu. Neyse ki en son sürümle birlikte, verileri bir DataFrame’e okurken boş değer alabilen dtype’ları kullanmayı belirtebilirsiniz; bu da süreci çok daha kolaylaştırır.
pd.read_csv(my_file, use_nullable_dtypes=True)
Copy-on-Write ile Performans İyileştirmesi
Copy-on-Write, Pandas tarafından büyük veri kümelerini işlerken performansı artırmak ve bellek kullanımını en aza indirmek için kullanılan bir bellek optimizasyon tekniğidir. Bu yaklaşım, Pandas’ı Spark’a ve Spark’taki tembel (lazy) işlemlerin nasıl yapıldığına daha çok benzetir. Tembel işlemler, hemen yürütülmeyen; bunun yerine, hesaplamayı tetiklemek için bir eylem çağrılana kadar bekleyen işlemlerdir. “Tembel” olarak adlandırılmalarının nedeni, nihai sonuçları hesaplamak ve döndürmek gerektiğinde yürütmeyi ertelemeleridir.
Temel kavram; bir pandas nesnesinin, örneğin bir DataFrame veya Series’in kopyası oluşturulduğunda orijinal veriye bir başvuru (referans) üretmek ve ancak bir değişiklik yapıldığında gerçekten yeni bir kopya oluşturmaktır.
Bu yaklaşım, herhangi bir değişiklik yapılana kadar aynı verinin birden çok kopyasının aynı belleğe erişmesine izin vererek gereksiz veri kopyalamayı ortadan kaldırır ve bellek kullanımını önemli ölçüde azaltarak performansı artırır.
Dizinlerde Desteklenen NumPy Sayısal Türleri
Pandas 2.0’da Index özelliği, daha önce yalnızca int64, uint64 ve float64 desteklenirken; int8, int16, int32, uint8, uint16, uint32, uint64, float32 ve float64 gibi NumPy sayısal dtype’larını da kapsayacak şekilde genişletildi.
Bu güncelleme, daha önce 64 bit dizinler üreten işlemlerde örneğin 32 bit dizinler gibi daha düşük bit boyutlarında dizinler oluşturulmasını mümkün kılar.
Artık tüm sayısal dizinler, ilişkili bir dtype’a sahip Index olarak temsil edilir.
pip extras kurulumu
Pandas’ı pip ile kurarken extras belirterek, isteğe bağlı bağımlılıkların ek kümelerini kurabilirsiniz. Örneğin:
pip install "pandas[performance, aws]>=2.0.0"
Bu, performance ve aws isteğe bağlı bağımlılıklarını kuracaktır. Pandas’ın kurulum kılavuzu, mevcut extras listesini sağlar. Buna şunlar dahildir: [all, performance, computation, fss, aws, gcp, excel, parquet, feather, hdf5, spss, postgresql, mysql, sql-other, html, xml, plot, output_formatting, clipboard, compression ve test] Tırnak eklemeyi (“) unutmayın.
Zaman Damgalarında Nanosaniye Dışı Çözünürlük
Uzun süre boyunca pandas’ta zaman damgaları yalnızca nanosaniye çözünürlüğünde temsil edilebiliyordu. Bu kısıt, 21 Eylül 1677’den önceki veya 11 Nisan 2264’ten sonraki tarihlerin temsil edilememesi anlamına geliyordu. Bu durum, uzun dönemlere yayılan zaman serilerini inceleyen araştırmacılar için zorluk yaratıyordu.
Ancak pandas 2.0 ile birlikte saniye, milisaniye ve mikrosaniye gibi diğer çözünürlükler için destek eklendi. Bu iyileştirme, çoğu kullanım senaryosunu kapsayan +/- 2,9e11 yıla kadar zaman aralıklarını mümkün kılar.
Tarih-Saatlerde Tutarlı Ayrıştırma Biçimi
Daha önce pandas’taki to_datetime() işlevi, her bir öğenin biçimini bağımsız olarak çıkarırdı; bu da kullanıcılar tutarlı bir biçim beklerken işlevin öğeler arasında biçim değiştirmesi nedeniyle sorun yaratabiliyordu.
Bu yaklaşım, karışık tarih biçimlerinin bulunduğu durumlar için uygun olsa da birçok kullanıcı için sorunlara neden oluyordu.
Pandas 2.0’da ayrıştırma süreci, ilk NA olmayan değer tarafından belirlenen tutarlı bir biçim kullanacak şekilde değiştirildi. Kullanıcılar isterlerse bir biçim de belirtebilir; bu durumda o biçim kullanılacaktır.
Geriye dönük uyumlu olmayan API değişiklikleri, bir kütüphanenin API’sinde mevcut kodu veya tümleşimleri bozabilecek değişikliklere karşılık gelir. Bu değişiklikler; işlevlerin, sınıfların veya parametrelerin kaldırılmasını ya da yeniden adlandırılmasını veya beklenen davranışlarının değiştirilmesini içerebilir. pandas 2.0’daki tüm kırıcı değişikliklerin listesi için geriye dönük uyumlu olmayan API değişiklikleri dokümantasyonuna göz atın.
Pandas kütüphanesini güncellemek için terminalinizde veya not defterinizde şu komutu çalıştırmanız yeterlidir:
Ayrıca, Python veri analizi kütüphanesinin temellerine hızlı bir başvuru olarak pandas veri bilimi kopya kağıdımızı kod örnekleriyle birlikte kullanabilirsiniz.
Geniş bir katkıcı kitlesi ve daha küçük bir bakım ekibi, topluluk tarafından yürütülen açık kaynak bir proje olan pandas’ı birlikte geliştirdi. Pandas liderliği, olumlu, kapsayıcı ve açık bir topluluk oluşturmaya kararlıdır. Bu topluluğa katılmak isterseniz, pandas’ın Katkıcı topluluk rehberine göz atın.
Sonuç
Pandas 2.0, popüler veri analizi kütüphanesine önemli bir güncelleme getirerek; PyArrow ile performans artışı, boş değer alabilen veri türleri, copy-on-write optimizasyonu, dizinlerde genişletilmiş NumPy sayısal tür desteği ve nanosaniye dışı tarih-saat çözünürlüğü gibi yeni özellikler sunuyor.
Bu güncellemeyle pandas, daha verimli bellek kullanımıyla daha büyük veri kümelerini işleyebiliyor ve kullanıcılara daha akıcı bir deneyim sağlıyor.
Bu yeni özelliklerden yararlanmak için kullanıcılar, pip install -U pandas komutuyla pandas kütüphanelerini kolayca güncelleyebilir. Pandas topluluğu, kullanıcıların veri analizi becerilerini geliştirmelerine yardımcı olmak için DataCamp’teki kurslar dahil destek ve kaynak sağlamaya devam ediyor.
İşte veri analizi öğrenme yolculuğunuzda faydalı bulabileceğiniz birkaç harika eğitim.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!