Pandaların profilli kitabxanasından istifadə edərək kəşfiyyat məlumatlarının təhlilini sürətləndirin

Yeni məlumat dəsti ilə işləməyə başlayanda ilk addım onu ​​başa düşməkdir. Bunu etmək üçün, məsələn, dəyişənlər tərəfindən qəbul edilən dəyər diapazonlarını, onların növlərini tapmaq, həmçinin çatışmayan dəyərlərin sayını öyrənmək lazımdır.

Pandalar kitabxanası bizə kəşfiyyat məlumatlarının təhlilini (EDA) həyata keçirmək üçün bir çox faydalı alətlər təqdim edir. Lakin onlardan istifadə etməzdən əvvəl adətən df.describe() kimi daha ümumi funksiyalardan başlamalısınız. Bununla belə, qeyd etmək lazımdır ki, bu cür funksiyaların təmin etdiyi imkanlar məhduddur və EDA həyata keçirərkən hər hansı bir məlumat dəsti ilə işləməyin ilkin mərhələləri çox vaxt bir-birinə çox oxşardır.

Pandaların profilli kitabxanasından istifadə edərək kəşfiyyat məlumatlarının təhlilini sürətləndirin

Bu gün dərc etdiyimiz materialın müəllifi deyir ki, o, təkrarlanan hərəkətlər etmək həvəskarı deyil. Nəticədə, kəşfiyyat məlumatlarının təhlilini tez və effektiv şəkildə həyata keçirmək üçün alətlər axtarışında o, kitabxananı tapdı pandaların profilləşdirilməsi. Onun işinin nəticələri müəyyən fərdi göstəricilər şəklində deyil, onunla daha yaxından işləməyə başlamazdan əvvəl bilməli olduğunuz təhlil edilmiş məlumatlar haqqında məlumatların əksəriyyətini ehtiva edən kifayət qədər ətraflı HTML hesabatı şəklində ifadə edilir.

Burada nümunə olaraq Titanik məlumat dəstindən istifadə edərək pandaların profilli kitabxanasından istifadənin xüsusiyyətlərinə baxacağıq.

Pandalardan istifadə edərək kəşfiyyat məlumatlarının təhlili

Tərkibindəki müxtəlif növ məlumatlara və itkin dəyərlərin olmasına görə Titanik məlumat dəstində pandaların profilini sınamaq qərarına gəldim. Hesab edirəm ki, pandaların profilli kitabxanası məlumatların hələ təmizlənmədiyi və xüsusiyyətlərindən asılı olaraq əlavə emal tələb olunduğu hallarda xüsusilə maraqlıdır. Bu cür emalları uğurla həyata keçirmək üçün haradan başlamaq və nəyə diqqət yetirmək lazım olduğunu bilməlisiniz. Bu, pandaların profilini yaratma imkanlarının lazımlı olduğu yerdir.

Birincisi, biz məlumatları idxal edirik və təsviri statistika əldə etmək üçün pandalardan istifadə edirik:

# импорт необходимых пакетов
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ı icra etdikdən sonra aşağıdakı şəkildə göstərilənləri əldə edəcəksiniz.

Pandaların profilli kitabxanasından istifadə edərək kəşfiyyat məlumatlarının təhlilini sürətləndirin
Standart panda alətlərindən istifadə edərək əldə edilən təsviri statistika

Burada çoxlu faydalı məlumatlar olsa da, öyrənilən məlumatlar haqqında bilmək maraqlı olacaq hər şeyi ehtiva etmir. Məsələn, bir məlumat çərçivəsində, bir strukturda olduğunu güman etmək olar DataFrame, 891 sıra var. Bunu yoxlamaq lazımdırsa, çərçivənin ölçüsünü müəyyən etmək üçün başqa bir kod xətti tələb olunur. Bu hesablamalar xüsusilə resurs tutumlu olmasa da, onları hər zaman təkrarlamaq, məlumatların təmizlənməsinə daha yaxşı xərclənə biləcək vaxt itkisinə səbəb olur.

Pandaların profilindən istifadə edərək kəşfiyyat məlumatlarının təhlili

İndi pandaların profilindən istifadə edərək eyni şeyi edək:

pandas_profiling.ProfileReport(df)

Yuxarıdakı kod xəttinin icrası kəşfiyyat xarakterli məlumatların təhlili göstəriciləri ilə hesabat yaradacaq. Yuxarıda göstərilən kod tapılan məlumatları çıxaracaq, lakin siz onu, məsələn, kiməsə göstərə biləcəyiniz HTML faylı çıxara bilərsiniz.

Hesabatın birinci hissəsində məlumatlar haqqında əsas məlumatları (müşahidələrin sayı, dəyişənlərin sayı və s.) verən Ümumi Baxış bölməsi olacaq. O, həmçinin analitikə xüsusi diqqət yetirməli olan şeyləri bildirən xəbərdarlıqların siyahısını ehtiva edəcəkdir. Bu xəbərdarlıqlar məlumatların təmizlənməsi səylərinizi hara cəmləyəcəyinizə dair ipucu verə bilər.

Pandaların profilli kitabxanasından istifadə edərək kəşfiyyat məlumatlarının təhlilini sürətləndirin
İcmal hesabat bölməsi

Kəşfedici Dəyişən Analiz

Hesabatın İcmal bölməsinin altında hər bir dəyişən haqqında faydalı məlumat tapa bilərsiniz. Onlara, digər şeylər arasında, hər bir dəyişənin paylanmasını təsvir edən kiçik diaqramlar daxildir.

Pandaların profilli kitabxanasından istifadə edərək kəşfiyyat məlumatlarının təhlilini sürətləndirin
Yaş Rəqəm Dəyişənləri Haqqında

Əvvəlki nümunədən göründüyü kimi, pandaların profilləşdirilməsi bizə çatışmayan dəyərlərin faizi və sayı, həmçinin artıq gördüyümüz təsviri statistik ölçülər kimi bir neçə faydalı göstərici verir. Çünki Age ədədi dəyişəndir, onun paylanmasının histoqram şəklində vizuallaşdırılması bizə sağa əyilmiş paylanmanın olduğu qənaətinə gəlməyə imkan verir.

Kateqorik dəyişəni nəzərdən keçirərkən, çıxış nəticələri ədədi dəyişən üçün tapılanlardan bir qədər fərqlidir.

Pandaların profilli kitabxanasından istifadə edərək kəşfiyyat məlumatlarının təhlilini sürətləndirin
Cins kateqoriyalı dəyişən haqqında

Məhz, orta, minimum və maksimumu tapmaq əvəzinə, pandaların profilini təyin edən kitabxana siniflərin sayını tapdı. Çünki Sex — ikili dəyişən, onun dəyərləri iki siniflə təmsil olunur.

Əgər siz də mənim kimi kodu yoxlamaq istəyirsinizsə, pandaların profilini tərtib edən kitabxananın bu ölçüləri necə dəqiq hesabladığı ilə maraqlana bilərsiniz. Kitabxana kodunun açıq və GitHub-da mövcud olduğunu nəzərə alsaq, bu barədə məlumat əldə etmək o qədər də çətin deyil. Layihələrimdə qara qutulardan istifadənin böyük həvəskarı olmadığım üçün kitabxananın mənbə koduna nəzər saldım. Məsələn, funksiya ilə təmsil olunan ədədi dəyişənlərin işlənməsi mexanizmi belə görünür təsvir_rəqəm_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ı olduqca böyük və mürəkkəb görünsə də, əslində onu başa düşmək çox sadədir. Məsələ burasındadır ki, kitabxananın mənbə kodunda dəyişənlərin növlərini təyin edən funksiya mövcuddur. Kitabxananın rəqəmli dəyişənlə qarşılaşdığı ortaya çıxarsa, yuxarıdakı funksiya baxdığımız ölçüləri tapacaq. Bu funksiya tipli obyektlərlə işləmək üçün standart panda əməliyyatlarından istifadə edir Series, kimi series.mean(). Hesablama nəticələri lüğətdə saxlanılır stats. Histoqramlar funksiyanın uyğunlaşdırılmış versiyasından istifadə etməklə yaradılır matplotlib.pyplot.hist. Uyğunlaşma funksiyanın müxtəlif növ məlumat dəstləri ilə işləyə bilməsini təmin etmək məqsədi daşıyır.

Tədqiq olunan korrelyasiya göstəriciləri və nümunə məlumatları

Dəyişənlərin təhlilinin nəticələrindən sonra korrelyasiya bölməsində pandaların profilləşdirilməsi Pearson və Spearman korrelyasiya matrislərini göstərəcək.

Pandaların profilli kitabxanasından istifadə edərək kəşfiyyat məlumatlarının təhlilini sürətləndirin
Pearson korrelyasiya matrisi

Lazım gələrsə, hesabatın yaradılmasına səbəb olan kod sətrində korrelyasiya hesablanarkən istifadə olunan həddi dəyərlərin göstəricilərini təyin edə bilərsiniz. Bunu etməklə, analiziniz üçün hansı korrelyasiya gücünün vacib hesab edildiyini təyin edə bilərsiniz.

Nəhayət, Nümunə bölməsində pandaların profilinin yaradılması hesabatı, nümunə olaraq, məlumat dəstinin əvvəlindən götürülmüş məlumat parçasını göstərir. Bu yanaşma xoşagəlməz sürprizlərə səbəb ola bilər, çünki ilk bir neçə müşahidə bütün məlumat dəstinin xüsusiyyətlərini əks etdirməyən nümunəni təmsil edə bilər.

Pandaların profilli kitabxanasından istifadə edərək kəşfiyyat məlumatlarının təhlilini sürətləndirin
Tədqiq olunan nümunə məlumatları ehtiva edən bölmə

Nəticə etibarı ilə bu son hissəyə diqqət yetirməyi məsləhət görmürəm. Bunun əvəzinə əmrdən istifadə etmək daha yaxşıdır df.sample(5), məlumat dəstindən təsadüfi olaraq 5 müşahidə seçəcək.

Nəticələri

Xülasə etmək üçün, pandaların profilli kitabxanası analitikə məlumatlar haqqında tez bir fikir əldə etmək və ya kəşfiyyat təhlili hesabatını kiməsə ötürmək lazım olduğu hallarda lazımlı olacaq bəzi faydalı imkanlar verir. Eyni zamanda, məlumatlarla real iş onun xüsusiyyətləri nəzərə alınmaqla, pandaların profilindən istifadə etmədən əl ilə həyata keçirilir.

Bütün kəşfiyyat məlumatlarının təhlilinin bir Jupyter notebookunda necə göründüyünə nəzər salmaq istəyirsinizsə, bu layihəm nbviewer istifadə edərək yaradılmışdır. Və içində bu Müvafiq kodu GitHub depolarında tapa bilərsiniz.

Hörmətli oxucular! Yeni məlumat dəstlərini təhlil etməyə haradan başlayırsınız?

Pandaların profilli kitabxanasından istifadə edərək kəşfiyyat məlumatlarının təhlilini sürətləndirin

Mənbə: www.habr.com

Добавить комментарий