مكتبة pandas – الخطوة الثانية في علم البيانات بلغة البايثون – الجزء الثاني

مكتبة pandas – الخطوة الثانية في علم البيانات بلغة البايثون – الجزء الثاني

أهلًا بكم في الجزء الثاني من مقال مكتبة pandas – الخطوة الثانية في علم البيانات بلغة البايثون. هذا المقال هو جزء من سلسلة مقالات تتحدث عن مكتبات البايثون المهمة في علم البيانات. للتعرف أكثر على مكتبات علم البيانات في البايثون يُمكنكم الإطلاع على سلسلة المقالات التالية:

مكتبات علم البيانات وتعليم الألة في البايثون – 5 مكتبات مشهورة

مكتبة Numpy – الخطوة الأولى في علم البيانات بلغة البايثون

مكتبة Pandas – الخطوة الثانية في علم البيانات بلغة البايثون – الجزء الأول

سنكمل في هذا الجزء العناوين التالية:

  • إنشاء إطار بيانات فارغ.
  • معرفة متى، وكيف نقوم بإعادة تغيير شكل إطار البيانات.
  • كيفية المرور على البيانات وقراءتها في إطار البيانات.
  • كيفية تصدير إطار البيانات إلى الملف خارجي.

كيف نُنشئ إطار بيانات فارغ في مكتبة pandas ؟

دالة البناء Dataframe تُمَكننا من بناء إطار البيانات، ويتطلب ذلك أن نُمرر البيانات التي نريد وضعها في اطار البيانات بالإضافة الى تحديد الفهارس والأعمدة. تذكر دائمًا أن البيانات الموجودة في إطار البيانات لا يجب ان تكون من نوع واحد.

الشيفرة التالية توضح كيفية بناء إطار بيانات فارغ:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.nan, index=[0,1,2,3], columns=['A'])

سيكون إطار البيانات df بالشكل التالي:

1

لتحديد نوع البيانات التي ستكون في اطار البيانات نستخدم المُعامل dtype ونُمرر له النوع الذي نريده. انظر للشيفرة التالية:

df = pd.DataFrame(index=range(0,4),columns=['A'], dtype='float')

وسيكون إطار البيانات df بالشكل التالي:

1

معرفة متى، وكيف نقوم بإعادة تغيير شكل إطار البيانات في مكتبة pandas

يتم  تغيير شكل إطار البيانات وتحويله لشكل وابعاد أخرى عند حاجتنا لجعله أكثر ملائمةً للعمل، وهذه العملية تَستهدف شكل إطار البيانات ولا تهتم بكيفية تنسيق القيم والبيانات داخله. يوجد ثلاثة طرق لتغيير شكل إطار البيانات وهي التحوير (Pivoting)، التكديس وفك التكديس (Stacking and Unstacking) والإذابة (Melting).

سنتكلم فقط عن موضوع تحوير إطار البيانات لشيوع استخدامه.

تحوير إطار البيانات

نستطيع إجراء عملية التحوير باستخدام الدالة pivot التي ينتج عنها جدول جديد من إطار البيانات الأصلي. عند استخدام هذه الدالة يجب تمرير ثلاثة معطيات كالتالي:

  • القيم: هذا المعامل يسمح لك بتحديد القيم من إطار البيانات والتي تريد أن تراها موجودة في الجدول المُحوَّر.
  • الأعمدة: ما ستمرره هنا سيكون عبارة عن أعمدة الجدول المُحوَّر.
  • الفهرس: ما ستمرره هنا سيكون فهرس الجدول المُحوَّر.

انظر للمثال التالي:

import pandas as pd

products = pd.DataFrame({'category': ['Cleaning', 'Cleaning', 'Entertainment', 'Entertainment', 'Tech', 'Tech'],'store': ['Walmart', 'Dia', 'Walmart', 'Fnac', 'Dia','Walmart'],'price':[11.42, 23.50, 19.99, 15.95, 55.75, 111.55], 'testscore': [4, 3, 5, 7, 5, 8]})

# Use `pivot()` to pivot the DataFrame

pivot_products = products.pivot(index='category', columns='store', values='price')

# Check out the result

print(pivot_products)

في المثال السابق قمنا بتحديد العمود price كمصدر للقيم في الجدول المُحوَّر، وجعلنا قيم العمود store هي الأعمدة وقيم العمود category هي الفهارس (المؤشرات).

سيكون شكل الجدول المُحوَّر كالتالي:

2

عندما لا نُحدد القيم التي ستكون في الجدول المُحوَّر، سيتم التحوير عندها باستخدام جميع الأعمدة المتبقية في إطار البيانات (تحوير بأعمدة متعددة):




# Construct the DataFrame

products = pd.DataFrame({'category': ['Cleaning', 'Cleaning', 'Entertainment', 'Entertainment', 'Tech', 'Tech'],'store': ['Walmart', 'Dia', 'Walmart', 'Fnac', 'Dia','Walmart'],'price':[11.42, 23.50, 19.99, 15.95, 55.75, 111.55],'testscore': [4, 3, 5, 7, 5, 8]})

# Use `pivot()` to pivot your DataFrame

pivot_products = products.pivot(index='category', columns='store')

# Check out the results

print(pivot_products)

وسيكون شكل الجدول المُحوَّر كالتالي:

3

يجب الانتباه الى أنه عند تحديد بيانات الجدول المُحوَّر ألا يكون هناك صفوف لها قيم متكررة مع الأعمدة التي نختارها. في حالة وجود تكرار سيظهر خطأ.

إذا لم نكن متأكدين من الأمر السابق يُمكننا استخدام الدالة pivot_table بدلًا من الدالة pivot والتي تعمل على ازالة التكرار بشكل تلقائي:

# Your DataFrame

products = pd.DataFrame({'category': ['Cleaning', 'Cleaning', 'Entertainment', 'Entertainment', 'Tech', 'Tech'],'store': ['Dia', 'Dia', 'Walmart', 'Fnac', 'Dia','Walmart'],'price':[11.42, 23.50, 19.99, 15.95, 19.99, 111.55],'testscore': [4, 3, 5, 7, 5, 8]})

# Pivot your `products` DataFrame with `pivot_table()`

pivot_products = products.pivot_table(index='category', columns='store', values='price')

# Check out the results

print(pivot_products)

4

كيفية المرور على البيانات وقراءتها في إطار البيانات

يُمكننا المرور على صفوف إطار البيانات باستخدام حلقة التكرار for والدالة iterrows الخاصة بإطار البيانات كما في الشيفرة التالية:

df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['A', 'B', 'C'])

for index, row in df.iterrows() :

    print(row['A'], row['B'])

كيفية تصدير إطار البيانات إلى الملف خارجي

عند الانتهاء من التعامل مع اطار البيانات وتنسيقه وتجهيز بالشكل الذي نحتاجه من البيانات، قد نحتاج لتصدير البيانات لنوع اخر من الملفات مثل ملف صيغة csv او Excel.

تصدير إطار البيانات لملف csv

نستخدم الدالة to_csv لتصدير إطار البيانات الذي لصيغة الملف csv:

import pandas as pd

df.to_csv('myDataFrame.csv')

الشيفرة البرمجية السابقة تبدو بسيطة وسهلة، ولكن من هنا تبدأ الصعوبات التي تواجه الكثير بسبب وجود متطلبات معينة نحتاجها في الملف مثل الرمز الفاصل (Delimiter) والذي بالعادة يكون رمز الفاصلة العادية.

لا تقلق، يُمكننا تحديد الرمز الذي نريده في ملف csv دون عناء، كل ما علينا هو تمرير المُعطى sep للدالة وتحديد الرمز الذي نريده:

import pandas as pd

df.to_csv('myDataFrame.csv', sep='\t')

لتحديد نوع ترميز البيانات نستخدم المعامل encoding:

import pandas as pd

df.to_csv('myDataFrame.csv', sep='\t', encoding='utf-8')

تصدير إطار البيانات لملف Excel

بطريقة مشابهة لما قمنا به سابقا في تحويل إطار البيانات لملف csv، نستخدم الدالة to_excel لتصدير إطار البيانات لملف excel ولكن بطريقة مختلفة نوعًا ما:

import pandas as pd

writer = pd.ExcelWriter('myDataFrame.xlsx')

df.to_excel(writer, 'DataFrame')

writer.save()

يوجد العديد من المعامِلات التي من الممكن أن تستخدمها مثل startcol و startrow لترتيب البيانات في الملف بالطريقة التي تراها مناسبة.

خاتمة

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

تحدثنا في الجزء الأول  من المقال مكتبة Pandas – الخطوة الثانية في علم البيانات بلغة البايثون – الجزء الأول عن:

  • كيفية تعريف إطار بيانات مكتبة Pandas.
  • كيفية تحديد مؤشر أو عمود من إطار البيانات.
  • كيفية إضافة مؤشر، صف أو عمود إلى إطار البيانات.
  • حذف فهرس، صف أو عمود من إطار البيانات.
  • كيفية إعادة تسمية الأعمدة والفهارس في إطار البيانات.
  • كيفية عمل Format للبيانات في إطار البيانات.

وفي هذا الجزء الثاني تحدثنا عن:

  • إنشاء إطار بيانات فارغ.
  • معرفة متى، وكيف، ولماذا نقوم بإعادة تغيير شكل إطار البيانات.
  • كيفية المرور على البيانات وقراءتها في إطار البيانات.
  • كيفية تصدير إطار البيانات إلى الملف خارجي.

 

 

 

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *