কম্পিউটার টিউটোরিয়াল

পাইথন প্যান্ডাস: concat() ব্যবহার করে দুটি ডেটাফ্রেমের সাধারণ সারি বের করা

দুটি ডেটাফ্রেমের সাধারণ সারি (common rows) খুঁজে বের করার একটি পদ্ধতি হল concat() ফাংশন ব্যবহার করা। এই পদ্ধতিতে দুটি ডেটাফ্রেম একসাথে জোড়া দেওয়া হয়, তারপর ডুপ্লিকেট সারি খুঁজে বের করা হয়।

পদ্ধতি

  1. pd.concat() দিয়ে দুটি ডেটাফ্রেম একত্রিত করা
  2. reset_index() দিয়ে ইনডেক্স রিসেট করা
  3. groupby() দিয়ে সব কলাম অনুযায়ী গ্রুপ করা
  4. যেসব গ্রুপের আকার ১-এর বেশি, সেগুলোই সাধারণ সারি

সম্পূর্ণ উদাহরণ

import pandas as pd

# প্রথম ডেটাফ্রেম
df1 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],
    "Reg_Price": [1000, 1500, 1100, 800, 1100, 900]
})

# দ্বিতীয় ডেটাফ্রেম
df2 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],
    "Reg_Price": [1200, 1500, 1000, 800, 1100, 1000]
})

print("ডেটাফ্রেম ১:")
print(df1)
print("\nডেটাফ্রেম ২:")
print(df2)

# concat() দিয়ে একত্রিত
combined = pd.concat([df1, df2]).reset_index(drop=True)

# সব কলাম অনুযায়ী গ্রুপ
grouped = combined.groupby(list(combined.columns))

# যেসব রো একাধিকবার আসেছে (len > 1), সেগুলো বের করা
common_indices = [k[0] for k in grouped.groups.values() if len(k) > 1]
common_rows = combined.reindex(common_indices)

print("\nসাধারণ সারিগুলো:")
print(common_rows)

আউটপুট

সাধারণ সারিগুলো:
     Car  Reg_Price
3  Tesla        800
1  Lexus       1500
4  Bentley     1100

এখানে Tesla-800, Lexus-1500, এবং Bentley-1100 — এই তিনটি সারি দুটি ডেটাফ্রেমেই একই আছে।

বিকল্প ও উন্নত পদ্ধতি

আধুনিক প্যান্ডাস ভার্সনে merge() ব্যবহার করা আরও কার্যকর এবং পঠনযোগ্য:

# ইনার জয়েন দিয়ে সাধারণ সারি বের করা (সুপারিশকৃত)
common_rows = pd.merge(df1, df2, on=["Car", "Reg_Price"], how="inner")

এই পদ্ধতিটি দ্রুত, কম মেমরি খায় এবং কোডও পরিষ্কার।

  1. সিবর্নে hue দিয়ে দুটি ক্যাটাগরিক্যাল ভেরিয়েবলে সুয়ার্ম প্লট গ্রুপ করা

  2. পাইথন প্যান্ডাস: দুটি DataFrame-এর পার্থক্য বের করা

  3. পাইথন প্যান্ডাস: concat() ব্যবহার করে দুটি ডেটাফ্রেমের সাধারণ সারি বের করা

  4. পাইথন পান্ডাসে মিসিং ভ্যালুসহ দুটি DataFrame তুলনা করা