উত্তর:
আপডেট: পান্ডাস 0.22.0 ব্যবহার করে
নতুন পান্ডা সংস্করণগুলিতে নতুন পদ্ধতি রয়েছে 'ডেটাফ্রেম.আইসনা ()' এবং 'ডেটা ফ্রেম.ন্টনা ()'
In [71]: df
Out[71]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [72]: df.isna().any()
Out[72]:
a True
b True
c False
dtype: bool
কলামের তালিকা হিসাবে:
In [74]: df.columns[df.isna().any()].tolist()
Out[74]: ['a', 'b']
এই কলামগুলি নির্বাচন করতে (কমপক্ষে একটি NaN
মান রয়েছে):
In [73]: df.loc[:, df.isna().any()]
Out[73]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
পুরানো উত্তর:
ইসনুল () ব্যবহার করার চেষ্টা করুন :
In [97]: df
Out[97]:
a b c
0 NaN 7.0 0
1 0.0 NaN 4
2 2.0 NaN 4
3 1.0 7.0 0
4 1.0 3.0 9
5 7.0 4.0 9
6 2.0 6.0 9
7 9.0 6.0 4
8 3.0 0.0 9
9 9.0 0.0 1
In [98]: pd.isnull(df).sum() > 0
Out[98]:
a True
b True
c False
dtype: bool
বা @ মূল প্রস্তাবিত ক্লিয়ারার সংস্করণ হিসাবে:
In [5]: df.isnull().any()
Out[5]:
a True
b True
c False
dtype: bool
In [7]: df.columns[df.isnull().any()].tolist()
Out[7]: ['a', 'b']
একটি উপসেট নির্বাচন করতে - কমপক্ষে একটি মানযুক্ত সমস্ত কলাম NaN
:
In [31]: df.loc[:, df.isnull().any()]
Out[31]:
a b
0 NaN 7.0
1 0.0 NaN
2 2.0 NaN
3 1.0 7.0
4 1.0 3.0
5 7.0 4.0
6 2.0 6.0
7 9.0 6.0
8 3.0 0.0
9 9.0 0.0
df.columns[df.isin['xxx'].any()].tolist()
df.columns[df.eq(search_for_value).any()].tolist()
isna
, notna
?
আমার একটি সমস্যা হয়েছিল যেখানে আমার কাছে অনেকগুলি কলাম দৃশ্যমানভাবে স্ক্রিনে পরিদর্শন করতে হয়েছিল তাই একটি সংক্ষিপ্ত তালিকা কম্পম্প যা আপত্তিজনক কলামগুলি ফিল্টার করে এবং ফেরত দেয়
nan_cols = [i for i in df.columns if df[i].isnull().any()]
যদি এটি কারও সহায়ক হয়
কতগুলি কলামগুলিতে নাল মান রয়েছে এবং কতগুলি না করে তা আরও বেশি কলামযুক্ত ডেটাসেটগুলিতে এটি আরও ভাল।
print("No. of columns containing null values")
print(len(df.columns[df.isna().any()]))
print("No. of columns not containing null values")
print(len(df.columns[df.notna().all()]))
print("Total no. of columns in the dataframe")
print(len(df.columns))
উদাহরণস্বরূপ আমার ডেটাফ্রেমে এটিতে 82২ টি কলাম রয়েছে যার মধ্যে ১৯ টিতে কমপক্ষে একটি নাল মান রয়েছে।
আরও আপনি স্বয়ংক্রিয়ভাবে কলস এবং সারিগুলি সরিয়ে ফেলতে পারেন যার উপর নির্ভর করে আরও নাল মান রয়েছে
এখানে কোডটি যা বুদ্ধিমানভাবে এটি করে:
df = df.drop(df.columns[df.isna().sum()>len(df.columns)],axis = 1)
df = df.dropna(axis = 0).reset_index(drop=True)
দ্রষ্টব্য: উপরের কোডটি আপনার সমস্ত নাল মানকে সরিয়ে দেয়। আপনি যদি নাল মান চান তবে তাদের আগে প্রক্রিয়া করুন।
এই উভয়েরই কাজ করা উচিত:
df.isnull().sum()
df.isna().sum()
ডেটা ফ্রেম পদ্ধতিগুলি isna()
বা isnull()
সম্পূর্ণ অভিন্ন।
দ্রষ্টব্য : খালি স্ট্রিংগুলি ''
মিথ্যা হিসাবে বিবেচিত হবে (এনএ হিসাবে বিবেচিত হবে না)
এটি আমার পক্ষে কাজ করেছে,
1. কমপক্ষে কমপক্ষে 1 টি নাল মানযুক্ত কলামগুলি পাওয়ার জন্য। (কলামের নাম)
data.columns[data.isnull().any()]
২. কমপক্ষে কমপক্ষে ১ টি নাল মান সহ কলামগুলি পাওয়ার জন্য।
data[data.columns[data.isnull().any()]].isnull().sum()
[Ptionচ্ছিক] ৩. নাল গণনার শতাংশ পাওয়ার জন্য।
data[data.columns[data.isnull().any()]].isnull().sum() * 100 / data.shape[0]
df.isna().any()[lambda x: x]
আমার জন্য কাজ করে