پنڊاس-پروفائلنگ لائبريري استعمال ڪندي ڳولا واري ڊيٽا جي تجزيو کي تيز ڪريو

پهريون قدم جڏهن نئين ڊيٽا سيٽ سان ڪم ڪرڻ شروع ڪيو ته ان کي سمجهڻ آهي. ھن کي ڪرڻ لاءِ، توھان کي ضرورت آھي، مثال طور، متغيرن پاران قبول ڪيل قدرن جي حدن کي معلوم ڪرڻ لاءِ، انھن جا قسم، ۽ پڻ معلوم ڪريو گم ٿيل قدرن جي تعداد بابت.

پانڊاس لائبريري اسان کي مهيا ڪري ٿي ڪيترن ئي ڪارآمد اوزارن کي انجام ڏيڻ لاءِ exploratory data analysis (EDA). پر ان کان اڳ توھان انھن کي استعمال ڪريو، توھان کي عام طور تي وڌيڪ عام ڪمن سان شروع ڪرڻ جي ضرورت آھي جھڙوڪ df.describe(). بهرحال، اهو ياد رکڻ گهرجي ته اهڙن ڪمن پاران مهيا ڪيل صلاحيتون محدود هونديون آهن، ۽ ڪنهن به ڊيٽا سيٽ سان ڪم ڪرڻ جي شروعاتي مرحلن جڏهن EDA کي انجام ڏيڻ ۾ اڪثر گهڻو ڪري هڪ ٻئي سان ملندڙ جلندڙ آهن.

پنڊاس-پروفائلنگ لائبريري استعمال ڪندي ڳولا واري ڊيٽا جي تجزيو کي تيز ڪريو

مواد جو مصنف جيڪو اسان اڄ شايع ڪري رهيا آهيون اهو چوي ٿو ته هو بار بار ڪارناما انجام ڏيڻ جو پرستار ناهي. نتيجي طور، اوزار جي ڳولا ۾ جلدي ۽ موثر طريقي سان ڊيٽا جي تجزيي کي انجام ڏيڻ لاء، هن لائبريري کي مليو. pandas- پروفائلنگ. ان جي ڪم جا نتيجا ظاهر نه ڪيا ويا آهن مخصوص انفرادي اشارن جي صورت ۾، پر هڪ انتهائي تفصيلي HTML رپورٽ جي صورت ۾، جنهن ۾ تجزيي ڪيل ڊيٽا بابت تمام گهڻي معلومات شامل آهي جيڪا توهان کي ڄاڻڻ جي ضرورت پوندي ان سان وڌيڪ ويجهي ڪم ڪرڻ کان پهريان.

هتي اسان مثال طور ٽائيٽينڪ ڊيٽا سيٽ استعمال ڪندي پانڊاس پروفائلنگ لائبريري استعمال ڪرڻ جي خاصيتن کي ڏسنداسين.

پانڊا استعمال ڪندي تحقيقي ڊيٽا جو تجزيو

مون ٽائيٽينڪ ڊيٽا سيٽ تي پانڊاس-پروفائلنگ سان تجربو ڪرڻ جو فيصلو ڪيو، ڇاڪاڻ ته ان ۾ موجود مختلف قسم جي ڊيٽا ۽ ان ۾ گم ٿيل قدرن جي موجودگي. مان سمجهان ٿو ته پانڊاس پروفائلنگ لائبريري خاص طور تي دلچسپ آهي ڪيسن ۾ جتي ڊيٽا اڃا تائين صاف نه ڪئي وئي آهي ۽ ان جي خاصيتن جي لحاظ کان وڌيڪ پروسيسنگ جي ضرورت آهي. اهڙي پروسيسنگ کي ڪاميابي سان انجام ڏيڻ لاء، توهان کي ڄاڻڻ جي ضرورت آهي ته ڪٿي شروع ڪرڻ ۽ ڇا ڌيان ڏيڻ گهرجي. هي اهو آهي جتي پانڊا-پروفائلنگ صلاحيتون هٿ ۾ اچن ٿيون.

پهريون، اسان ڊيٽا درآمد ڪريون ٿا ۽ وضاحتي انگ اکر حاصل ڪرڻ لاءِ پانڊا استعمال ڪريون ٿا:

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

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

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

ڪوڊ جي هن ٽڪري تي عمل ڪرڻ کان پوء، توهان حاصل ڪندا جيڪي هيٺ ڏنل شڪل ۾ ڏيکاريل آهي.

پنڊاس-پروفائلنگ لائبريري استعمال ڪندي ڳولا واري ڊيٽا جي تجزيو کي تيز ڪريو
وضاحتي انگ اکر معياري پانڊا اوزار استعمال ڪندي حاصل ڪيا ويا

جيتوڻيڪ هتي تمام گهڻي مفيد معلومات موجود آهي، ان ۾ هر شي تي مشتمل نه آهي جيڪا مطالعي هيٺ ڊيٽا بابت ڄاڻڻ لاء دلچسپ هجي. مثال طور، ھڪڙو فرض ڪري سگھي ٿو ھڪڙي ڊيٽا فريم ۾، ھڪڙي جوڙجڪ ۾ DataFrame، اتي 891 قطارون آهن. جيڪڏهن هن کي چڪاس ڪرڻ جي ضرورت آهي، ته پوء ڪوڊ جي هڪ ٻي لائن جي ضرورت آهي فريم جي سائيز کي طئي ڪرڻ لاء. جڏهن ته اهي حساب خاص طور تي وسيلا نه هوندا آهن، انهن کي هر وقت ورجائڻ وقت ضايع ڪرڻ جو پابند آهي جيڪو شايد ڊيٽا کي صاف ڪرڻ ۾ بهتر خرچ ڪري سگهجي ٿو.

پانڊاس-پروفائلنگ استعمال ڪندي ڳولا واري ڊيٽا جو تجزيو

ھاڻي اچو ته ساڳيو استعمال ڪريون pandas-profiling:

pandas_profiling.ProfileReport(df)

ڪوڊ جي مٿين لائن تي عمل ڪندي هڪ رپورٽ ٺاهي ويندي تحقيقي ڊيٽا تجزيي اشارن سان. مٿي ڏيکاريل ڪوڊ مليل ڊيٽا کي ٻاھر ڪڍندو، پر توھان ان کي ھڪڙو HTML فائل ٺاھي سگھو ٿا جيڪو توھان ڪنھن کي ڏيکاري سگھو ٿا، مثال طور.

رپورٽ جو پهريون حصو هڪ جائزو سيڪشن تي مشتمل هوندو، جيڪو ڊيٽا بابت بنيادي معلومات ڏيندو (مشاهدن جو تعداد، متغيرن جو تعداد، وغيره). اهو پڻ خبردارين جي هڪ فهرست تي مشتمل هوندو، خاص ڌيان ڏيڻ جي شين جي تجزيه نگار کي مطلع ڪندي. اهي الارم مهيا ڪري سگھن ٿا ته جيئن توهان پنهنجي ڊيٽا کي صاف ڪرڻ جي ڪوششن تي ڌيان ڏئي سگهو ٿا.

پنڊاس-پروفائلنگ لائبريري استعمال ڪندي ڳولا واري ڊيٽا جي تجزيو کي تيز ڪريو
جائزو رپورٽ سيڪشن

تفسير متغير تجزيي

هيٺ ڏنل رپورٽ جي نظرثاني واري حصي ۾ توهان هر متغير بابت مفيد معلومات ڳولي سگهو ٿا. انهن ۾ شامل آهن، ٻين شين جي وچ ۾، ننڍڙا چارٽ جيڪي هر متغير جي تقسيم کي بيان ڪن ٿا.

پنڊاس-پروفائلنگ لائبريري استعمال ڪندي ڳولا واري ڊيٽا جي تجزيو کي تيز ڪريو
عمر جي عددي متغير بابت

جيئن ته توهان پوئين مثال مان ڏسي سگهو ٿا، پانڊاس-پروفائلنگ اسان کي ڪيترائي مفيد اشارا ڏئي ٿو، جهڙوڪ فيصد ۽ غائب قدرن جو تعداد، ۽ گڏوگڏ تشريحاتي شماريات جا قدم جيڪي اسان اڳ ۾ ئي ڏٺا آهن. ڇاڪاڻ ته Age هڪ عددي متغير آهي، هسٽوگرام جي صورت ۾ ان جي ورڇ جو تصور اسان کي اهو نتيجو ڪڍڻ جي اجازت ڏئي ٿو ته اسان وٽ هڪ تقسيم ساڄي طرف ڇڪيل آهي.

جڏهن هڪ درجه بندي متغير تي غور ڪيو وڃي ته، پيداوار جا نتيجا ٿورڙا مختلف هوندا آهن جيڪي عددي متغير لاءِ مليا آهن.

پنڊاس-پروفائلنگ لائبريري استعمال ڪندي ڳولا واري ڊيٽا جي تجزيو کي تيز ڪريو
جنس جي درجه بندي متغير بابت

يعني، اوسط، گھٽ ۾ گھٽ ۽ وڌ ۾ وڌ ڳولڻ جي بدران، پنڊس-پروفائلنگ لائبريري کي ڪلاسن جو تعداد مليو. ڇاڪاڻ ته Sex - هڪ بائنري متغير، ان جا قدر ٻن طبقن جي نمائندگي ڪن ٿا.

جيڪڏھن توھان چاھيو ٿا ڪوڊ جانچڻ جھڙو آءٌ ڪريان ٿو، توھان ۾ دلچسپي ٿي سگھي ٿي ته پنڊاس-پروفائيلنگ لائبريري انھن ميٽرڪ کي ڪيئن ڳڻائي ٿي. ان بابت معلوم ڪرڻ، ڏنو ويو آهي ته لائبريري ڪوڊ کليل آهي ۽ GitHub تي دستياب آهي، ايترو ڏکيو نه آهي. جيئن ته مان پنهنجي منصوبن ۾ بليڪ باڪس استعمال ڪرڻ جو وڏو پرستار نه آهيان، مون لائبريري جي سورس ڪوڊ تي هڪ نظر ورتي. مثال طور، هي اهو آهي جيڪو پروسيسنگ عددي متغيرن لاءِ ميڪانيزم نظر اچي ٿو، فنڪشن جي نمائندگي ڪندي describe_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)

جيتوڻيڪ ڪوڊ جو هي ٽڪرو تمام وڏو ۽ پيچيده لڳي سگھي ٿو، حقيقت ۾ اهو سمجهڻ بلڪل آسان آهي. نقطي اهو آهي ته لائبريري جي سورس ڪوڊ ۾ هڪ فنڪشن آهي جيڪو متغير جي قسمن کي طئي ڪري ٿو. جيڪڏهن اهو ظاهر ٿئي ٿو ته لائبريري هڪ عددي متغير سان منهن ڪيو آهي، مٿين فنڪشن کي ملندو ميٽرڪس جيڪو اسان ڏسي رهيا هئاسين. هي فنڪشن معياري پانڊاس آپريشن کي استعمال ڪري ٿو قسم جي شين سان ڪم ڪرڻ لاء Series، جهڙو series.mean(). حساب ڪتاب جا نتيجا ڊڪشنري ۾ محفوظ ٿيل آهن stats. هسٽوگرامس ٺاهيل آھن فنڪشن جي ھڪڙي ترتيب ڏنل ورزن کي استعمال ڪندي matplotlib.pyplot.hist. موافقت جو مقصد اهو يقيني بڻائڻ آهي ته فنڪشن مختلف قسم جي ڊيٽا سيٽن سان ڪم ڪري سگهي ٿو.

رابطي جي اشارن ۽ نموني ڊيٽا جو اڀياس ڪيو ويو

متغيرن جي تجزيي جي نتيجن کان پوء، پانڊاس-پروفائلنگ، رابطي واري حصي ۾، پيئرسن ۽ اسپيئرمين جي باهمي تعلق جي ماپ کي ڏيکاريندو.

پنڊاس-پروفائلنگ لائبريري استعمال ڪندي ڳولا واري ڊيٽا جي تجزيو کي تيز ڪريو
پيئرسن جو تعلق ميٽرڪس

جيڪڏهن ضروري هجي ته، توهان ڪري سگهو ٿا، ڪوڊ جي قطار ۾ جيڪو رپورٽ جي نسل کي متحرڪ ڪري ٿو، حد جي قيمتن جي اشارن کي مقرر ڪري ٿو جڏهن استعمال ٿيل رابطي جي حساب سان. ائين ڪرڻ سان، توهان وضاحت ڪري سگھو ٿا ته توهان جي تجزيي لاءِ باهمي تعلق جي ڪهڙي قوت کي اهم سمجهيو وڃي ٿو.

آخرڪار، پانڊاس-پروفائلنگ رپورٽ، نموني سيڪشن ۾، ڏيکاري ٿو، مثال طور، ڊيٽا جو هڪ ٽڪرو جيڪو ڊيٽا سيٽ جي شروعات کان ورتو ويو آهي. اهو طريقو اڻ وڻندڙ ​​تعجب جي ڪري سگھي ٿو، ڇاڪاڻ ته پهرين ڪجھ مشاهدو هڪ نمونو پيش ڪري سگھن ٿا جيڪو پوري ڊيٽا سيٽ جي خاصيتن کي ظاهر نٿو ڪري.

پنڊاس-پروفائلنگ لائبريري استعمال ڪندي ڳولا واري ڊيٽا جي تجزيو کي تيز ڪريو
سيڪشن جنهن ۾ مطالعي هيٺ نموني ڊيٽا شامل آهي

نتيجي طور، مان هن آخري حصي تي ڌيان ڏيڻ جي صلاح نه ٿو ڏيان. ان جي بدران، اهو حڪم استعمال ڪرڻ بهتر آهي df.sample(5)، جيڪو بي ترتيب طور ڊيٽا سيٽ مان 5 مشاهدو چونڊيندو.

نتيجو

اختصار ڪرڻ لاءِ، پنڊاس-پروفائلنگ لائبريري تجزيه نگار کي ڪجهه ڪارائتيون صلاحيتون ڏئي ٿي جيڪي ڪم ۾ اينديون انهن صورتن ۾ جتي توهان کي ضرورت هجي جلدي ڊيٽا جو ڪو نه ڪو خيال حاصل ڪرڻ يا ڪنهن کي انٽيليجنس تجزياتي رپورٽ ڏيڻ جي ضرورت آهي. ساڳئي وقت، ڊيٽا سان حقيقي ڪم، اڪائونٽ ۾ ان جي خاصيتن کي کڻڻ، پرفارم ڪيو ويو آهي، جيئن ته پانڊاس-پروفائلنگ استعمال ڪرڻ کان سواء، دستي طور تي.

جيڪڏهن توهان هڪ نظر وجهڻ چاهيو ٿا ته سڀني انٽيليجنس ڊيٽا جو تجزيو هڪ Jupyter نوٽ بڪ ۾ ڪهڙو نظر اچي ٿو، هڪ نظر وٺو هي منهنجو پروجيڪٽ nbviewer استعمال ڪندي ٺاهيو ويو آهي. ۽ اندر هي توھان ڳولهي سگھوٿا لاڳاپيل ڪوڊ GitHub repositories ۾.

پيارا پڙهندڙن! توهان نئين ڊيٽا سيٽن جو تجزيو ڪرڻ ڪٿي شروع ڪندا آهيو؟

پنڊاس-پروفائلنگ لائبريري استعمال ڪندي ڳولا واري ڊيٽا جي تجزيو کي تيز ڪريو

جو ذريعو: www.habr.com

تبصرو شامل ڪريو