Yetersiz zaman? Pandaların daha hızlı uygulanmasını sağlamak için bu kelimeyi ekleyin

Tam metin 1860 Kelimeler, tahmini öğrenme süresi 6 dakika

Kaynak: Pexels

Veri bilimcileri, işlerini desteklemek için genellikle daha fazla çekirdeğe ve güçlü bilgi işlem gücüne sahip sunuculara ihtiyaç duyar. Bu nedenle, donanım seçimi açısından dört çekirdekli, sekiz çekirdekli, turbo şarjlı dizüstü bilgisayarları tercih etme eğilimindedirler.

Ancak bu şeylerin orijinal gücünü% 100 ellerinde gerçekten kullanıp açığa çıkarabilirler mi?

Bazen verileri işlerken araçlarla sınırlanırlar; bazen birkaç dakika zaman kazanmak için önemsiz bir kod yazmazlar. Sonunda, zaman optimizasyonunun uzun vadede gerçekten yararlı olduğunu fark edebilirsiniz.

Peki bilim adamları bunu optimize edebilir mi?

Elbette sonuç ortada.

Bu makale, eldeki bilgi işlem gücünü kullanan ve bunu Swifter yazılımını kullanarak panda veri çerçevelerine uygulayan bilim insanlarıyla ilgilidir.

Sorun bildirimi

Bilim adamlarının halihazırda devasa bir panda veri çerçevesi var ve ona karmaşık bir işlevi uygulamak çok zaman alıyor.

Bu makale için yazar 250.000 satır ve 4 sütun ilgili veri oluşturacaktır.

Paralelleştirme kullanılarak kodun ekstra performansı kolayca elde edilebilir mi?

  • pandaları pd olarak içe aktar
  • numpy'yi nppdf = pd.DataFrame (np.random.randint (0,100, boyut = (25000000,4)), sütunlar = liste ('abcd')) olarak içe aktar
  • Veriler aşağıdaki gibidir:

    Veri örneği

    Yalnızca tek bir değişiklik kullanarak paralelleştirme

    Kaynak: Pexels rahatlayın ve paralel olun !!

    Ardından basit bir deney yapılır.

    Veri çerçevesinde yeni bir sütun oluşturmayı deneyin. Bu adım, panda'da apply-lambda kullanılarak kolayca gerçekleştirilebilir.

  • def func (a, b):
  • Eğer bir > 50:
  • True döndür
  • elif b > 75:
  • True döndür
  • Başka:
  • dönüş Falsepdf = pdf.apply (lambda x: func (x, x), axis = 1)
  • Yukarıdaki kodun çalışması yaklaşık 10 dakika sürer. Yazar, yukarıdaki iki sütun için basit bir hesaplama yapar.

    Bu optimize edilebilir mi? Ne yapılması gerekiyor?

    Tabii ki, cevap evet, sadece bir "sihirli kelime" ekleyin -Swifter optimize edilebilir.

    Ama önce, çok kolay olan daha hızlı yazılımı yüklemeniz gerekir:

  • conda install -c conda-forgeswifter
  • Ardından, onu kullanmak için uygulamadan önce çalışmak için swifter anahtar kelimesini içe aktarın ve ekleyin.

  • hızlı ithalat
  • pdf = pdf.swifter.apply (lambda x: func (x, x), axis = 1)
  • Bu çalışıyor mu?

    elbette. Sadece işlevin kullanılmasıyla karşılaştırıldığında, bu işlem çalışma süresini ikiye katlayabilir.

    Bunun gizemi nedir?

    Kaynak: Veri boyutunun artması Dask, Pan'ı nasıl etkiler?

    Swifter, işlevi vektörleştirerek veya arka uçtaki Dask paralelleştirme işlevini kullanarak veya veri kümesi küçük olduğunda basit panda uygulama işlevini kullanarak uygulama işlevini uygulamanın en iyi yolunu seçer.

    Bu örnekte, Swifter, uygulama işlevini npartitions = cpu_count () * 2 varsayılan değeriyle paralelleştirmek için Dask'ı kullanır.

    Üzerinde çalıştığım MacBook için CPU sayısı 6 ve hyperthreading 2. Bu nedenle, CPU sayısı 12'dir, bu da npartitions değerini 24 yapar.

    Okuyucular ayrıca n_partitions değerini kendileri ayarlamayı da seçebilirler. Yazar, varsayılan değerin çoğu durumda iyi çalıştığını fark etti, ancak okuyucular daha fazla hız kazanmak için onu da ayarlayabilirler.

    Örneğin: n_partitions = 12 olarak ayarlarsanız, 2x hızlanma elde edersiniz. Burada bölüm sayısının azaltılması çalışma süresini azaltacaktır çünkü bölümler arasında veri geçişinin maliyeti yüksektir.

    sonuç olarak

    Paralellik her derde deva değil, bir bombadır.

    Paralelleştirme tüm sorunları çözmez, yine de işlevi optimize etmeye ihtiyaç duyar, ancak bu iyi bir araçtır.

    Zaman geçti, zaman her zaman yeterli değil. Bu durumda, veri işlemede paralel işlem için bir kelime kullanmanız gerekir.

    Kelime daha hızlı.

    Kaynak: Pexels

    İş önemlidir, ancak hayat hayattaki en önemli şeydir.

    Umarım bu makaleyi okuduktan sonra herkes onu esnek bir şekilde kullanabilir, verimliliği artırabilir ve "iyi bir yaşam" için kendinize zaman kazandırabilir.

    Yorum Beğen Takip Et

    Yapay zeka öğrenme ve geliştirmenin kuru mallarını paylaşalım

    Yeniden yazdırıyorsanız, lütfen arka planda bir mesaj bırakın ve yeniden yazdırma şartnamelerine uyun

    Teknik borcu boşaltın! Veri bilimcilerin kısa Python koduna ihtiyacı var
    önceki
    Tembel hileler: Pandas kodu yazmaktan nasıl kaçınacağınızı öğretin
    Sonraki
    Core Voice Today | Yeni Yıl! CCTV 2019 bilim ve teknoloji haberlerini duyurdu, bunu biliyor musunuz?
    Irak parlamentosu, yabancı askerlerin konuşlandırılmasına son verme kararı aldı
    Kalbini ısıt! Yaşlı adam büyüteci aldı ve bu teşekkür mektubunu sağlık personeline yazdı ...
    Yeni yılda ilk kez toplam RRR düşürülecek Bugün 800 milyardan fazla kırmızı zarftan kim faydalanacak?
    Aşırı fakir köyün ilk sekreteri zamana karşı yarışıyor: 20 ayda 100.000 mil yol aldı ve 15 lastiği değiştirdi | Araştırma · Gözlem
    Çatışmanın tırmanması! Irak birçok yerde bombalandı ve ABD askerleri arttı Orta Doğu savaşı yeniden alevlendirecek mi?
    90'lar sonrası "küçük kardeş" Pekin'e giren insanlara sıcak bir şekilde "eve" gitmeleri için eşlik etti.
    Liuzhou, Guangxi, yoksul insanların yoksulluktan kurtulmalarına yardımcı olmak için elde taşınır video görüşme platformunu başlattı
    Mango TV'nin anti-salgın kısa draması "Bir gün kazanacak", ön saflardaki sağlık çalışanlarına saygı duruşunda bulunuyor
    Lin Zhifang: "Kes" mutluluk
    Jinan City Kültür Merkezi açılmaya devam ediyor, iki büyük folklor sergisi sizi bekliyor
    Pekin'de ilk bahar sergisi açıldı ve 12 sanat ustası salgın altında "Ben kimim" diye sordu?
    To Top