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.