English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

DataFrame Pandas

   عمليات Pandas DataFrame الأساسية

DataFrame هو بنية بيانات ثنائية، أي أن البيانات منظمة بشكل جداولي عبر الصفوف والعمود

وظائف DataFrame

العمود المحتمل هو أنواع مختلفة حجمه قابلة للتغيير الرصيف المميز (الصف والعمود) يمكن إجراء عمليات حسابية على الصفوف والعمود

المبنى

pandas.Series

هيكل Series كالتالي:

لنفترض أننا نستخدم بيانات الطلاب لإنشاء قالب بيانات

يمكننا اعتبارها تمثيلاً لجدول SQL أو بيانات جدولية

pandas.DataFrame

يمكن استخدام بناء الجمل التالي لإنشاء DataFrame Pandas

 pandas.DataFrame(data, index, columns, dtype, copy)

شرح المعلمات:

data: البيانات تأخذ أشكالاً متعددة، مثل ndarray، series، map، list، dict، معادلة ثابتة، وDataFrame آخر. index: للعناوين الموجودة في الصف، إذا لم يتم تمرير العناوين، فإن العناوين الافتراضية للصف هي -np.arange(n). columns: للعناوين الموجودة في الأعمدة، لغة النص الافتراضية هي -np.arange(n). فقط عندما لا يتم تمرير العناوين. dtype: نوع البيانات لكل عمود. نسخ: إذا كان القيمة الافتراضية هي False، فإن هذا الأمر (أو أي من أوامره) يستخدم لنسخ البيانات.

إنشاء DataFrame

يمكن استخدام أنواع متعددة من المدخلات لإنشاء DataFrame pandas-

Lists dict Series Numpy ndarrays DataFrame آخر

في الجزء التالي من هذا الفصل، سنرى كيف يمكن استخدام هذه المدخلات لإنشاء DataFrame.

إنشاء DataFrame فارغ

يمكن إنشاء DataFrame أساسي وهو DataFrame فارغ.

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 df = pd.DataFrame()
 print(df)

نتيجة التنفيذ:

 DataFrame فارغ
 الأعمدة: []
 السوق: []

إنشاء DataFrame من Lists

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 data = [1, 2, 3, 4, 5]
 df = pd.DataFrame(data)
 print(df)

نتيجة التنفيذ:

 0
 0 1
 1 2
 2 3
 3 4
 4 5
 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 data = [['Alex', 10], ['Bob', 12], ['Clarke', 13]]
 df = pd.DataFrame(data, columns=['Name', 'Age'])
 print(df)

نتيجة التنفيذ:

       الاسم         العمر
 0         Alex          10
 1         Bob           12
 2         Clarke       13
 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 data = [['Alex', 10], ['Bob', 12], ['Clarke', 13]]
 df = pd.DataFrame(data, columns=['Name', 'Age'], dtype=float)
 print(df)

نتيجة التنفيذ:

 
      الاسم   العمر
 0       Alex        10.0
 1       Bob         12.0
 2       Clarke     13.0
ملاحظة:إعداد dtype سيعيد تحديد نوع Age كحلقة عشوائية.

إنشاء DataFrame من ndarrays / List of Dict

جميع طول ndarrays يجب أن يكون متساوياً. إذا تم تمرير index، يجب أن يكون طول المؤشر متساوياً مع طول الصف.
إذا لم يتم تمرير مؤشر، فإن المؤشر افتراضي سيكون range(n)، حيث n هو طول المصفوفة

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky'], 'Age': [28, 34, 29, 42]}
 df = pd.DataFrame(data)
 print(df)

نتيجة التنفيذ:

 
    Age Name
 0 28 Tom
 1 34 Jack
 2 29 Steve
 3 42 Ricky
ملاحظة:تتبع القيم 0،1،2،3. إنها قيم مؤشر افتراضية يتم تخصيصها لكل عنصر باستخدام نطاق (n)

نستخدم مصفوفة لإنشاء DataFrame يحتوي على مؤشرات

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky'], 'Age': [28, 34, 29, 42]}
 df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
 print(df)

نتيجة التنفيذ:

 
       Age Name
 rank1 28 Tom
 rank2 34 Jack
 rank3 29 Steve
 rank4 42 Ricky
ملاحظة:مؤشر index يتم تخصيصه لكل صف

إنشاء DataFrame من قائمة القواميس

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

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
 df = pd.DataFrame(data)
 print(df)

نتيجة التنفيذ:

     a b c
 0 1 2 NaN
 1 5 10 20.0
ملاحظة:NaN (غير رقمي) سيتم إضافته في المناطق المفقودة

إليك مثال يوضح كيفية إنشاء DataFrame عن طريق تمرير قائمة من القواميس والمؤشرات

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
 df = pd.DataFrame(data, index=['first', 'second'])
 print(df)

نتيجة التنفيذ:

          a b c
 first 1 2 NaN
 second 5 10 20.0

إليك مثال يوضح كيفية إنشاء DataFrame يحتوي على قائمة تحتوي على قاموس، ومؤشرات الصف والمجالات

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
 # هناك مجالان، القيم متطابقة مع مفاتيح القاموس
 df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])
 # هناك مجالان
 df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
 print(df1)
 print(df2)

نتيجة التنفيذ:

 #df1 output
       a b
 first 1 2
 second 5 10
 #df2 output
       a b1
 first 1 NaN
 second 5 NaN
ملاحظة:df2 DataFrame تم إنشاؤه باستخدام علامات الأعمدة غير الموجودة في المفتاح، لذا تم إضافة NaN في المكان. بينما df1 تم إنشاؤه باستخدام علامات الأعمدة الموجودة في المفتاح، لذا تم إضافة NaN.

إنشاء DataFrame من سلسلة القاموس

يمكن نقل قاموس السلسلة لتشكيل DataFrame. تكون النسبة المئوية للعناوين هي جميع عناوين السلسلة المنقولة.

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 print(df)

نتيجة التنفيذ:

   one two
 a 1.0 1
 b 2.0 2
 c 3.0 3
 d NaN 4

بالنسبة للسلسلة الأولى، لم يتم نقل العلامة 'd'، ولكن النتيجة هي، تم إضافة NaN لـ 'd'.
الآن دعونا نتعرف على كيفية اختيار، إضافة وإزالة الأعمدة من خلال مثال.

استعلام الأعمدة

سنختار عمودًا من DataFrame لنتعرف على ذلك.

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 print(df['one'])

نتيجة التنفيذ:

   a 1.0
 b 2.0
 c 3.0
 d NaN
 الاسم: one, نوع البيانات: float64

إضافة الأعمدة

سنرى كيف يمكننا إضافة عمود جديد إلى جداول البيانات الحالية.

# Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 # من خلال نقل سلسلة جديدة، يتم إضافة عمود جديد إلى DataFrame الحالي الذي يحتوي على علامات الأعمدة
 print ('إضافة عمود جديد من خلال نقل سلسلة كـ Series:')
 df['three'] = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
 print(df)
 print ('استخدام الأعمدة الموجودة بالفعل في DataFrame لإضافة عمود جديد:')
 df['four'] = df['one'] + df['three']
 print(df)

نتيجة التنفيذ:

 إضافة عمود جديد من خلال نقل سلسلة كـ Series:
 one two three
 a 1.0 1 10.0
 b 2.0 2 20.0
 c 3.0 3 30.0
 d NaN 4 NaN
 استخدام الأعمدة الموجودة بالفعل في DataFrame لإضافة عمود جديد:
 one two three four
 a 1.0 1 10.0 11.0
 b 2.0 2 20.0 22.0
 c 3.0 3 30.0 33.0
 d NaN 4 NaN NaN

حذف الأعمدة

يمكن حذف أو إزالة الأعمدة؛ لنتعرف على كيفية القيام بذلك من خلال مثال.

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
    السلسلة 'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']), 
    'three': pd.Series([10, 20, 30], index=['a', 'b', 'c'])
 df = pd.DataFrame(d)
 print ("بيانات جدولنا هي:")
 print(df)
 # using del function
 print ("إزالة العمود الأول باستخدام دالة del:")
 del df['one']
 print(df)
 # using pop function
 print ("إزالة عمود آخر باستخدام دالة POP:")
 df.pop('two')
 print(df)

نتيجة التنفيذ:

 بيانات جدولنا هي:
 one three two
 a 1.0 10.0 1
 b 2.0 20.0 2
 c 3.0 30.0 3
 d NaN NaN 4
 إزالة العمود الأول باستخدام دالة del:
   three two
 a 10.0 1
 b 20.0 2
 c 30.0 3
 d NaN 4
 إزالة عمود آخر باستخدام دالة POP:
   three
 a 10.0
 b 20.0
 c 30.0
 d NaN

استعلام، إضافة وإزالة الأسطر

الآن، سنستعرض عبر مثال كيفية اختيار إضافة وإزالة الأسطر. دعنا نبدأ بمفهوم الاختيار.

استعلام عن العلامة

يمكن اختيار السطر عبر تقديم علامة السطر إلى دالة loc.

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 print(df.loc['b'])

نتيجة التنفيذ:

 
   one 2.0
 two 2.0
 الاسم: b, نوع البيانات: float64

النتيجة هي سلسلة تحتوي على علامات كأسماء أعمدة DataFrame. وتستخدم الأسماء لاستدعاء علاماتها.

استعلام عن الموقع عبر عدد

يمكن اختيار السطر عبر تقديم موقع عددي إلى دالة iloc.

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 print(df.iloc[2])

نتيجة التنفيذ:

 
   one 3.0
 two 3.0
 الاسم: c, نوع البيانات: float64

قطع الأسطر

يمكن استخدام رمز ':' لاختيار الأسطر عدة.

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 d = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']), 
    'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
 df = pd.DataFrame(d)
 print(df[2:4])

نتيجة التنفيذ:

 
     one two
 c 3.0 3
 d NaN 4

إضافة الصف

استخدام دالة append لضيف صف جديد إلى DataFrame. هذه الدالة ستضيف الصف في نهاية المجموعة.

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a', 'b'])
 df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a', 'b'])
 df = df.append(df2)
 print(df)

نتيجة التنفيذ:

 
     a b
 0 1 2
 1 3 4
 0 5 6
 1 7 8

حذف الصفوف

حذف الصفوف من DataFrame باستخدام العلامة المؤشرية أو حذف الصفوف. إذا كانت العلامات المؤشرية مكررة، فإنه سيتم حذف صفوف متعددة.
إذا لاحظت أن العناوين مكررة في المثال أعلاه، دعنا نحذف عنصرًا واحدًا، وسنرى عدد الصفوف التي سيتم حذفها.

 # Filename : pandas.py
 # author by : ar.oldtoolbag.com 
 # استيراد مكتبة pandas وتمهيدها
 import pandas as pd
 df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a', 'b'])
 df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a', 'b'])
 df = df.append(df2)
 # حذف الصفوف التي تحتوي على العنوان 0
 df = df.drop(0)
 print(df)

نتيجة التنفيذ:

 
     a b
 1 3 4
 1 7 8

في المثال أعلاه، تم حذف سطرين، لأنهما يحتويان على العنوان نفسه 0.