أولاً وقبل كل شيء ، لبدء استخدام مجموعة بيانات جديدة ، يلزمك فهمها. للقيام بذلك ، تحتاج ، على سبيل المثال ، إلى معرفة نطاقات القيم التي تقبلها المتغيرات وأنواعها وأيضًا لمعرفة عدد القيم المفقودة.
تزودنا مكتبة الباندا بالعديد من الأدوات المفيدة لإجراء تحليل البيانات الاستكشافية (EDA). ولكن قبل استخدامها ، تحتاج عادةً إلى البدء بوظائف عامة أكثر ، مثل df.describe (). صحيح ، تجدر الإشارة إلى أن الإمكانيات التي توفرها هذه الوظائف محدودة ، وغالبًا ما تكون المراحل الأولية للعمل مع أي مجموعات بيانات متشابهة جدًا مع بعضها البعض.

يقول مؤلف المادة التي ننشرها اليوم إنه ليس من محبي تكرار الإجراءات. نتيجة لذلك ، في البحث عن الأدوات اللازمة لإجراء تحليل البيانات الاستكشافية بسرعة وكفاءة ، وجد مكتبة
ملفات تعريف الباندا . لا يتم التعبير عن نتائج عملها في شكل مؤشرات فردية معينة ، ولكن في شكل تقرير HTML مفصل إلى حد ما يحتوي على معظم المعلومات حول البيانات التي يجري تحليلها والتي قد تحتاج إلى معرفتها قبل البدء في العمل عن كثب معها.
سننظر هنا في ميزات استخدام مكتبة ملفات تعريف الباندا باستخدام مثال مجموعة بيانات Titanic.
الباندا تحليل بيانات الاستكشاف
قررت تجربة استخدام ملفات تعريف الباندا على مجموعة بيانات Titanic نظرًا لحقيقة أنه يحتوي على بيانات من أنواع مختلفة وبسبب القيم المفقودة فيها. أعتقد أن مكتبة ملفات تعريف الباندا مثيرة للاهتمام بشكل خاص في الحالات التي لم يتم مسح البيانات فيها بعد وتتطلب مزيدًا من المعالجة ، اعتمادًا على ميزاتها. لتنفيذ هذه المعالجة بنجاح ، تحتاج إلى معرفة من أين تبدأ وما الذي تبحث عنه. هذا هو المكان الذي تأتي فيه ميزات إنشاء ملفات تعريف الباندا في متناول يدي.
للبدء ، نستورد البيانات ونستخدم الباندا للحصول على مؤشرات للإحصاءات الوصفية:
# 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
DataFrame
. إذا كنت بحاجة إلى التحقق من ذلك ، فستحتاج إلى سطر آخر من التعليمات البرمجية يحدد حجم الإطار. على الرغم من أن هذه الحسابات ليست كثيفة الاستخدام للموارد ، إلا أن تكرارها المستمر سيؤدي بالضرورة إلى ضياع الوقت ، والذي ربما يكون من الأفضل إنفاقه على تنظيف البيانات.
تحليل البيانات الاستكشافية باستخدام ملفات تعريف الباندا
افعل الآن نفس الشيء باستخدام ملفات تعريف الباندا:
pandas_profiling.ProfileReport(df)
سيتيح لك تنفيذ سطر الشفرة أعلاه إنشاء تقرير مع مؤشرات تحليل البيانات الاستكشافية. ستؤدي الشفرة الموضحة أعلاه إلى استنتاج المعلومات التي تم العثور عليها حول البيانات ، ولكن يمكن إجراؤها بحيث تكون النتيجة عبارة عن ملف HTML ، على سبيل المثال ، يمكن عرضه على شخص ما.
سيحتوي الجزء الأول من التقرير على قسم "نظرة عامة" ، الذي يوفر معلومات أساسية حول البيانات (عدد المشاهدات وعدد المتغيرات وما إلى ذلك). بالإضافة إلى ذلك ، سوف يحتوي على قائمة من التحذيرات التي تخطر المحلل بما يجب عليك الانتباه إليه. يمكن أن تكون هذه التحذيرات فكرة عن المكان الذي يمكنك فيه تركيز جهودك عند تنظيف بياناتك.
تقرير قسم نظرة عامةتحليل المتغير الاستكشافي
خلف قسم النظرة العامة في التقرير ، يمكنك العثور على معلومات مفيدة حول كل متغير. من بين أشياء أخرى ، تتضمن مخططات صغيرة تصف توزيع كل متغير.
عمر متغير معلومات رقميةكما ترون من المثال السابق ، يوفر لنا تعريف الباندا بعض المؤشرات المفيدة ، مثل النسبة المئوية وعدد القيم المفقودة ، وكذلك مؤشرات الإحصائيات الوصفية التي رأيناها بالفعل. بما أن
Age
متغير عددي ، فإن التصور الخاص بتوزيعه في شكل رسم بياني يتيح لنا أن نستنتج أن لدينا توزيعًا قائم الزاوية.
عند النظر في متغير فئوي ، تختلف المؤشرات المعروضة قليلاً عن تلك الموجودة للمتغير الرقمي.
الجنس المتغير القاطع المعلوماتوهي ، بدلاً من العثور على المتوسط والحد الأدنى والحد الأقصى ، وجدت مكتبة ملفات تعريف الباندا عدد الفصول. بما أن
Sex
هو متغير ثنائي ، يتم تمثيل قيمه بفئتين.
إذا كنت مثلي تحب البحث في الكود ، فقد تكون مهتمًا بكيفية حساب مكتبة ملفات تعريف الباندا بدقة لهذه المؤشرات. معرفة هذا ، بالنظر إلى أن رمز المكتبة مفتوح ومتاح على جيثب ، ليس بالأمر الصعب. نظرًا لأنني لست من أشد المعجبين باستخدام "الصناديق السوداء" في مشاريعي ، نظرت إلى الكود المصدري للمكتبة. على سبيل المثال ، فيما يلي آلية معالجة المتغيرات العددية التي تمثلها دالة description_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
باستخدام نسخة معدلة من وظيفة
matplotlib.pyplot.hist
. يهدف التكيف إلى تمكين الوظيفة من العمل مع أنواع مختلفة من مجموعات البيانات.
مؤشرات الارتباط وعينة من البيانات المدروسة
بعد نتائج تحليل المتغيرات ، يعرض تعريف الباندا ، في قسم الارتباطات ، مصفوفات ارتباط بيرسون وسبيرمان.
مصفوفة ارتباط بيرسونإذا لزم الأمر ، فمن الممكن ، في سطر التعليمات البرمجية الذي يبدأ في تكوين التقرير ، تعيين القيم الحدية المستخدمة في حساب الارتباط. من خلال القيام بذلك ، يمكنك الإشارة إلى قوة الارتباط التي تعتبر مهمة لتحليلك.
وأخيرًا ، يعرض تقرير إنشاء ملفات تعريف الباندا ، في قسم "العينة" ، على سبيل المثال ، جزءًا من البيانات مأخوذة من بداية مجموعة البيانات. يمكن أن يؤدي هذا النهج إلى مفاجآت غير سارة ، حيث أن الملاحظات القليلة الأولى يمكن أن تكون عينة لا تعكس ميزات مجموعة البيانات بأكملها.
قسم يحتوي على بيانات العينةنتيجة لذلك ، لا أوصي بالاهتمام بهذا القسم الأخير. بدلاً من ذلك ، من الأفضل استخدام الأمر
df.sample(5)
، والذي سيختار بشكل عشوائي 5 حالات من مجموعة البيانات.
النتائج
بإيجاز ما ذكر أعلاه ، يمكن الإشارة إلى أن مكتبة ملفات تعريف الباندا توفر للمحلل بعض الميزات المفيدة التي ستكون مفيدة في الحالات التي تحتاج فيها بسرعة إلى الحصول على فكرة عامة تقريبية حول البيانات أو إرسال تقرير عن تحليل بيانات الاستخبارات إلى شخص ما. في الوقت نفسه ، يتم تنفيذ العمل الحقيقي مع البيانات ، مع مراعاة ميزاتها ، كما هو الحال دون استخدام ملفات تعريف الباندا يدويًا.
إذا كنت ترغب في إلقاء نظرة على كيفية ظهور تحليل ذكاء البيانات بالكامل في دفتر ملاحظات Jupyter - ألق نظرة على
هذا المشروع الذي أنشأه باستخدام nbviewer. وفي مستودع جيثب
هذا ، يمكنك العثور على الكود المناسب.
أعزائي القراء! كيف تبدأ في تحليل مجموعات البيانات الجديدة؟