Panda profil oluşturma kitaplığını kullanarak keşif amaçlı veri analizini hızlandırın

Yeni bir veri seti ile çalışmaya başlamanın ilk adımı onu anlamaktır. Bunu yapabilmek için örneğin değişkenlerin kabul ettiği değer aralıklarını, türlerini bulmanız ve ayrıca eksik değerlerin sayısını da öğrenmeniz gerekir.

Pandas kütüphanesi bize keşifsel veri analizi (EDA) gerçekleştirmek için birçok yararlı araç sağlar. Ancak bunları kullanmadan önce genellikle df.describe() gibi daha genel işlevlerle başlamanız gerekir. Ancak, bu tür işlevlerin sağladığı yeteneklerin sınırlı olduğu ve EDA gerçekleştirirken herhangi bir veri kümesiyle çalışmanın ilk aşamalarının çoğu zaman birbirine çok benzer olduğu unutulmamalıdır.

Panda profil oluşturma kitaplığını kullanarak keşif amaçlı veri analizini hızlandırın

Bugün yayınladığımız materyalin yazarı, tekrarlayan eylemler gerçekleştirmenin hayranı olmadığını söylüyor. Sonuç olarak, keşifsel veri analizini hızlı ve verimli bir şekilde gerçekleştirmek için gerekli araçları ararken kütüphaneyi buldu. panda profili çıkarma. Çalışmasının sonuçları, belirli bireysel göstergeler biçiminde değil, analiz edilen verilerle ilgili daha yakından çalışmaya başlamadan önce bilmeniz gerekebilecek bilgilerin çoğunu içeren oldukça ayrıntılı bir HTML raporu biçiminde ifade edilir.

Burada örnek olarak Titanic veri kümesini kullanarak panda profil oluşturma kütüphanesini kullanmanın özelliklerine bakacağız.

Pandaları kullanarak keşifsel veri analizi

İçerdiği farklı veri türleri ve eksik değerlerin varlığı nedeniyle Titanic veri kümesinde panda profili oluşturmayı denemeye karar verdim. Panda profilleme kütüphanesinin, verilerin henüz temizlenmediği ve özelliklerine bağlı olarak daha fazla işlem gerektirdiği durumlarda özellikle ilgi çekici olduğuna inanıyorum. Bu tür işlemleri başarılı bir şekilde gerçekleştirmek için nereden başlayacağınızı ve nelere dikkat etmeniz gerektiğini bilmeniz gerekir. Pandaların profil oluşturma yeteneklerinin kullanışlı olduğu yer burasıdır.

Öncelikle verileri içe aktarıyoruz ve tanımlayıcı istatistikler elde etmek için pandaları kullanıyoruz:

# импорт необходимых пакетов
import pandas as pd
import pandas_profiling
import numpy as np

# импорт данных
df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')

# вычисление показателей описательной статистики
df.describe()

Bu kod parçasını çalıştırdıktan sonra aşağıdaki şekilde gösterileni elde edeceksiniz.

Panda profil oluşturma kitaplığını kullanarak keşif amaçlı veri analizini hızlandırın
Standart panda araçları kullanılarak elde edilen tanımlayıcı istatistikler

Burada pek çok yararlı bilgi olmasına rağmen, incelenen veriler hakkında bilinmesi ilginç olabilecek her şeyi içermemektedir. Örneğin, bir veri çerçevesinde, bir yapıda olduğu varsayılabilir. DataFrame891 satır var. Bunun kontrol edilmesi gerekiyorsa çerçevenin boyutunu belirlemek için başka bir kod satırı gerekir. Bu hesaplamalar özellikle kaynak yoğun olmasa da, bunların sürekli tekrarlanması, muhtemelen verileri temizlemek için daha iyi harcanabilecek zamanı boşa harcamaya neden olacaktır.

Panda profili oluşturmayı kullanarak keşifsel veri analizi

Şimdi aynısını pandas-profiling kullanarak yapalım:

pandas_profiling.ProfileReport(df)

Yukarıdaki kod satırının çalıştırılması, keşfedici veri analizi göstergelerini içeren bir rapor oluşturacaktır. Yukarıda gösterilen kod, bulunan verinin çıktısını alacaktır, ancak örneğin birine gösterebileceğiniz bir HTML dosyasının çıktısını da alabilirsiniz.

Raporun ilk bölümünde verilerle ilgili temel bilgilerin (gözlem sayısı, değişken sayısı vb.) verildiği bir Genel Bakış bölümü yer alacaktır. Ayrıca analistin özellikle dikkat etmesi gereken şeyleri bildiren bir uyarı listesi de içerecektir. Bu uyarılar, veri temizleme çalışmalarınızı nereye odaklayabileceğinize dair ipuçları sağlayabilir.

Panda profil oluşturma kitaplığını kullanarak keşif amaçlı veri analizini hızlandırın
Genel bakış raporu bölümü

Açıklayıcı Değişken Analizi

Raporun Genel Bakış bölümünün altında her değişken hakkında faydalı bilgiler bulabilirsiniz. Bunlar, diğer şeylerin yanı sıra, her değişkenin dağılımını açıklayan küçük çizelgeleri içerir.

Panda profil oluşturma kitaplığını kullanarak keşif amaçlı veri analizini hızlandırın
Yaş Sayısal Değişkeni Hakkında

Önceki örnekte görebileceğiniz gibi, panda profili oluşturma bize eksik değerlerin yüzdesi ve sayısı gibi çeşitli yararlı göstergelerin yanı sıra daha önce gördüğümüz tanımlayıcı istatistik ölçümlerini de sağlar. Çünkü Age sayısal bir değişkendir, dağılımının histogram şeklinde görselleştirilmesi sağa çarpık bir dağılıma sahip olduğumuz sonucuna varmamızı sağlar.

Kategorik bir değişken göz önüne alındığında, çıktı sonuçları sayısal bir değişken için bulunanlardan biraz farklıdır.

Panda profil oluşturma kitaplığını kullanarak keşif amaçlı veri analizini hızlandırın
Cinsiyet kategorik değişkeni hakkında

Yani, panda profilleme kütüphanesi ortalamayı, minimumu ve maksimumu bulmak yerine sınıf sayısını buldu. Çünkü Sex — ikili bir değişken, değerleri iki sınıfla temsil edilir.

Eğer siz de benim gibi kodu incelemeyi seviyorsanız, panda profil oluşturma kütüphanesinin bu ölçümleri tam olarak nasıl hesapladığı ilginizi çekebilir. Kütüphane kodunun GitHub'da açık ve mevcut olduğu göz önüne alındığında bunu öğrenmek o kadar da zor değil. Projelerimde kara kutu kullanmanın büyük bir hayranı olmadığım için kütüphanenin kaynak koduna bir göz attım. Örneğin, sayısal değişkenleri işlemek için kullanılan mekanizma şu şekilde görünür; fonksiyonla temsil edilir define_numeric_1d:

def describe_numeric_1d(series, **kwargs):
    """Compute summary statistics of a numerical (`TYPE_NUM`) variable (a Series).
    Also create histograms (mini an full) of its distribution.
    Parameters
    ----------
    series : Series
        The variable to describe.
    Returns
    -------
    Series
        The description of the variable as a Series with index being stats keys.
    """
    # Format a number as a percentage. For example 0.25 will be turned to 25%.
    _percentile_format = "{:.0%}"
    stats = dict()
    stats['type'] = base.TYPE_NUM
    stats['mean'] = series.mean()
    stats['std'] = series.std()
    stats['variance'] = series.var()
    stats['min'] = series.min()
    stats['max'] = series.max()
    stats['range'] = stats['max'] - stats['min']
    # To avoid to compute it several times
    _series_no_na = series.dropna()
    for percentile in np.array([0.05, 0.25, 0.5, 0.75, 0.95]):
        # The dropna() is a workaround for https://github.com/pydata/pandas/issues/13098
        stats[_percentile_format.format(percentile)] = _series_no_na.quantile(percentile)
    stats['iqr'] = stats['75%'] - stats['25%']
    stats['kurtosis'] = series.kurt()
    stats['skewness'] = series.skew()
    stats['sum'] = series.sum()
    stats['mad'] = series.mad()
    stats['cv'] = stats['std'] / stats['mean'] if stats['mean'] else np.NaN
    stats['n_zeros'] = (len(series) - np.count_nonzero(series))
    stats['p_zeros'] = stats['n_zeros'] * 1.0 / len(series)
    # Histograms
    stats['histogram'] = histogram(series, **kwargs)
    stats['mini_histogram'] = mini_histogram(series, **kwargs)
    return pd.Series(stats, name=series.name)

Bu kod parçası oldukça büyük ve karmaşık görünse de aslında anlaşılması oldukça basittir. Mesele şu ki, kütüphanenin kaynak kodunda değişken türlerini belirleyen bir fonksiyon var. Kütüphanenin sayısal bir değişkenle karşılaştığı ortaya çıkarsa yukarıdaki fonksiyon baktığımız metrikleri bulacaktır. Bu işlev, aşağıdaki türdeki nesnelerle çalışmak için standart panda işlemlerini kullanır: Series, beğenmek series.mean(). Hesaplama sonuçları bir sözlükte saklanır stats. Histogramlar, fonksiyonun uyarlanmış bir versiyonu kullanılarak oluşturulur matplotlib.pyplot.hist. Uyarlama, işlevin farklı türdeki veri kümeleriyle çalışabilmesini sağlamayı amaçlamaktadır.

Korelasyon göstergeleri ve incelenen örnek veriler

Değişkenlerin analizinin sonuçlarından sonra, Korelasyonlar bölümünde panda profili oluşturma Pearson ve Spearman korelasyon matrislerini gösterecektir.

Panda profil oluşturma kitaplığını kullanarak keşif amaçlı veri analizini hızlandırın
Pearson korelasyon matrisi

Gerekirse raporun oluşturulmasını tetikleyen kod satırında korelasyon hesaplanırken kullanılan eşik değerlerinin göstergelerini ayarlayabilirsiniz. Bunu yaparak, analiziniz için hangi korelasyon gücünün önemli kabul edildiğini belirleyebilirsiniz.

Son olarak, Örnek bölümündeki panda profili oluşturma raporu, örnek olarak veri kümesinin başlangıcından alınan bir veri parçasını görüntüler. Bu yaklaşım hoş olmayan sürprizlere yol açabilir, çünkü ilk birkaç gözlem tüm veri setinin özelliklerini yansıtmayan bir örneği temsil edebilir.

Panda profil oluşturma kitaplığını kullanarak keşif amaçlı veri analizini hızlandırın
İncelenmekte olan örnek verileri içeren bölüm

Sonuç olarak bu son bölüme dikkat etmenizi önermiyorum. Bunun yerine şu komutu kullanmak daha iyidir: df.sample(5)veri setinden rastgele 5 gözlem seçecektir.

sonuçlar

Özetlemek gerekirse, pandaların profil oluşturma kütüphanesi, analistlere, veriler hakkında hızlı bir şekilde kaba bir fikir edinmeniz veya bir istihbarat analizi raporunu birine aktarmanız gerektiğinde kullanışlı olacak bazı yararlı yetenekler sağlar. Aynı zamanda, özellikleri dikkate alınarak verilerle gerçek çalışma, panda profil oluşturma kullanılmadan olduğu gibi manuel olarak gerçekleştirilir.

Tüm istihbarat veri analizinin tek bir Jupyter not defterinde nasıl göründüğüne bir göz atmak isterseniz, şuna bir göz atın: bu projem nbviewer kullanılarak oluşturuldu. Ve Bu İlgili kodu GitHub depolarında bulabilirsiniz.

Sevgili okuyucular! Yeni veri kümelerini analiz etmeye nereden başlıyorsunuz?

Panda profil oluşturma kitaplığını kullanarak keşif amaçlı veri analizini hızlandırın

Kaynak: habr.com

Yorum ekle