উত্তর:
আপনি সারিগুলিতে এই জাতীয় গণনা প্রয়োগ করতে পারেন:
test_df.apply(lambda x: x.count(), axis=1)
test_df:
A B C
0: 1 1 3
1: 2 nan nan
2: nan nan nan
আউটপুট:
0: 3
1: 1
2: 0
আপনি ফলাফলটি এই জাতীয় কলাম হিসাবে যুক্ত করতে পারেন:
test_df['full_count'] = test_df.apply(lambda x: x.count(), axis=1)
ফলাফল:
A B C full_count
0: 1 1 3 3
1: 2 nan nan 1
2: nan nan nan 0
পান্ডাস ব্যবহার করার সময়, সহ একটি লুপ মধ্যে করণ অভিযান এড়ানোর চেষ্টা apply
, map
, applymap
ইত্যাদি যে ধীর আছে!
আপনি যদি প্রতিটি কলামে অনুপস্থিত মানগুলি গণনা করতে চান তবে চেষ্টা করুন:
df.isnull().sum()
অথবা df.isnull().sum(axis=0)
অন্যদিকে, আপনি প্রতিটি সারিতে গণনা করতে পারেন (যা আপনার প্রশ্ন):
df.isnull().sum(axis=1)
এটি জান ভ্যান ডের ভেজেটের সমাধানের চেয়ে প্রায় 10 গুণ বেশি দ্রুতগতির (বিটিডাব্লু তিনি মূল্যবোধের পরিবর্তে বৈধ মান গণনা করে):
In [18]: %timeit -n 1000 df.apply(lambda x: x.count(), axis=1)
1000 loops, best of 3: 3.31 ms per loop
In [19]: %timeit -n 1000 df.isnull().sum(axis=1)
1000 loops, best of 3: 329 µs per loop
অথবা, আপনি সহজেই ডেটা ফ্রেম অবজেক্টগুলির জন্য তথ্য পদ্ধতিটি ব্যবহার করতে পারেন:
df.info()
যা প্রতিটি কলামের জন্য নন-নাল মান গণনা সরবরাহ করে।
কলাম সহ নাল মান,
df.isnull().sum(axis=0)
কলাম সহ খালি মান,
c = (df == '').sum(axis=0)
সারি বরাবর নাল মান,
df.isnull().sum(axis=1)
সারি বরাবর ফাঁকা মান,
c = (df == '').sum(axis=1)
এই স্নিপেটটি অনুপস্থিত মান সহ মোট কলামগুলির সংখ্যার পূর্ণসংখ্যার মান প্রদান করবে:
(df.isnull().sum() > 0).astype(np.int64).sum()
>>> df = pd.DataFrame([[1, 2, np.nan],
... [np.nan, 3, 4],
... [1, 2, 3]])
>>> df
0 1 2
0 1 2 NaN
1 NaN 3 4
2 1 2 3
>>> df.count(axis=1)
0 2
1 2
2 3
dtype: int64