Pandaların veri işlemede üç numarası vardır, kaç tanesini biliyorsunuz?

Yazar | Yizhi

Sorumlu Editör | Elle

Günlük veri işlemede, bir DataFrame genellikle satır-satır, sütun-sütun ve öğe-öğe çalıştırılır. Bu işlemlere karşılık olarak, Pandalar'da harita, uygulama ve harita uygulama bu veri işleme ihtiyaçlarının çoğunu çözebilir. Bu makale, bu üç yöntemin uygulama ilkelerine vakaya ekli resimler şeklinde ayrıntılı bir giriş sunacaktır.Bu makaleyi okuduktan sonra, hem Xiaobai hem de Pandas ileri düzey öğrencilerinin bu üç yöntem hakkında daha fazla fikri olacağına inanıyorum. Derin anlayış.

Bu makalede gösterilen veri seti simülasyonla oluşturulmuştur ve pratik yapmak isteyenler aşağıdaki kodu oluşturabilir.

boole = cinsiyet = renk = data = pd.DataFrame ({ "yükseklik": np.random.randint ( 150 , 190.100), "ağırlık": np.random.randint (40,90,100), "sigara içen" :, "Cinsiyet":, "yaş": np.random.randint (15,90,100), "renk": } )

Veri seti aşağıda gösterilmiştir ve her sütun boy, kilo, sigara içilip içilmeyeceği, cinsiyet, yaş ve ten rengini temsil eder.

Seri veri işleme

harita

Veri kümesinin cinsiyet sütununda erkeği 1 ve dişiyi 0 ile değiştirmeniz gerekirse ne olur? Kesinlikle bir for döngüsü ile elde edilemez! ! ! Series.map'i kullanmak çok kolay bir şekilde yapılabilir, en az bir satır kod.

# Haritalama için sözlüğü kullanın data = data.map ({"Erkek": 1, "Kadın": 0}) # Fonksiyonları kullanma def gender_map (x): cinsiyet = 1 eğer x == "Erkek" değilse 0 dönüş cinsiyeti # Fonksiyon adının buraya parantezler olmadan aktarıldığını unutmayın data = data.map (gender_map)

Harita gerçek süreçte nasıl işliyor? Lütfen aşağıdaki şemaya bakın (ekran kolaylığı için, yalnızca ilk 10 veri parçası yakalanır)

Haritalama için bir sözlük veya işlev kullanılıp kullanılmadığına bakılmaksızın, eşleme yöntemi karşılık gelen verileri birer birer parametre olarak sözlüğe veya eşlenen değeri elde etmek için işleve iletmektir.

uygulamak

Aynı zamanda, Series nesnesinin bir uygulama yöntemi de vardır.Uygulama yönteminin işlevi, eşleme yönteminin işlevine benzerdir.Aradaki fark, apply'ın daha karmaşık işlevleri geçebilmesidir. Nasıl anlaşılır? Aşağıdaki örneğe bir göz atalım.

Veri istatistikleri sürecinde yaş sütununda büyük bir hata olduğunu ve ayarlanması gerektiğini (artı veya eksi bir değer) varsayalım. Bu eklenen veya çıkarılan değer bilinmediğinden, eklemek gerekir Bir parametre sapması daha var Şu anda, harita yöntemi çalıştırılamıyor (haritaya geçirilen işlev yalnızca bir parametre alabilir) ve uygulama yöntemi bu sorunu çözebilir.

def apply_age (x, önyargı): x + önyargı döndür # Ek parametreleri bir demet olarak aktarın data = data.apply (apply_age, args = (- 3,))

Gördüğünüz gibi yaş sütununun 3 küçültülmüş olduğunu görüyorsunuz. Tabii ki burada basit bir örnek: Karmaşık işlem gerektiğinde uygulama rolü daha fazla yansıtılabilir.

Sonuç olarak, Seriler için harita, veri işleme ihtiyaçlarının çoğunu çözebilir, ancak daha karmaşık işlevler kullanmanız gerekiyorsa, uygulama yöntemini kullanmanız gerekir.

DataFrame veri işleme

uygulamak

DataFrame için, uygulama çok önemli bir veri işleme yöntemidir, çeşitli işlevleri alabilir (Python yerleşik veya özel), işleme yöntemi çok esnektir, birkaç örnekle uygulamanın özel kullanımına bir göz atalım. Ve prensibi.

Belirli bir giriş yapmadan önce, önce DataFrame'e bir xi DataFrame nesnesinin çoğu yönteminde s kavramı, bir xi S parametresi, belirttiğiniz işlemin 0 ekseni boyunca mı yoksa 1 ekseni boyunca mı gerçekleştirileceğini kontrol eder. a xi s = 0 sütunlar üzerinde gerçekleştirilen işlemi temsil eder, a xi s = 1, işlemin aşağıdaki şekilde gösterildiği gibi satır üzerinde gerçekleştirildiği anlamına gelir.

İyi bilmiyorsanız sorun değil. Aşağıda sırasıyla 0 ekseni ve 1 eksen boyunca uygulama işlemini açıklayacak ve aşağı inmeye devam edeceksiniz.

Şimdi verideki sayısal sütunlarda logaritma ve toplama işlemlerini gerçekleştirmeniz gerektiğini varsayalım, ardından ilgili işlemleri gerçekleştirmek için uygula'yı kullanabilirsiniz.Sütunlar üzerinde çalıştığınız için, bir xi s = 0, aşağıdaki iki kod satırını kullanmak sorunumuzu kolayca çözebilir.

# 0 ekseni boyunca toplam data.apply (np.sum, a xi s = 0) # 0 ekseni boyunca logaritmayı alın data.apply (np.log, a xi s = 0)

Uygulama çok basit ama uygulama denildiğinde ne oluyor? Süreç nasıl gerçekleşir? Örnekleme yoluyla öğrenelim. (Örnek olarak ilk beş veriyi alın)

0 ekseni boyunca (a xi s = 0) Bir işlem gerçekleştirirken, her sütun (sütun) varsayılan olarak parametre olarak Seri şeklinde geçecek ve belirttiğiniz işlem fonksiyonuna geçecektir.İşlemden sonra birleşecek ve karşılık gelen sonucu döndürecektir.

Daha sonra, fiili kullanımda satır bazında çalıştırmanız gerekirse (a xi s = 1), tüm süreç nasıl gerçekleşir?

Veri setinde boy ve kilo verileri vardır, bu nedenle buna dayanarak her bir kişinin BMI indeksini hesaplayabiliriz (fiziksel muayene sırasında yaygın olarak kullanılan bir indeks, obezite derecesini ve vücudun sağlığını ölçmek için önemli bir standart), hesaplama formülü: vücut kitle indeksi BMI = Ağırlık / boy karesi (uluslararası birim kg / ), çünkü her numunenin çalıştırılması gerekir, burada a xi Çalıştırmak için s = 1 ile uygulayın, kod aşağıdaki gibidir:

def BMI (seri): ağırlık = seri yükseklik = seri / 100 BMI = ağırlık / boy ** 2 BMI döndür data = data.apply (BMI, a xi s = 1)

Bu sürecin nasıl uygulandığını görmek için grafiksel bir yol kullanalım (önceki 5 veri parçası örnektir).

Bir set uygulandığında xi s = 1 Satırlar üzerinde çalışırken, her veri satırı varsayılan olarak Seri biçiminde belirtilen işleve (Serinin dizini sütun adıdır) aktarılacak ve karşılık gelen sonuç döndürülecektir.

DataFrame üzerinde uygulama işlemini özetleyin:

  • Zaman xi S = 0 olduğunda, her sütun için belirtilen işlevi yürütün; xi S = 1 olduğunda, her satır için belirtilen işlevi yürütün.

  • Ne olursa olsun xi s = 0 veya a xi s = 1, belirtilen işlevde varsayılan aktarım biçimi Seridir ve ham = True ayarlayarak numpy dizisini geçirebilirsiniz.

  • Her Seri için sonuçları çalıştırdıktan sonra, sonuçlar entegre edilecek ve döndürülecektir (bir dönüş değerine sahip olmak istiyorsanız, işlevi tanımlarken karşılık gelen değeri döndürmeniz gerekir).

  • Tabii ki, DataFrame'in uygulaması Series'in uygulamasıyla aynıdır ve gelen parametreler gibi daha karmaşık işlevleri de alabilir. Uygulama prensibi aynıdır. Lütfen özel kullanım için resmi belgelere bakın.

  • applicationmap

    Applymap kullanımı nispeten basittir. Belirtilen işlevin DataFrame içindeki her hücrede çalışmasını gerçekleştirecektir. Uygulandığı kadar çok yönlü olmasa da, aşağıdaki örnek gibi bazı durumlarda yine de daha kullanışlıdır.

    Gösterim kolaylığı için yeni bir DataFrame oluşturulur

    df = pd.DataFrame ( { "A": np.random.randn (5), "B": np.random.randn (5), "C": np.random.randn (5), "D": np.random.randn (5), "E": np.random.randn (5), } ) df

    Şimdi DataFrame'deki tüm değerleri iki ondalık basamakla görüntülemek istiyorum. Applymap'i kullanarak istediğiniz şeyi hızlı bir şekilde elde edebilirsiniz. Kod ve diyagram aşağıdaki gibidir:

    df.applymap (lambda x: "%. 2f"% x)

    Bu makale Python okumasına bir katkıdır.

    Sizi Spring Boot / Cloud'un arkasındaki lüks Ar-Ge ekibiyle tanıştırmanın zamanı geldi
    önceki
    200.000 QQ sunucusu tamamen bulutta
    Sonraki
    Xiangyang'ı ziyaret eden Hubei: Antik kent bahar gelgitini "canlandırdı"
    Spor Gözlemi Tokyo Olimpiyatları ertelendi ve Çin lejyonları mutlu ve üzgün
    Jiangnan Water Town Ningbo'daki "Su Yenileme Kaydı": Su tasarrufunu sürdürülebilir bir trende dönüştürmek
    Arjantinli uzmanlar ve akademisyenler, Başkan Xi Jinping'in 2020 Yeni Yıl mesajını tartışıyor
    Guangdong sağlık ekibi birbiri ardına Guangdong'a döndü
    90 sonrası hemşire İtalyan gazetesinin ön sayfasında döndü! Partnerinle daha önce hiç tanışmadım
    sadece! Hengqin Limanı'nın Macao Liman Bölgesi resmi olarak Makao'ya devredildi! Toplam alan 66.000 metrekare
    Vanke Yu Liang: Barış zamanlarında tehlikeye hazırlanmadan önce "yaşamak" derdim ama şimdi çok gerçek bir varoluş haline geldi
    90'ların sonrası nişanlısını gizledi ve doktorları ve hemşireleri işe alıp götürmek için Wuhan'a geri gitti ve doktorlar ona çizgi roman ve arkadaşlığı geri verdi.
    180 metre yüksekliğindeki yeşil alan, yeni isim kartı olabilecek Linyi Yüksek Hızlı Demiryolu Yeni Bölgesi'ne yerleşti
    Araç bakım sınıfı: Yağdaki ani artış bir kalite sorunu mu?
    Jinan Thomas İlköğretim Okulu özel brifing toplantısı geliyor
    To Top