Bu Üç Faydalı Teknikle Pandalarda Veri Dönüşümünde Ustalaşın

Filtrelemeye, işlemeye ve işlemeye kapsamlı bir bakış

Fotoğraf Milad Fakuryan on Unsplash

Güzel biçimlendirilmiş bir veri kümesiyle en son çalıştığınız zamanı düşünün. İyi adlandırılmış sütunlar, minimum eksik değerler ve uygun organizasyon. Temizlemeniz ve dönüştürmeniz gerekmeyen verilerle kutsanmak, neredeyse özgürleştirici güzel bir duygu.

Hayallerinizden çıkıp önünüzdeki kırık sıraların ve saçma sapan etiketlerin umutsuz karmakarışıklığını düzeltmeye devam edene kadar güzel.

Temiz veri diye bir şey yoktur (orijinal haliyle). Eğer bir veri bilimciyseniz bunu bilirsiniz. Eğer yeni başlıyorsanız bunu kabul etmelisiniz. Verilerinizle etkili bir şekilde çalışabilmek için verilerinizi dönüştürmeniz gerekecektir.

Bunu yapmanın üç yolundan bahsedelim.

Filtreleme - Ancak Doğru Şekilde Açıklanması

Filtreleme hakkında konuşalım - ama alışkın olduğunuzdan biraz daha derinlemesine. En yaygın ve kullanışlı veri dönüştürme operasyonlarından biri olan etkili filtreleme, her veri bilimcinin sahip olması gereken bir beceridir. Pandaları tanıyorsanız, bu muhtemelen yapmayı öğrendiğiniz ilk operasyonlardan biridir.

En sevdiğim, garip bir şekilde çok yönlü örneği kullanarak gözden geçirelim: uygun bir şekilde adlandırılan öğrenci notlarının DataFrame'i grades:

Yazara Göre Resim

90'ın altındaki puanları filtreleyeceğiz, çünkü bu gün sadece en iyi öğrencilere hitap eden, yetersiz eğitimli eğitimciler olmaya karar verdik (lütfen bunu gerçekten yapmayın). Bunu gerçekleştirmek için standart kod satırı aşağıdaki gibidir:

notlar[notlar['Puan'] >= 90]
Yazara Göre Resim

Bu bizi Jack ve Hermione'yle bırakıyor. Serin. Peki burada tam olarak ne oldu? Niye ya yukarıdaki kod satırı çalışıyor mu? Yukarıdaki dış parantez içindeki ifadenin çıktısına bakarak biraz daha derine inelim:

notlar['Puan'] >= 90
Yazara Göre Resim

Ah tamam. Bu mantıklı. Bu kod satırının Boolean () içeren bir Pandas Series nesnesi döndürdüğü görülüyor. True / False ) değerler neye göre belirlenir >= 90 her bir satır için döndürülür. Bu anahtar ara adımdır. Daha sonra, dış parantezlere aktarılan ve tüm satırları buna göre filtreleyen bu Boolean Serisidir.

Bitirme adına, aynı davranışın kullanılarak elde edilebileceğini de belirteceğim. loc anahtar kelime:

dereceler.loc[dereceler['Puan'] >= 90]
Yazara Göre Resim

Kullanmayı tercih etmemizin birkaç nedeni var loc (bunlardan biri aslında satırları ve sütunları tek bir işlemle filtrelememize izin vermesidir), ancak bu, başka bir makaleye bırakılması gereken Pandora'nın Pandalar Kutusu işlemlerini açar.

Şimdilik öğrenmenin önemli hedefi şudur: Pandaları filtrelediğimizde, kafa karıştırıcı sözdizimi bir tür tuhaf sihir değildir. Basitçe bunu iki bileşen adımına ayırmamız gerekiyor: 1) koşulumuzu karşılayan satırların Boolean Serisini elde etmek ve 2) tüm DataFrame'i filtrelemek için Seriyi kullanmak.

Bu neden faydalıdır diye sorabilirsiniz? Genel olarak konuşursak, gerçekte nasıl çalıştıklarını anlamadan işlemleri kullanırsanız, muhtemelen kafa karıştırıcı hatalara yol açacaktır. Filtreleme yararlı ve inanılmaz derecede yaygın bir işlemdir ve artık nasıl çalıştığını biliyorsunuz.

Hadi devam edelim.

Lambda Fonksiyonlarının Güzelliği

Bazen verileriniz Pandas'ın işlevselliğinde yerleşik olmayan dönüşümler gerektirir. Ne kadar denerseniz deneyin, Yığın Taşması'nı taramak veya Pandas belgelerini titizlikle incelemek sorununuza bir çözüm getirmez.

Pandalarla güzel bir şekilde bütünleşen kullanışlı bir dil özelliği olan lambda işlevlerine girin.

Hızlı bir inceleme olarak lambdaların çalışma şekli şu şekildedir:

>>> add_function = lambda x, y: x + y
>>> add_function(2, 3)
5

Lambda işlevleri, daha kısa bir sözdizimine sahip olmaları dışında normal işlevlerden farklı değildir:

  • Eşittir işaretinin solundaki işlev adı
  • The lambda Eşittir işaretinin sağındaki anahtar kelime (benzer şekilde) def Geleneksel bir Python fonksiyon tanımındaki anahtar kelime, bu Python'un bir fonksiyon tanımladığımızı bilmesini sağlar).
  • Parametre(ler) sonra lambda anahtar kelime, iki nokta üst üste solunda.
  • Değeri iki nokta üst üste sağına döndürün.

Şimdi lambda fonksiyonlarını gerçekçi bir duruma uygulayalım.

Veri kümelerinin genellikle veri girişi ve toplamadaki farklılıklara özgü kendi biçimlendirme tuhaflıkları vardır. Sonuç olarak, üzerinde çalıştığınız verilerde, ele almanız gereken tuhaf spesifik sorunlar bulunabilir. Örneğin, insanların isimlerini ve gelirlerini saklayan aşağıdaki basit veri setini düşünün. Hadi onu arayalım monies.

Yazara Göre Resim

Şimdi, bu şirketin Master Data Majesteleri olarak bize çok gizli bazı bilgiler verildi: Bu şirketteki herkese %10 zam artı ek olarak 1000$ verilecek. Bu muhtemelen belirli bir yöntem bulmak için fazla spesifik bir hesaplamadır, ancak lambda işleviyle yeterince basittir:

update_income = lambda sayısı: sayı + (sayı * .10) + 1000

O zaman tek yapmamız gereken bu fonksiyonu Pandalarla kullanmak. apply seçilen Serinin her elemanına bir fonksiyon uygulamamızı sağlayan fonksiyon:

para['Yeni Gelir'] = para['Gelir'].apply(update_gelir)
paralar
Yazara Göre Resim

Ve işimiz bitti! Tam olarak ihtiyaç duyduğumuz bilgileri içeren, tamamı iki satırlık koddan oluşan yeni ve harika bir DataFrame. Daha da özetlemek gerekirse, lambda fonksiyonunu bile şunun içinde tanımlayabilirdik: apply doğrudan - akılda tutulması gereken harika bir ipucu.

Burada konuyu basit tutacağım.

Lambdalar son derece faydalıdır ve bu nedenle onları kullanmalısınız. Eğlence!

Seri Dizisi İşleme İşlevleri

Önceki bölümde lambda işlevlerinin çok yönlülüğünden ve verilerinizle başarmanıza yardımcı olabilecek tüm harika şeylerden bahsetmiştik. Bu mükemmel, fakat kapılmamaya dikkat etmelisiniz. Python'un programcılara bahşettiği daha basit kısayolları kaçıracak şekilde tanıdık bir şeyler yapma yöntemine kapılmak inanılmaz derecede yaygındır. Bu elbette lambdalardan daha fazlası için geçerlidir, ancak şimdilik bununla yetineceğiz.

Örneğin, aşağıdaki DataFrame'in çağrıldığını varsayalım. names insanların adlarını ve soyadlarını saklayan:

Yazara Göre Resim

Artık veritabanımızdaki yer sınırlaması nedeniyle, bir kişinin soyadının tamamını saklamak yerine, yalnızca son adının baş harfini saklamanın daha verimli olacağına karar verdik. Bu nedenle, dönüştürmemiz gerekiyor. 'Last Name' buna göre sütun. Lambda'larla bunu yapma girişimimiz aşağıdaki gibi görünebilir:

isimler['Soyadı'] = isimler['Soyadı'].apply(lambda s: s[:1])
isimleri
Yazara Göre Resim

Bu açıkça işe yarıyor, ancak biraz hantal ve bu nedenle olabileceği kadar Pythonic değil. Neyse ki, Pandas'taki dize işleme fonksiyonlarının güzelliğine ek olarak, daha zarif başka bir yol daha var (bir sonraki kod satırının amacı için, devam edin ve kodu daha önce değiştirmediğimizi varsayalım). 'Last Name' yukarıdaki koda sahip sütun):

adlar['Soyadı'] = adlar['Soyadı'].str[:1]
isimleri
Yazara Göre Resim

Ta-da! .str Pandas Serisinin özelliği, sanki her dizeyle ayrı ayrı çalışıyormuşuz gibi, serideki her diziyi belirli bir dize işlemiyle birleştirmemize olanak tanır.

Ama durun, daha iyi oluyor. O zamandan beri .str Seri aracılığıyla bir dizenin normal işlevselliğine etkili bir şekilde erişmemizi sağlar; ayrıca verilerimizin hızlı bir şekilde işlenmesine yardımcı olmak için bir dizi dize işlevi de uygulayabiliriz! Örneğin, her iki sütunu da küçük harfe dönüştürmeye karar verdiğimizi varsayalım. Aşağıdaki kod işi yapar:

adlar['Ad'] = adlar['Ad'].str.lower()
adlar['Soyadı'] = adlar['Soyadı'].str.lower()
isimleri
Yazara Göre Resim

Kendi lambda işlevlerinizi tanımlamak ve içindeki dize işlevlerini çağırmak zahmetinden çok daha basittir. Lambdaları sevmediğimden değil ama her şeyin bir yeri vardır ve Python'da sadelik her zaman öncelikli olmalıdır.

Burada yalnızca birkaç örnek ele aldım, ancak string fonksiyonlarının geniş bir koleksiyonu hizmetinizdedir [1].

Bunları özgürce kullanın. Mükemmeller.

Son Düşünceler ve Özet

İşte sizin için küçük bir veri dönüştürme hile sayfası:

  1. Dilediğiniz gibi filtreleyin. Gerçekte neler olup bittiğini öğrenin, böylece ne yaptığınızı bilirsiniz.
  2. Lambdalarınızı seviyorum. Verileri şaşırtıcı şekillerde değiştirmenize yardımcı olabilirler.
  3. Pandalar telleri sizin kadar seviyor. Çok sayıda yerleşik işlevsellik var; onu da kullanabilirsiniz.

İşte son bir tavsiye: Bir veri kümesini filtrelemenin "doğru" bir yolu yoktur. Bu, elinizdeki verilere ve çözmek istediğiniz benzersiz soruna bağlıdır. Bununla birlikte, her seferinde uygulayabileceğiniz belirlenmiş bir yöntem olmasa da, elinizin altında bulundurmaya değer bir dizi yararlı araç vardır. Bu yazıda bunlardan üçünü ele aldım.

Dışarı çıkıp biraz daha bulmanızı tavsiye ederim.

Referanslar

[1] https://www.aboutdatablog.com/post/10-most-useful-string-functions-in-pandas

Kaynak https://towardsdatascience.com/master-data-transformation-in-pandas-with-these-third-useful-techniques-20699f03e51d?source=rss—-7f60cf5620c9—'dan Yayınlanan Bu Üç Yararlı Teknikle Pandalar'da Veri Dönüşümünde Ustalaşın 4 https://towardsdatascience.com/feed aracılığıyla

<!–

->

Zaman Damgası:

Den fazla Blockchain Danışmanları