প্যান্ডাসে একটি ডেটারেঞ্জের মধ্যে কোনো তারিখ অনুপস্থিত আছে কিনা তা যাচাই করার জন্য pd.date_range() এবং difference() মেথড ব্যবহার করা হয়।
উদাহরণ
import pandas as pd
# ডেটা
d = {
'Car': ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
'Date_of_purchase': ['2020-10-10', '2020-10-12', '2020-10-17', '2020-10-16', '2020-10-19', '2020-10-22']
}
df = pd.DataFrame(d)
print("মূল ডেটাফ্রেম:")
print(df)
# Date_of_purchase কে ইনডেক্স বানানো
df = df.set_index('Date_of_purchase')
# স্ট্রিংকে ডেটাইমে রূপান্তর
df.index = pd.to_datetime(df.index)
print("\nডেটাইম ইনডেক্স:")
print(df.index)
# ২০২০-১০-১০ থেকে ২০২০-১০-২২ পর্যন্ত সব তারিখ
full_range = pd.date_range(start="2020-10-10", end="2020-10-22")
# অনুপস্থিত তারিখ বের করা
missing = full_range.difference(df.index)
print("\nঅনুপস্থিত তারিখগুলো:")
print(missing)
আউটপুট
মূল ডেটাফ্রেম:
Car Date_of_purchase
0 BMW 2020-10-10
1 Lexus 2020-10-12
2 Audi 2020-10-17
3 Mercedes 2020-10-16
4 Jaguar 2020-10-19
5 Bentley 2020-10-22
অনুপস্থিত তারিখগুলো:
DatetimeIndex(['2020-10-11', '2020-10-13', '2020-10-14', '2020-10-15',
'2020-10-18', '2020-10-20', '2020-10-21'],
dtype='datetime64[ns]', freq=None)
ব্যাখ্যা
pd.date_range(start, end)— পুরো ডেটারেঞ্জ তৈরি করে.difference(df.index)— ডেটাফ্রেমে থাকা তারিখগুলো বাদ দিয়ে বাকিগুলো ফেরত দেয়- ফলাফল
DatetimeIndexহিসেবে আসে
উন্নত ব্যবহার: রি-ইন্ডেক্সিং দিয়ে ফিল আপ
# অনুপস্থিত তারিখগুলো NaN দিয়ে ফিল
df_full = df.reindex(full_range)
print(df_full)
# ফরওয়ার্ড ফিল বা ইন্টারপোলেশন
df_filled = df_full.ffill() # আগের মান দিয়ে ফিল
df_interp = df_full.interpolate() # লিনিয়ার ইন্টারপোলেশন (নাম্বারিক কলামের জন্য)
বিজনেস ডে (Business Day) ব্যবহার
# শুধু কর্মদিবস (বান্দার বাদ)
biz_range = pd.date_range(start="2020-10-10", end="2020-10-22", freq='B')
missing_biz = biz_range.difference(df.index)