পান্ডাস ডাটাফ্রেমে প্রতিটি সারিতে হারিয়ে যাওয়া মানগুলির সংখ্যা কীভাবে গণনা করবেন?


17

পান্ডাস ডাটাফ্রেমে প্রতিটি সারিতে আমি কীভাবে অনুপস্থিত মান পেতে পারি। আমি ডেটাফ্রেমকে বিভিন্ন ডাটাফ্রেমে বিভক্ত করতে চাই যা প্রতিটি সারিতে একই সংখ্যার অনুপস্থিত মান রয়েছে।

যেকোনো পরামর্শ?

উত্তর:


19

আপনি সারিগুলিতে এই জাতীয় গণনা প্রয়োগ করতে পারেন:

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

নিখুঁতভাবে কাজ করেছেন! ধন্যবাদ.
Kaggle

41

পান্ডাস ব্যবহার করার সময়, সহ একটি লুপ মধ্যে করণ অভিযান এড়ানোর চেষ্টা 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


4

অথবা, আপনি সহজেই ডেটা ফ্রেম অবজেক্টগুলির জন্য তথ্য পদ্ধতিটি ব্যবহার করতে পারেন:

df.info()

যা প্রতিটি কলামের জন্য নন-নাল মান গণনা সরবরাহ করে।


2

কলাম সহ নাল মান,

df.isnull().sum(axis=0)

কলাম সহ খালি মান,

c = (df == '').sum(axis=0)

সারি বরাবর নাল মান,

df.isnull().sum(axis=1)

সারি বরাবর ফাঁকা মান,

c = (df == '').sum(axis=1)

0

এই স্নিপেটটি অনুপস্থিত মান সহ মোট কলামগুলির সংখ্যার পূর্ণসংখ্যার মান প্রদান করবে:

(df.isnull().sum() > 0).astype(np.int64).sum()

-1
>>> 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

-1

আপনি যদি অনুপস্থিত মান গণনা করতে চান:

np.logical_not(df.isnull()).sum()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.