Pandalar-profillash kutubxonasi yordamida tadqiqot ma'lumotlarini tahlil qilishni tezlashtiring

Yangi ma'lumotlar to'plami bilan ishlashni boshlashda birinchi qadam uni tushunishdir. Buni amalga oshirish uchun, masalan, o'zgaruvchilar tomonidan qabul qilingan qiymatlar diapazonini, ularning turlarini, shuningdek etishmayotgan qiymatlar sonini bilib olishingiz kerak.

Pandalar kutubxonasi bizga tadqiqot ma'lumotlarini tahlil qilish (EDA) uchun juda ko'p foydali vositalarni taqdim etadi. Lekin ularni ishlatishdan oldin odatda df.describe() kabi umumiy funktsiyalardan boshlashingiz kerak. Ammo shuni ta'kidlash kerakki, bunday funktsiyalar tomonidan taqdim etilgan imkoniyatlar cheklangan va EDAni amalga oshirishda har qanday ma'lumotlar to'plami bilan ishlashning dastlabki bosqichlari ko'pincha bir-biriga juda o'xshash.

Pandalar-profillash kutubxonasi yordamida tadqiqot ma'lumotlarini tahlil qilishni tezlashtiring

Bugun e'lon qilayotgan materialimiz muallifi takroriy harakatlarni amalga oshirish tarafdori emasligini aytadi. Natijada, qidiruv ma'lumotlarini tez va samarali tahlil qilish uchun vositalarni qidirib, u kutubxonani topdi pandalarni profillash. Uning ishining natijalari ma'lum individual ko'rsatkichlar shaklida emas, balki tahlil qilingan ma'lumotlar to'g'risidagi ko'pgina ma'lumotlarni o'z ichiga olgan juda batafsil HTML hisoboti shaklida ifodalanadi, ular bilan yaqinroq ishlashni boshlashdan oldin bilishingiz kerak.

Bu erda biz misol sifatida Titanik ma'lumotlar to'plamidan foydalangan holda pandalarni profillash kutubxonasidan foydalanish xususiyatlarini ko'rib chiqamiz.

Pandalardan foydalangan holda ma'lumotlarni tahlil qilish

Men Titanik ma'lumotlar to'plamida turli xil ma'lumotlar va undagi etishmayotgan qiymatlar mavjudligi sababli pandalar profilini sinab ko'rishga qaror qildim. Menimcha, pandalar-profillash kutubxonasi, ayniqsa, ma'lumotlar hali tozalanmagan va uning xususiyatlariga qarab qo'shimcha ishlov berishni talab qiladigan holatlarda qiziqarli. Bunday qayta ishlashni muvaffaqiyatli amalga oshirish uchun siz qaerdan boshlashingiz va nimaga e'tibor berishingiz kerakligini bilishingiz kerak. Bu erda pandalar profilini yaratish qobiliyati yordam beradi.

Birinchidan, biz ma'lumotlarni import qilamiz va tavsiflovchi statistik ma'lumotlarni olish uchun pandalardan foydalanamiz:

# ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
import pandas as pd
import pandas_profiling
import numpy as np

# ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…
df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')

# вычислСниС ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ статистики
df.describe()

Ushbu kod qismini bajarganingizdan so'ng, siz quyidagi rasmda ko'rsatilgan narsani olasiz.

Pandalar-profillash kutubxonasi yordamida tadqiqot ma'lumotlarini tahlil qilishni tezlashtiring
Standart pandalar vositalari yordamida olingan tavsiflovchi statistika

Bu erda juda ko'p foydali ma'lumotlar mavjud bo'lsa-da, u o'rganilayotgan ma'lumotlar haqida bilish qiziq bo'lgan hamma narsani o'z ichiga olmaydi. Masalan, ma'lumotlar ramkasida, strukturada deb taxmin qilish mumkin DataFrame, 891 qator bor. Agar buni tekshirish kerak bo'lsa, ramka o'lchamini aniqlash uchun yana bir qator kod talab qilinadi. Ushbu hisob-kitoblar ayniqsa resurs talab qilmasa ham, ularni har doim takrorlash vaqtni behuda sarflashga olib keladi, bu ma'lumotlarni tozalashga sarflanishi mumkin.

Pandas-profiling yordamida ma'lumotlarni kashfiyot tahlili

Endi pandas-profiling yordamida xuddi shunday qilamiz:

pandas_profiling.ProfileReport(df)

Yuqoridagi kod satrini bajarish tadqiqot ma'lumotlarini tahlil qilish ko'rsatkichlari bilan hisobot yaratadi. Yuqorida ko'rsatilgan kod topilgan ma'lumotlarni chiqaradi, lekin siz uni HTML faylini chiqarishingiz mumkin, masalan, kimgadir ko'rsatishingiz mumkin.

Hisobotning birinchi qismida ma'lumotlar (kuzatishlar soni, o'zgaruvchilar soni va boshqalar) haqida asosiy ma'lumotlarni ko'rsatadigan Umumiy ko'rinish bo'limi mavjud. Shuningdek, u ogohlantirishlar ro'yxatini o'z ichiga oladi, tahlilchiga alohida e'tibor berish kerak bo'lgan narsalar haqida xabar beradi. Ushbu ogohlantirishlar ma'lumotlarni tozalash harakatlaringizni qayerga qaratishingiz mumkinligi haqida maslahatlar berishi mumkin.

Pandalar-profillash kutubxonasi yordamida tadqiqot ma'lumotlarini tahlil qilishni tezlashtiring
Umumiy hisobot bo'limi

Izlanishli o'zgaruvchan tahlil

Hisobotning Umumiy ko'rinish bo'limi ostida har bir o'zgaruvchi haqida foydali ma'lumotlarni topishingiz mumkin. Ular, jumladan, har bir o'zgaruvchining taqsimlanishini tavsiflovchi kichik diagrammalarni o'z ichiga oladi.

Pandalar-profillash kutubxonasi yordamida tadqiqot ma'lumotlarini tahlil qilishni tezlashtiring
Yosh sonli o'zgaruvchisi haqida

Oldingi misoldan ko'rinib turibdiki, pandalarni profillash bizga etishmayotgan qiymatlarning foizi va soni, shuningdek, biz allaqachon ko'rgan tavsiflovchi statistik ko'rsatkichlar kabi bir nechta foydali ko'rsatkichlarni beradi. Chunki Age raqamli o'zgaruvchidir, uning gistogramma ko'rinishida taqsimlanishini vizualizatsiya qilish bizda o'ngga qiyshaygan taqsimotga ega degan xulosaga kelishimizga imkon beradi.

Kategorik o'zgaruvchini ko'rib chiqishda, chiqish natijalari raqamli o'zgaruvchi uchun topilganidan bir oz farq qiladi.

Pandalar-profillash kutubxonasi yordamida tadqiqot ma'lumotlarini tahlil qilishni tezlashtiring
Jinsiy kategoriya o'zgaruvchisi haqida

Ya'ni, o'rtacha, minimal va maksimalni topish o'rniga, pandalarni profillash kutubxonasi sinflar sonini topdi. Chunki Sex - ikkilik o'zgaruvchi, uning qiymatlari ikkita sinf bilan ifodalanadi.

Agar siz ham men kabi kodni tekshirishni yoqtirmoqchi bo'lsangiz, pandalar-profillash kutubxonasi ushbu ko'rsatkichlarni qanday aniq hisoblashi sizni qiziqtirishi mumkin. Kutubxona kodi ochiq va GitHub-da mavjud ekanligini hisobga olsak, bu haqda bilish unchalik qiyin emas. Men loyihalarimda qora qutilardan foydalanishni yaxshi ko'rmaganim uchun kutubxonaning manba kodini ko'rib chiqdim. Masalan, raqamli o'zgaruvchilarni qayta ishlash mexanizmi funksiya bilan ifodalangan shunday ko'rinadi tasvirlash_raqamli_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)

Ushbu kod qismi juda katta va murakkab bo'lib tuyulishi mumkin bo'lsa-da, uni tushunish juda oddiy. Gap shundaki, kutubxonaning dastlabki kodida o'zgaruvchilarning turlarini aniqlaydigan funksiya mavjud. Agar kutubxona raqamli o'zgaruvchiga duch kelganligi aniqlansa, yuqoridagi funksiya biz ko'rib chiqayotgan ko'rsatkichlarni topadi. Bu funksiya turdagi ob'ektlar bilan ishlash uchun standart panda operatsiyalaridan foydalanadi Series, kabi series.mean(). Hisoblash natijalari lug'atda saqlanadi stats. Histogrammalar funksiyaning moslashtirilgan versiyasi yordamida yaratiladi matplotlib.pyplot.hist. Moslashuv funksiyaning har xil turdagi ma'lumotlar to'plamlari bilan ishlashini ta'minlashga qaratilgan.

Korrelyatsiya ko'rsatkichlari va o'rganilgan namunaviy ma'lumotlar

O'zgaruvchilarni tahlil qilish natijalaridan so'ng, korrelyatsiyalar bo'limida pandas-profiling, Pearson va Spearman korrelyatsiya matritsalarini ko'rsatadi.

Pandalar-profillash kutubxonasi yordamida tadqiqot ma'lumotlarini tahlil qilishni tezlashtiring
Pearson korrelyatsiya matritsasi

Agar kerak bo'lsa, siz hisobotni yaratishni qo'zg'atadigan kod qatorida korrelyatsiyani hisoblashda foydalaniladigan chegara qiymatlari ko'rsatkichlarini o'rnatishingiz mumkin. Buni amalga oshirish orqali siz tahlilingiz uchun qanday korrelyatsiya kuchi muhim deb hisoblanishini belgilashingiz mumkin.

Nihoyat, Namuna bo'limida pandalarni profillash hisoboti, misol sifatida, ma'lumotlar to'plamining boshidan olingan ma'lumotlar qismini ko'rsatadi. Bunday yondashuv yoqimsiz kutilmagan hodisalarga olib kelishi mumkin, chunki dastlabki bir nechta kuzatishlar butun ma'lumotlar to'plamining xususiyatlarini aks ettirmaydigan namunani ko'rsatishi mumkin.

Pandalar-profillash kutubxonasi yordamida tadqiqot ma'lumotlarini tahlil qilishni tezlashtiring
O'rganilayotgan namuna ma'lumotlarini o'z ichiga olgan bo'lim

Natijada, men ushbu oxirgi qismga e'tibor berishni tavsiya etmayman. Buning o'rniga, buyruqni ishlatish yaxshiroqdir df.sample(5), bu ma'lumotlar to'plamidan tasodifiy 5 ta kuzatishni tanlaydi.

natijalar

Xulosa qilib aytadigan bo'lsak, pandalarni profillash kutubxonasi tahlilchiga ma'lumotlar haqida tezda taxminiy tasavvurga ega bo'lishingiz yoki kimgadir razvedka tahlili hisobotini topshirishingiz kerak bo'lgan hollarda foydali bo'ladigan ba'zi foydali imkoniyatlarni beradi. Shu bilan birga, ma'lumotlar bilan haqiqiy ish, uning xususiyatlarini hisobga olgan holda, panda-profillashdan foydalanmasdan, qo'lda amalga oshiriladi.

Agar siz bitta Jupyter daftarida barcha razvedka ma'lumotlarini tahlil qilish qanday ko'rinishini ko'rib chiqmoqchi bo'lsangiz, bu mening loyiham nbviewer yordamida yaratilgan. Va ichida bu Tegishli kodni GitHub omborlarida topishingiz mumkin.

Hurmatli o'quvchilar! Yangi ma'lumotlar to'plamini tahlil qilishni qayerdan boshlaysiz?

Pandalar-profillash kutubxonasi yordamida tadqiqot ma'lumotlarini tahlil qilishni tezlashtiring

Manba: www.habr.com

a Izoh qo'shish