Pandas DataFrame'de Yinelenen Değerleri İşleme

Pandas DataFrame'de Yinelenen Değerleri İşleme

Giriş

Bir veri analisti olarak, doğru ve güvenilir içgörüler elde etmek için veri bütünlüğünü sağlamak bizim sorumluluğumuzdur. Veri temizleme bu süreçte hayati bir rol oynar ve yinelenen değerler, veri analistlerinin karşılaştığı en yaygın sorunlar arasındadır. Yinelenen değerler, içgörüleri potansiyel olarak yanlış gösterebilir. Bu nedenle, yinelenen değerlerle başa çıkmak için etkili yöntemlere sahip olmak çok önemlidir. Bu makalede, yinelenen değerlerin nasıl tanımlanıp ele alınacağını ve yinelenenleri yönetmek için en iyi uygulamaları öğreneceğiz.

Yinelenen Değerleri Belirleme

Yinelenen değerleri ele almanın ilk adımı, onları tanımlamaktır. Yinelenen değerleri belirlemek, veri temizlemede önemli bir adımdır. Pandas, bir veri çerçevesi içinde yinelenen değerleri belirlemek için birden çok yöntem sunar. Bu bölümde, duplicated() fonksiyonu ve value_counts() yinelenen değerleri belirleme işlevi.

Usin kopyalanmış()

The duplicated() işlevi, bir DataFrame'de yinelenen satırları kontrol eden bir Pandalar kitaplığı işlevidir. çıkışı duplicated() işlevi, DataFrame girişiyle aynı uzunluğa sahip bir boole dizisidir; burada her öğe, karşılık gelen satırın yinelenen bir satır olup olmadığını gösterir.

Basit bir örnek üzerinde düşünelim duplicated() işlevi:

import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) df_duplicates = df.duplicated()
print(df_duplicates)

Çıktı:

0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool

Yukarıdaki örnekte, öğrencilerin adlarını ve toplam puanlarını içeren bir DataFrame oluşturduk. çağırdık duplicated() ile bir boole dizisi oluşturan DataFrame üzerinde False benzersiz değerleri temsil eden ve True yinelenen değerleri temsil eder.

Bu örnekte, değerin ilk geçtiği yer benzersiz kabul edilir. Ancak, son değerin benzersiz olarak kabul edilmesini istiyorsak ve yinelenen değerleri belirlerken tüm sütunları dikkate almak istemiyorsak ne olur? Burada, değiştirebiliriz duplicated() parametre değerlerini değiştirerek çalışır.

Parametreler: Alt Kümele ve Tut

The duplicated() işlevi, isteğe bağlı parametreleri aracılığıyla özelleştirme seçenekleri sunar. Aşağıda açıklandığı gibi iki parametresi vardır:

  • subset: Bu parametre, yinelenen öğe tespiti sırasında dikkate alınacak sütun alt kümesini belirtmemizi sağlar. Alt küme şu şekilde ayarlanır: None varsayılan olarak, bu, DataFrame'deki her sütunun dikkate alındığı anlamına gelir. Sütun adlarını belirlemek için, alt kümeye bir sütun adları listesi sağlayabiliriz.

    Altküme parametresini kullanmanın bir örneğini burada bulabilirsiniz:

    
    df_duplicates = df.duplicated(subset=['StudentName'])
    

    Çıktı:

    0 False
    1 False
    2 False
    3 False
    4 False
    5 True
    dtype: bool
    
  • keep: Bu seçenek, yinelenen satırın hangi örneğinin yinelenen olarak işaretleneceğini seçmemizi sağlar. Keep için olası değerler şunlardır:

    • "first": Bu, varsayılan değerdir. keep seçenek. İlk değerin benzersiz olduğunu göz önünde bulundurarak, ilk oluşum dışındaki tüm kopyaları tanımlar.
    • "last": Bu seçenek, son oluşumu benzersiz bir değer olarak tanımlar. Diğer tüm oluşumlar yinelenen olarak kabul edilecektir.
    • False: Bu seçenek, her örneği yinelenen bir değer olarak etiketler.

İşte kullanmanın bir örneği keep parametre:


df_duplicates = df.duplicated(keep='last')
print(df_duplicates)

Çıktı:

0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
Yinelenen Değerleri Görselleştirin

The value_counts() işlevi, kopyaları tanımlamak için ikinci yaklaşımdır. bu value_counts() işlev, her benzersiz değerin bir sütunda kaç kez göründüğünü sayar. uygulayarak value_counts() işlevi belirli bir sütuna göre, her bir değerin frekansı görselleştirilebilir.

İşte kullanmanın bir örneği value_counts() işlevi:

import matplotlib.pyplot as plt
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) name_counts = df['StudentName'].value_counts()
print(name_counts)

Çıktı:

Mark 2
Ali 1
Bob 1
John 1
Johny 1
Name: StudentName, dtype: int64

Şimdi yinelenen değerleri bir çubuk grafikle görselleştirelim. Yinelenen değerlerin sıklığını bir çubuk grafik kullanarak etkili bir şekilde görselleştirebiliriz.


name_counts.plot(kind='bar')
plt.xlabel('Student Name')
plt.ylabel('Frequency')
plt.title('Duplicate Name Frequencies')
plt.show()

yinelenen değerler

Yinelenen Değerleri İşleme

Yinelenen değerleri belirledikten sonra, bunları ele almanın zamanı geldi. Bu bölümde, pandaları kullanarak yinelenen değerleri kaldırmak ve güncellemek için çeşitli stratejiler keşfedeceğiz. drop_duplicates() ve replace() fonksiyonlar. Ek olarak, yinelenen değerlerle verileri toplamayı tartışacağız. groupby() fonksiyonu.

Yinelenen Değerleri Kaldırma

Kopyaları işlemek için en yaygın yaklaşım, onları DataFrame'den kaldırmaktır. DataFrame'den yinelenen kayıtları ortadan kaldırmak için drop_duplicates() işlev. Varsayılan olarak, bu işlev yinelenen her satırın ilk örneğini tutar ve sonraki oluşumları kaldırır. Tüm sütun değerlerine dayalı olarak yinelenen değerleri tanımlar; ancak, dikkate alınacak sütunu altküme parametrelerini kullanarak belirtebiliriz.

sözdizimi drop_duplicates() parametrelerde varsayılan değerlerle aşağıdaki gibidir:

dataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

The subset ve keep parametrelerin açıklamaları aşağıdaki gibidir: duplicates(). Üçüncü parametreyi ayarlarsak inplace için True, tüm değişiklikler doğrudan orijinal DataFrame üzerinde gerçekleştirilecek ve yöntemin geri dönmesiyle sonuçlanacaktır. None ve değiştirilen orijinal DataFrame. Varsayılan olarak, inplace is False.

İşte bir örnek drop_duplicates() işlevi:


df.drop_duplicates(keep='last', inplace=True)
print(df)

Çıktı:

 StudentName Score
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!

Yukarıdaki örnekte, yinelenen olduğu için ilk giriş silinmiştir.

Yinelenen Değerleri Değiştirin veya Güncelleyin

Kopyaları işlemek için ikinci yöntem, Pandas'ı kullanarak değeri değiştirmeyi içerir. replace() işlevi. replace() işlevi, bir DataFrame'deki belirli değerleri veya kalıpları yeni değerlerle değiştirmemize izin verir. Varsayılan olarak, değerin tüm örneklerini değiştirir. Ancak limit parametresini kullanarak değiştirme sayısını sınırlayabiliriz.

İşte kullanımına bir örnek replace() işlevi:


df['StudentName'].replace('Mark', 'Max', limit=1, inplace=True)
print(df)

Çıktı:

 StudentName Score
0 Max 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

Burada, ilk değerin yerine limit kullanılmıştır. Ya son oluşumu değiştirmek istersek? Bu durumda, birleştireceğiz duplicated() ve replace() fonksiyonlar. kullanma duplicated(), her yinelenen değerin son örneğini göstereceğiz, kullanarak satır numarasını elde edeceğiz. loc işlevini kullanın ve ardından onu kullanarak değiştirin. replace() işlev. İşte kullanımına bir örnek duplicated() ve replace() birlikte işlev görür.


last_occurrences = df.duplicated(subset='StudentName', keep='first') last_occurrences_rows = df[last_occurrences] df.loc[last_occurrences, 'StudentName'] = df.loc[last_occurrences, 'StudentName'].replace('Mark', 'Max') print(df)

Çıktı:

 StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Max 45

Karmaşık Değiştirmeler için Özel İşlevler

Bazı durumlarda, yinelenen değerleri işlemek, bunları basitçe kaldırmak veya güncellemekten daha karmaşık değiştirmeler gerektirir. Özel işlevler, ihtiyaçlarımıza göre özel değiştirme kuralları oluşturmamızı sağlar. Pandaları kullanarak apply() işlevi, özel işlevi verilerimize uygulayabiliriz.

Örneğin, "ÖğrenciAdı" sütununun yinelenen adlar içerdiğini varsayalım. Amacımız, yinelenen değerlerin sonuna bir sayı ekleyerek onları benzersiz kılan özel bir işlev kullanarak yinelenenleri değiştirmektir.


def add_number(name, counts): if name in counts: counts[name] += 1 return f'{name}_{counts[name]}' else: counts[name] = 0 return name name_counts = {} df['is_duplicate'] = df.duplicated('StudentName', keep=False)
df['StudentName'] = df.apply(lambda x: add_number(x['StudentName'], name_counts) if x['is_duplicate'] else x['StudentName'], axis=1)
df.drop('is_duplicate', axis=1, inplace=True)
print(df)

Çıktı:

 StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark_1 45

Yinelenen Değerlerle Verileri Birleştirin

Yinelenen değerler içeren veriler, özetlemek ve verilerden içgörüler elde etmek için toplanabilir. Pandalar groupby() işlevi, verileri yinelenen değerlerle toplamanıza olanak tanır. kullanarak groupby() işleviyle, bir veya daha fazla sütunu gruplandırabilir ve her grup için başka bir sütunun ortalamasını, ortancasını veya toplamını hesaplayabilirsiniz.

İşte kullanımına bir örnek groupby() yöntem:


grouped = df.groupby(['StudentName']) df_aggregated = grouped.sum()
print(df_aggregated)

Çıktı:

 Score
StudentName Ali 65
Bob 76
John 44
Johny 39
Mark 90

İleri Teknikler

Daha karmaşık senaryoları ele almak ve doğru analiz sağlamak için kullanabileceğimiz bazı gelişmiş teknikler var. Bu bölüm, bulanık yinelemeler, zaman serisi verilerinde yineleme ve yinelenen indeks değerleri ile başa çıkmayı tartışacaktır.

bulanık çoğaltır

Bulanık kopyalar, tam olarak eşleşmeyen ancak benzer olan kayıtlardır ve veri girişi hataları, yazım hataları ve biçimlendirmedeki farklılıklar dahil olmak üzere çeşitli nedenlerle ortaya çıkabilirler. biz kullanacağız fuzzywuzzy Dize benzerlik eşleştirmesini kullanarak kopyaları tanımlamak için Python kitaplığı.

İşte bulanık değerlerin işlenmesine bir örnek:

import pandas as pd
from fuzzywuzzy import fuzz def find_fuzzy_duplicates(dataframe, column, threshold): duplicates = [] for i in range(len(dataframe)): for j in range(i+1, len(dataframe)): similarity = fuzz.ratio(dataframe[column][i], dataframe[column][j]) if similarity >= threshold: duplicates.append(dataframe.iloc[[i, j]]) if duplicates: duplicates_df = pd.concat(duplicates) return duplicates_df else: return pd.DataFrame() data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) threshold = 70 fuzzy_duplicates = find_fuzzy_duplicates(df, 'StudentName', threshold)
print("Fuzzy duplicates:")
print(fuzzy_duplicates.to_string(index=False))

Bu örnekte, özel bir işlev oluşturuyoruz find_fuzzy_duplicates girdi olarak bir DataFrame, bir sütun adı ve bir benzerlik eşiği alır. İşlev, DataFrame'deki her satırı yineler ve bunu sonraki satırlarla karşılaştırır. fuzz.ratio yöntemden fuzzywuzzy kütüphane. Benzerlik puanı eşikten büyük veya eşitse, yinelenen satırlar bir listeye eklenir. Son olarak işlev, bulanık kopyaları içeren bir DataFrame döndürür.

Çıktı:

Fuzzy duplicates:
StudentName Score Mark 45 Mark 45 John 44 Johny 39

Yukarıdaki örnekte, "ÖğrenciAdı" sütununda belirsiz kopyalar tanımlanmıştır. 'find_fuzzy_duplicates' işlevi, her bir dizi çiftini karşılaştırır. fuzzywuzzy kütüphanenin fuzz.ratio Levenshtein mesafesine dayalı olarak bir benzerlik puanı hesaplayan işlev. Eşiği 70 olarak belirledik, yani eşleşme oranı 70'ten büyük olan herhangi bir isim bulanık bir değer olarak kabul edilecektir. Bulanık değerleri belirledikten sonra, "Yinelenenleri Ele Alma" bölümünde açıklanan yöntemi kullanarak bunları yönetebiliriz.

Zaman Serisi Veri Kopyalarını İşleme

Aynı zaman damgasında birden fazla gözlem kaydedildiğinde yinelemeler meydana gelebilir. Bu değerler, uygun şekilde ele alınmadığı takdirde yanlı sonuçlara yol açabilir. Zaman serisi verilerinde yinelenen değerleri işlemenin birkaç yolu aşağıda verilmiştir.

  • Tam Kopyaları Bırakma: Bu yöntemde, aynı satırları kullanarak kaldırırız. drop_duplicates Pandalarda işlev.
  • Farklı Değerlere Sahip Yinelenen Zaman Damgaları: Aynı zaman damgasına ancak farklı değerlere sahipsek, verileri toplayabilir ve kullanarak daha fazla bilgi edinebiliriz. groupby()veya kullanarak en son değeri seçip diğerlerini kaldırabiliriz. drop_duplicates() ile keep parametre 'son' olarak ayarlandı.

Yinelenen Dizin Değerlerini İşleme

Yinelenen indeks değerlerine değinmeden önce, Pandas'ta indeksin ne olduğunu tanımlayalım. Dizin, DataFrame'in her satırına atanan benzersiz bir tanımlayıcıdır. Pandas, varsayılan olarak sıfırdan başlayan bir sayısal dizin atar. Ancak, herhangi bir sütuna veya sütun kombinasyonuna bir dizin atanabilir. Dizin sütunundaki kopyaları belirlemek için şunu kullanabiliriz: duplicated() ve drop_duplicates() sırasıyla fonksiyonlar. Bu bölümde, kullanarak Dizin sütunundaki kopyaları nasıl ele alacağımızı keşfedeceğiz. reset_index().

Adından da anlaşılacağı gibi, reset_index() Pandas'taki işlev, bir DataFrame'in dizinini sıfırlamak için kullanılır. uygularken reset_index() işlevi, geçerli dizin otomatik olarak atılır, bu da ilk dizin değerlerinin kaybolduğu anlamına gelir. belirterek drop parametre olarak False içinde reset_index() işlevi, dizini sıfırlarken orijinal dizin değerini koruyabiliriz.

İşte kullanma örneği reset_index():

import pandas as pd data = { 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data, index=['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark']) df.reset_index(inplace=True)
print(df)

Çıktı:

 index Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45

En İyi Uygulamalar

  • Yinelenen Verilerin Doğasını Anlayın: Herhangi bir işlem yapmadan önce, yinelenen değerlerin neden var olduğunu ve bunların neyi temsil ettiğini anlamak çok önemlidir. Temel nedeni tanımlayın ve ardından bunlarla başa çıkmak için uygun adımları belirleyin.

  • Yinelenenleri İşlemek İçin Uygun Bir Yöntem Seçin: Önceki bölümlerde tartışıldığı gibi, kopyaları işlemenin birçok yolu vardır. Seçtiğiniz yöntem, verilerin doğasına ve gerçekleştirmeyi amaçladığınız analize bağlıdır.

  • Yaklaşımı Belgeleyin: Yinelenen değerleri tespit etme ve bunları ele alma sürecini belgelemek, başkalarının düşünce sürecini anlamasını sağlamak için hayati önem taşır.

  • Egzersiz Dikkat: Verileri her kaldırdığımızda veya değiştirdiğimizde, yinelenenleri ortadan kaldırmanın analize hatalar veya önyargılar getirmediğinden emin olmalıyız. Akıl sağlığı testleri yapın ve her eylemin sonuçlarını doğrulayın.

  • Orijinal Verileri Koruyun: Veriler üzerinde herhangi bir işlem yapmadan önce, orijinal verilerin bir yedek kopyasını oluşturun.

  • Gelecekteki Yinelemeleri Önleyin: Gelecekte aynı kopyaların oluşmasını önlemek için önlemler alın. Bu, veri girişi sırasında veri doğrulamayı, veri temizleme rutinlerini veya benzersizliği zorlamak için veritabanı kısıtlamalarını içerebilir.

Son Düşüncelerimiz

Veri analizinde, yinelenen değerleri ele almak çok önemli bir adımdır. Yinelenen değerler hatalı sonuçlara yol açabilir. Yinelenen değerleri verimli bir şekilde tanımlayıp yöneterek, veri analistleri kesin ve önemli bilgiler elde edebilir. Bahsedilen teknikleri uygulamak ve en iyi uygulamaları takip etmek, analistlerin verilerinin bütünlüğünü korumasını ve bu verilerden değerli içgörüler çıkarmasını sağlayacaktır.

Zaman Damgası:

Den fazla Yığın kötüye kullanımı