ভূমিকা
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 ফেরত দেয়)