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

الإنضمام Pandas

مثال على عمليات الاتصال في Pandas

Pandas تحتوي على عمليات اتصال ذاكرة عالية بسرعة عالية تشبه جداً وظائف databases العادية مثل SQL
Pandas يقدم وظيفة واحدة merge كمدخل إلى جميع عمليات الاتصال الأساسية لـ DataFrame بين دatabases العادية

 pd.merge(left, 		right, 	how='inner', 	on=None, 	left_on=None, 	right_on=None,
 left_index=False, right_index=False, sort=True)

في هذا السياق، استخدمنا التالي كمعلمات:

أيسر − DataFrame واحدة. أيمن − DataFrame آخر. على − يتم إضافة العمود (الاسم) إلى الأعلى. يجب أن يتم العثور عليه في كلا DataFrame اليسار واليمنى. left_on − يتم استخدام عمود (الاسم) من DataFrame اليسار كمفتاح. right_on − يتم استخدام عمود (الاسم) من DataFrame اليمنى كمفتاح. left_index − إذا كان True، فإن يتم استخدام مفتاح التسلسل (علامات التبويب) للDataFrame اليسار كمفتاح الاتصال. إذا كان DataFrame يحتوي على MultiIndex (متجزأ)، فإن عدد المستويات يجب أن يتطابق مع عدد المفاتيح في DataFrame اليمنى. right_index − استخدام نفس المفتاح كـleft_index للDataFrame الصحيح. كيف − أحد 'اليسار'،'اليمين'،'الخارجي'،'الداخلي'. افتراضياً هو الداخلي. تم وصف كل طريقة أدناه. ترتيب − إضافة المفتاح التسلسلي إلى دفعة النتائج الموسى. افتراضياً هو True، وفي العديد من الحالات، سيؤدي إعداده على False إلى تحسين الأداء بشكل كبير.

الآن دعونا ننشئ DataFrameين مختلفين ونقوم بدمجهم.

# import the pandas library
 import pandas as pd
 left = pd.DataFrame({
    'id':[1,2,3,4,5],
    'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5']})
 right = pd.DataFrame(
    {'id':[1,2,3,4,5],
    
    'subject_id':['sub2','sub4','sub3','sub6','sub5']}))
 print(left
 print(right)

نتائج التنفيذ كالتالي:

      Name  id   subject_id
0   Alex   1         sub1
1    Amy   2         sub2
2  Allen   3         sub4
3  Alice   4         sub6
4  Ayoung  5         sub5
    Name  id   subject_id
0  Billy   1         sub2
1  Brian   2         sub4
2  Bran    3         sub3
3  Bryce   4         sub6
4  Betty   5         sub5

تجميع اثنين من جداول البيانات على مفتاح واحد

 import pandas as pd
 left = pd.DataFrame({
    'id':[1,2,3,4,5],
    'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5']})
 right = pd.DataFrame({
 'id':[1,2,3,4,5],
    
    'subject_id':['sub2','sub4','sub3','sub6','sub5']})
 print(pd.merge(left, right, on='id'))

نتائج التنفيذ كالتالي:

     Name_x   id  subject_id_x   Name_y   subject_id_y
0  Alex      1          sub1    Billy           sub2
1  Amy       2          sub2    Brian           sub4
2  Allen     3          sub4    Bran           sub3
3  Alice     4          sub6    Bryce           sub6
4  Ayoung    5          sub5    Betty           sub5

تجميع اثنين من جداول البيانات على عدة مفاتيح

 import pandas as pd
 left = pd.DataFrame({
    'id':[1,2,3,4,5],
    'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5']})
 right = pd.DataFrame({
 'id':[1,2,3,4,5],
    
    'subject_id':['sub2','sub4','sub3','sub6','sub5']})
 print(pd.merge(left, right, on=['id', 'subject_id']))

نتائج التنفيذ كالتالي:

      Name_x   id   subject_id   Name_y
0    Alice    4          sub6    Bryce
1   Ayoung    5          sub5    Betty

تجميع باستخدام معامل how

يحدد معامل how كيفية تحديد الأصابع التي يجب تضمينها في جدول النتيجة. إذا لم يظهر مفتاح التجميع في جدول اليسرى أو اليمين، فإن القيم في جدول الاتحاد ستكون NA.

إليك تلخيصًا لكيفية اختيارهم واسمهم المماثل في SQL:

طريقة التجميعالنقيض SQLالوصف
أيسرJOIN الخارجي الأيسراستخدام مفتاح الجسم الأيسر
أيمنJOIN الخارجي الأيمناستخدام مفتاح الجسم الصحيح
خارجيJOIN الخارجي الكاملاستخدام مفتاح التجميع
داخليJOIN داخلياستخدام الت交汇 لل مفتاح

الربط الأيسر

 import pandas as pd
 left = pd.DataFrame({
    'id':[1,2,3,4,5],
    'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5']})
 right = pd.DataFrame({
    'id':[1,2,3,4,5],
    
    'subject_id':['sub2','sub4','sub3','sub6','sub5']})
 print(pd.merge(left, right, on='subject_id', how='left'))

نتائج التنفيذ كالتالي:

      Name_x   id_x   subject_id   Name_y   id_y
0     Alex      1          sub1      NaN    NaN
1      Amy      2          sub2    Billy    1.0
2    Allen      3         sub4    Brian    2.0
3    Alice      4         sub6    Bryce    4.0
4   Ayoung      5         sub5    Betty    5.0

الانضمام الأيمن

 import pandas as pd
 left = pd.DataFrame({
    'id':[1,2,3,4,5],
    'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5']})
 right = pd.DataFrame({
    'id':[1,2,3,4,5],
    
    'subject_id':['sub2','sub4','sub3','sub6','sub5']})
 print(pd.merge(left, right, on='subject_id', how='right'))

نتائج التنفيذ كالتالي:

      Name_x  id_x   subject_id   Name_y   id_y
0      Amy   2.0         sub2    Billy      1
1    Allen   3.0         sub4    Brian      2
2    Alice   4.0         sub6    Bryce      4
3   Ayoung   5.0         sub5    Betty      5
4      NaN   NaN         sub3     Bran      3

الانضمام الخارجي

 import pandas as pd
 left = pd.DataFrame({
    'id':[1,2,3,4,5],
    'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5']})
 right = pd.DataFrame({
    'id':[1,2,3,4,5],
    
    'subject_id':['sub2','sub4','sub3','sub6','sub5']})
 print(pd.merge(left, right, how='outer', on='subject_id'))

نتائج التنفيذ كالتالي:

      Name_x  id_x   subject_id   Name_y   id_y
0     Alex   1.0         sub1      NaN    NaN
1      Amy   2.0         sub2    Billy    1.0
2    Allen   3.0         sub4    Brian    2.0
3    Alice   4.0         sub6    Bryce    4.0
4   Ayoung   5.0         sub5    Betty    5.0
5      NaN   NaN         sub3     Bran    3.0

الانضمام الداخلي

الإتصال سيتم تنفيذه على المؤشر. عملية الاتصال تقبل العنصر الذي يدعوها. لذلك، a.join(b) لا يساوي b.join(a).

 import pandas as pd
 left = pd.DataFrame({
    'id':[1,2,3,4,5],
    'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'],
    'subject_id':['sub1','sub2','sub4','sub6','sub5']})
 right = pd.DataFrame({
    'id':[1,2,3,4,5],
    
    'subject_id':['sub2','sub4','sub3','sub6','sub5']})
 print(pd.merge(left, right, on='subject_id', how='inner'))

نتائج التنفيذ كالتالي:

      Name_x   id_x   subject_id   Name_y   id_y
0      Amy      2         sub2    Billy      1
1    Allen      3         sub4    Brian      2
2    Alice      4         sub6    Bryce      4
3   Ayoung      5         sub5    Betty      5