اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

يكمن الفرق بينهما في كيفية دمج البيانات .

أولا pd.merge  حيث تستخدم لدمج DataFrames بناء على أعمدة مشتركة وهي تشبه كثيرا جملة join في قواعد البيانات.

وتأخذ العديد من المعاملات :

  • on وهي لتحديد الأعمدة المشتركة بين DataFrames والتي سيتم الدمج بناء عليها مثل join في قاعدة البيانات.
  • how وهي لتحديد نوع الدمج مثل قواعد البيانات تماما ولها عدة قيم :
    • inner وهي دمج فقط القيم المتشابهة في  DataFrame وعدم إستخدام القيم الغير متشابهة.
    • outer وهي دمج جميع القيم مع إضافة قيم فارغة (NaN) إذا لم يوج أى تطابقات.
    • left وهي دمج جميع القيم من DataFrame الذي في اليسار مع القيم المتطابقة من DataFrame الذي في اليمين.
    • right وهي دمج جميع القيم من DataFrame الذي في اليمين مع القيم المتطابقة من DataFrame الذي في اليسار.

types_joins.webp

مثال على الإستخدام

import pandas as pd

# إنشاء DataFrames
df1 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie']})
df2 = pd.DataFrame({'ID': [1, 2, 4], 'Age': [25, 30, 22]})

# دمج DataFrames باستخدام العمود المشترك 'ID'
merged_df = pd.merge(df1, df2, on='ID', how='inner')
print(merged_df)

ولتفاصيل أكثر هذا هو التوثيق الرسمي الخاص بها :

ثانيا pd.concat حيث تستخدم لدمج DataFrames بشكل رأسي أو أفقي. ولا تعتمد على الأعمدة المشتركة كما في merge ويمكنك تحديد المحور الذي يتم الدمج بناء عليه . حيث يتم الدمج إما عبر المحور العمودي (الصفوف) باستخدام axis=0 أو عبر المحور الأفقي (الأعمدة) باستخدام axis=1.

مثل 

import pandas as pd

# إنشاء DataFrames
df1 = pd.DataFrame({'A': [1, 2, 3]})
df2 = pd.DataFrame({'A': [4, 5, 6]})

# دمج DataFrames بشكل عمودي باستخدام pd.concat
concatenated_df = pd.concat([df1, df2], axis=0)

# عرض النتيجة
print(concatenated_df)

#   A
#0  1
#1  2
#2  3
#0  4
#1  5
#2  6

وهذا هو التوثيق الرسمي لها :

  • 0
نشر

pd.merge تستخدم للدمج العمودي كما أنها تعتمد على المفاتيح Keys  أي تعتمد على الدمج حسب المشترك لكن pd.concat يمكنها الدمج إما عموديا أو رأسيا عندما يكون ال axis=0 يدمج عموديا لكن عندما يكون axis=1 فيدمج أفقيا وستخدم لدمج الجداول بأكملها.

مثال على merge حيث اعتمد على المفتاح:

import pandas as pd 
 
data1 = {'key': ['K0', 'K1', 'K2', 'K3'],
         'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 
        'Age':[27, 24, 22, 32],} 
    
data2 = {'key': ['K0', 'K1', 'K2', 'K3'],
         'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 
        'Qualification':['Btech', 'B.A', 'Bcom', 'B.hons']} 
 
# Convert the dictionary into DataFrame  
df = pd.DataFrame(data1)
 
# Convert the dictionary into DataFrame  
df1 = pd.DataFrame(data2) 
   
print(df, "\n\n", df1)
res = pd.merge(df, df1, on='key') 
res

merge.thumb.jpg.2058cbc5be8b0965677b68eca69c8091.jpg

مثال على concat حيث تم الدمج افقيا:

import pandas as pd
 
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
                    'B': ['B0', 'B1', 'B2', 'B3']})
display('df1:', df1)
df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'], 
                    'D': ['D0', 'D1', 'D2', 'D3']})
display('df2:', df2)
 
display('After concatenating:')
display(pd.concat([df1, df2],
                  axis = 1))

concat.thumb.jpg.43373fba199375a7afeff0c6dfa74266.jpg

فنستخدم حسب المعطيات التي لدينا وعلى حسب المراد فعله.

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...