fbpx

تنظيف البيانات باستخدام لغة R البرمجية

تنظيف البيانات

تعد مرحلة تنظيف البيانات، واحدة من أهم محطات العمل التي تسبق مرحلة تحليل البيانات، وذلك لأن البيانات لا تأتي عادة في الصورة التي نريدها، كما أن هناك العديد من الأخطاء التي قد تحدث عند إدخال البيانات سواء تمت هذه العملية بصورة يدوية أو آلية فكلنا معرضون للوقوع في الأخطاء.

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

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

أولًا: تثتيب المكتبات اللازمة لعملية تنظيف البيانات

في البداية سوف تحتاج إلى تثتيب واستدعاء ثلاث مكتبات هم: janitor ، data.validator ، dplyr وبالتأكيد مكتبة reader لقراءة ملف البيانات

لتثبيت المكتبات 

install.packages("reader")
install.packages("janitor")
install.packages("data.validator")
installed.packages("dplyr")

وقد نحتاج لاحقًا لتثتيب مكتبات إضافية مثل: tidyverse و stringr

استدعاء المكتبات

library(reader)
library(janitor)
library(data.validator)
library(dplyr)
library(tidyr)
library(stringr)
library(tidyverse)

ثانيًا: إدراج البيانات إلى محرر الكود RStudio

أفضل هذه الطريقة من خلال تبويب import dataset أسفل تبويب enviroment حيث تمكنني مباشرة من تقسيم البيانات من ملف CSV إلى أعمدة منفصلة وكذلك الصفوف التي من الممكن أن تكون بأعلى سجل البيانات و لا تحتوي على مدخلات أساسية.

يمككم إنشاء قاعدة بيانات مشابهة أو استخدام نفس قاعدة البيانات للتطبيق عليها، تجدون ملف البيانات هنا.

لاحظوا هنا ظهرت البيانات بشكل جيد، والآن من الممكن أن نضغط على زر o ليتم إدراج ملف البيانات تحت اسم df وهو الاسم الذي سوف تستخدمه بعد ذلك أثناء كتابة الكود البرمجي.

يمكننا الآن استعراض طبيعة وتنسيق محتويات الأعمدة في سجلات البيانات باستخدام str

بعض الأوامر الأخرى التي يمكن كتابتها لاستعراض البيانات والتعرف على طبيعة ونوع كل عمود بها:

الأمرالغرض
viewلمعاينة البيانات في شكل جدول
headمعاينة أول 6 أسطر من قاعدة البيانات، يمكن التحكم في عدد الأسطر بتحديد العدد الذي تود عرضه في المعادلة بعد علامة فصلة
tailمعاينة اخر 6 أسطر من قاعدة البيانات، يمكن التحكم في عدد الأسطر بتحديد العدد الذي تود عرضه في المعادلة بعد علامة فصلة
class(df$)تحديد نوع عمود محدد في قاعدة البيانات
typeof(df$)لتحديد نوع عمود بيانات محدد في قاعدة البيانات
unique(df$)حصر قائمة فريدة في عمود محدد
as.factorلتحويل البيانات إلى صيعة Factor
as.numericلتحويل تنسيق البيانات إلى صيغى عددية
as.characterلتحويل البيانات إلى صيغة نصية
أوامر تنظيف البيانات

ثالثًا: تنظيف البيانات

بعض الأوامر الشائعة لمعالجة أسماء الأعمدة وحذف التكرارات والتخلص من المسافات الزائدة وكذلك حذف الصفوف والأعمدة الفارغة كليًا:

الغرضالأمر
إعادة تهيئة الصف الأول في البيانات الخاص بأسماء الأعمدة بصورة منظمة()clean_names
حذف الأعمدة الفارغة()remove_empty_cols
حذف الصفوف الفارغة()remove_empty_rows
إضافة عمود بالقيم الاجمالية بكل صف()add_totals_col
إضافة صف للقيم الاجمالية بكل عمود()add_totals_row
للحصول على المدخلات المكررة()get_dupes
حذف كافة الأعمدة والصفوف الفارغة كلياً()remove_empty
تحويل المدخلات في عدد من الخلايا أو الأعمدة إلى NAconvert_to_NA
تحويل تنسيق التاريخ من التنسيق الخاطئ إلى التنسيق الصحيحexcel_numeric_to_date
أوامر تنظيف البيانات

باستخدام clean_names قمنا بتنظيف محتويات الصف الأول بسجل البيانات الذي يحتوي على أسماء الأعمدة. ومن خلال remove_empty قمنا بحذف الصفوف والأعمدة الفارغة كلياً من قاعدة البيانات

تنظيف أسماء الأعمدة وحذف التكرارات

حصر القيم المكررة في سجل البيانات واستخراجها في ملف منفصل باستخدام write.csv

كما يمكن حفظ البيانات بعد استبعاد المدخلات المتكررة من خلال كتابة الكود التالي:

df <- df[!duplicated(df$name), ]

لا زال هناك العديد من الأخطاء التي تتطلب العمل على حلها، مثل تنسيق عمود تاريخ الميلاد واستبعاد علامة * من عمود الجندر وكذلك استبعاد حرف Y من عمود العمر، وأخيرًا اعادة تنسيق الأعمدة بشكل يتوافق مع ما تحتويه من مدخلات، لذلك أشارك معكم مجموعة من الأوامر التي تستخدم في معالجة النصوص، وادعوكم لتجربتها:

str_length
str_c
str_sub
str_detect
str_match
str_count
str_split
str_to_upper
str_to_lower
str_to_title
str_trim

مقالات ذات صلة

متى ينبغي أن تلقي بما لديك من بيانات في صندوق القمامة؟

بالتأكيد سمعت هذه العبارة من قبل Garbage in garbage out، والتي تعني أن المدخلات الرديئة تقود لمخرجات رديئة بالضرورة، وكذلك هو الحال في علم البيانات، فأن البيانات الردئية ستقودك إلى تحليلات خاطئة وبالتالي تؤدي بك إلى اتخاذ قرارت غير سليمة، لذا يتوجب عليك تجنب الوصول لهذه النهاية والتخلي عن ما لديك من بيانات رديئة بإلقاءها في صندوق القمامة.

التعليقات