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

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

ভূমিকা

Pandas মিসিং ভ্যালু রিপ্রেজেন্ট করতে NumPy NaN (np.nan) ব্যবহার করে। এই NaN-এর কিছু আকর্ষণীয় গাণিতিক বৈশিষ্ট্য আছে: এটি নিজের সাথে সমান নয় (np.nan == np.nan → False)। কিন্তু Python None নিজের সাথে সমান (None == None → True)।

কীভাবে করবেন

NaN আচরণ উদাহরণ


import pandas as pd
import numpy as np
print(None == None)  # True
print(np.nan == np.nan)  # False
print(np.nan > 10)  # False

DataFrame তৈরি


df = pd.DataFrame(data={
    "players": ['Federer', 'Nadal', 'Djokovic', 'Murray', 'Medvedev', 'Zverev'],
    "titles": [20, 19, 17, 3, np.nan, np.nan]
})
df.index = df['players']
df.sort_index(inplace=True, ascending=True)

১. স্কেলার ভ্যালুর সাথে তুলনা


print(df == "Federer")

২. DataFrame নিজের সাথে তুলনা (== অপারেটর)


df_compare = df == df
print(df_compare)

দেখতে সব True লাগে, কিন্তু .all() দিয়ে চেক করলে titles কলাম False আসে কারণ NaN != NaN।

৩. সঠিক পদ্ধতি: .equals() মেথড

.equals() মেথড একই লোকেশনের NaN-গুলোকে সমান বিবেচনা করে।


print(df_compare.equals(df_compare))  # True

নোট: .eq() হল == এর সমতুল্য, .equals() নয়।

৪. ইউনিট টেস্টিং-এর জন্য: assert_frame_equal


from pandas.testing import assert_frame_equal
assert_frame_equal(df_compare, df_compare) is None  # True (এরর না থাকলে None ফেরত দেয়)
  1. পাইথন পান্ডাসে মিসিং ভ্যালুসহ দুটি DataFrame তুলনা করা

  2. পাইথনে দুটি ডিকশনারি তুলনা করা

  3. পাইথনে দুটি টাপল তুলনা করা

  4. পাইথনে দুটি লিস্ট তুলনা করা