Ana içeriğe geç

Pandas .explode() Yönteminde Ustalaşın: Kapsamlı Bir Rehber

pandas .explode() yöntemi hakkında bilmeniz gereken her şeyi öğrenin: tekil ve çoklu sütunlar, iç içe verilerle çalışma ve pratik Python kod örnekleriyle yaygın tuzaklar.
· 5 dk. oku

Yapay Zeka ile Keşfedin

pandas ile veri işleme dünyasında, .explode() yöntemi DataFrame'lerdeki listelerle çalışırken sıkça başvurulan kullanışlı bir araçtır. Bu eğitim, .explode() yöntemine hâkim olmanız için temel işleyişinden gelişmiş kullanımlara ve yaygın tuzaklara kadar bir el kitabı niteliğindedir.

Kısa Cevap: .explode() Böyle Çalışır

Hızlı bir yanıt için burayı okuyun. .explode() yöntemi, liste benzeri bir sütundaki girdileri birden çok satıra genişletmek üzere tasarlanmıştır; listedeki her öğe ayrı bir satır olur. Örneğin, süreci göstermek için aşağıdaki df DataFrame'ini kullanacağız:

ID

İlgi Alanları

1

['Python', 'Data Science']

2

['Machine Learning', 'AI']

.explode() yöntemi Interests sütununun öğelerini şu şekilde genişletecektir:

# Explode the Interests column 
exploded_df = df.explode('Interests')

ID

İlgi Alanları

1

Python

1

Data Science

2

Machine Learning

2

AI

Pandas .explode() Yöntemi Nedir?

.explode() yöntemi, pandas DataFrame'leri içinde listeler veya demetler gibi iç içe geçmiş verilerin işlenmesini kolaylaştırmak için tasarlanmıştır. Liste benzeri bir yapının her öğesini ayrı bir satıra dönüştürerek .explode(), verinin erişilebilirliğini ve analize hazır olmasını artırır.

.explode() Yöntemi Nasıl Çalışır?

.explode() işlevselliği hem güçlü hem de yalındır; veri işleme görevlerinde kullanıcı dostuluğu ve verimliliğe odaklanır.

  • Column: Patlatılacak (explode edilecek) liste benzeri girdiler içeren sütunu belirtir.
  • ignore_index: True olarak ayarlandığında, yöntem dizini varsayılan tamsayı dizinine sıfırlar; bu, patlatma sonrasında DataFrame bütünlüğünün korunmasına yardımcı olur. Varsayılan değer False'tur.

Pandas .explode() yöntemini kullanmanın iki yolu

Pandas'ta Tek Sütunları Patlatma

En yaygın kullanım senaryosu, tek bir sütunu patlatmaktır; bu, sütundaki her liste benzeri girdiyi ayrı satırlara genişletir. Kısa cevap bölümünde tam olarak bunu ele aldık. Bu örneğe yeniden bakalım. Burada bireylerin kimliklerini ve öğrenme ilgi alanlarını içeren df DataFrame'imiz var. Gördüğünüz gibi, öğrenme ilgi alanları liste biçimindedir.

ID

İlgi Alanları

1

['Python', 'Data Science']

2

['Machine Learning', 'AI']

.explode() yöntemi Interests sütununun öğelerini şu şekilde ayrı satırlara genişletecektir:

# Explode the Interests column 
exploded_df = df.explode('Interests')

ID

İlgi Alanları

1

Python

1

Data Science

2

Machine Learning

2

AI

Bu yöntem özellikle kategorik veri veya gözlem başına birden çok öznitelik içeren sütunlar için kullanışlıdır.

Pandas'ta Birden Fazla Sütunu Patlatma

Bazen bir DataFrame içinde birden fazla sütunu patlatmanız gereken senaryolarla da karşılaşabilirsiniz. Bu, birden çok sütunun aynı anda açılması gereken liste benzeri yapılar içerdiği veri kümeleriyle çalışırken özellikle faydalıdır. Bunu göstermek için df'ye ek bir Tools sütunu ekleyelim:

ID

İlgi Alanları

Araçlar

1

['Python', 'Data Science']

['Pandas', 'NumPy']

2

['Machine Learning', 'AI']

['Scikit-learn', 'TensorFlow']

Birden fazla sütunu patlatmak için, patlatılacak sütunları bir liste içinde belirtmeniz yeterlidir

# Explode the Interests & Tools columns
exploded_df = df.explode(['Interests', 'Tools'])

ID

İlgi Alanları

Araçlar

1

Python

Pandas

1

Data Science

NumPy

2

Machine Learning

Scikit-learn

2

AI

TensorFlow

Bu yöntem, listeler içeren birden çok sütunla çalışırken özellikle faydalıdır. Bununla birlikte, .explode() ile çalışırken karşılaşabileceğiniz bazı tuzaklar vardır; bir sonraki bölümde bunları inceleyeceğiz.

Pandas .explode() Kullanımında Yaygın Hatalar ve Çözümler

Yinelenen Sütunların Patlatılması

.explode() ile çalışırken yaygın bir tuzak, yöntemi kullanırken yanlışlıkla yinelenen sütunları patlatmaktır. Hatırlatma olarak, eklediğiniz sütun listesinin her zaman benzersiz olduğundan emin olun!

# Incorrect, exploding duplicate columns
df.explode(['Interests','Tools','Interests'])

# Correct, exploding unique columns
df.explode(['Interests','Tools'])

Liste Gibi Görünen Dizelerin Patlatılması

Çoğu zaman, DataFrame'lerinizde dizeler bulunur ama liste gibi görünür. "['Python', 'AI']" gibi listeyi andıran dizeler içeren bir sütunu patlatmaya çalışmak, değişikliğe yol açmaz; çünkü .explode() yöntemi, liste gibi görünen dizeleri değil, gerçekten liste benzeri nesneleri bekler. Bunun nasıl görünebileceğine dair bir örnek ve çözüm burada! Diyelim ki df aşağıdaki değerlere sahipti:

ID

İlgi Alanları

1

"['Python', 'Data Science']"

2

"['Machine Learning', 'AI']"

Gördüğünüz gibi, Interests sütununda, liste gibi görünen dizeler var. Interests üzerinde .explode() kullanmak bir değişiklik oluşturmaz; çünkü değerler tek bir dizgedir. Bunu düzeltmek için, Interests değerlerini listelere dönüştürürüz.

import ast

df['Interests'] = df['Interests'].apply(ast.literal_eval)
exploded_df = df.explode('Interests')
print(exploded_df) # This will work

Birden Fazla Sütunda Eşleşmeyen Uzunluklar

pandas DataFrame'leriyle çalışırken yaygın bir tuzak, patlatılacak olarak belirtilen sütunlardaki liste benzeri yapıların, bazı satırlarda uyuşmayan uzunluklara sahip olmasıdır. Bu tutarsızlık, birden fazla sütunda .explode() kullandıktan sonra hizası bozuk veya eksik verilere yol açabilir. Örneğin, df'in aşağıdaki gibi olduğunu varsayalım:

ID

İlgi Alanları

Araçlar

1

['Python', 'Data Science']

['Pandas']

2

['Machine Learning']

['Scikit-learn', 'TensorFlow']

Görüldüğü gibi, Interests ve Tools sütunları farklı uzunluklarda listeler içeriyor. Bu sütunları olduğu gibi .explode() ile kullanmak bir hataya yol açar; çünkü sütunlardaki listelerdeki değer sayıları eşleşmelidir. Bunu düzeltmek için, burada görüldüğü gibi özel bir işlevle listeleri None ile doldurabilirsiniz:

​​# Function to pad lists to the same length
def pad_lists(row):
    max_len = max(len(row['Interests']), len(row['Tools']))
    row['Interests'] += [None] * (max_len - len(row['Interests']))
    row['Tools'] += [None] * (max_len - len(row['Tools']))
    return row

# Apply the padding function to each row
df = df.apply(pad_lists, axis=1)

# Now, safely explode both columns
df.explode(['Interests','Tools'])

ID

İlgi Alanları

Araçlar

1

Python

Pandas

1

Data Science

None

2

Machine Learning

Scikit-learn

2

None

TensorFlow

Son Düşünceler

Özetle, .explode() yöntemi, bir değer listesindeki öğeleri Pandas DataFrame'inde satırlar olarak açarken faydalı bir yöntemdir. Daha fazla pandas öğrenimi için aşağıdaki kaynaklara göz atın:

Adel Nehme

Yazar

Adel Nehme

Adel, Veri Bilimi eğitmeni, konuşmacı ve DataCamp’te Medya Başkan Yardımcısıdır. Adel, veri analizi, makine öğrenimi ve veri mühendisliği üzerine çeşitli kurslar ve canlı eğitimler yayınlamıştır. Kuruluşlar genelinde veri becerilerini ve veri okuryazarlığını yaygınlaştırmaya ve teknolojinin toplumla kesişimine tutkuyla bağlıdır. Veri Bilimi ve İş Analitiği alanında yüksek lisans derecesine sahiptir. Boş zamanlarında onu kedisi Louis ile vakit geçirirken bulabilirsiniz.

Konular

İlgili