একটি পান্ডাস ডেটাফ্রেম প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্সে কীভাবে NaN পূরণ করবেন। উল্লম্ব অনুসন্ধান. আ.

কিভাবে একটি পান্ডাস ডেটাফ্রেমে NaN পূরণ করবেন

অনুপস্থিত মানগুলি সাধারণ এবং হয় মানুষের ত্রুটি, যন্ত্র ত্রুটি, অন্য দল থেকে প্রক্রিয়াকরণ, বা অন্যথায় একটি নির্দিষ্ট পর্যবেক্ষণের জন্য ডেটার অভাবের কারণে ঘটে।

এই বাইটে, আমরা দেখে নেব কিভাবে A-তে NaN পূরণ করতে হয় DataFrame, যদি আপনি সেগুলি পূরণ করে NaN পরিচালনা করতে চান।

প্রথম বন্ধ, আসুন একটি উপহাস তৈরি করা যাক DataFrame কিছু র্যান্ডম মান বাদ দিয়ে:

import numpy as np
array = np.random.randn(25, 3)
mask = np.random.choice([1, 0], array.shape, p=[.3, .7]).astype(bool)
array[mask] = np.nan

df = pd.DataFrame(array, columns=['Col1', 'Col2', 'Col3'])
        Col1      Col2      Col3 
0  -0.671603 -0.792415  0.783922
1   0.207720       NaN  0.996131
2  -0.892115 -1.282333       NaN
3  -0.315598 -2.371529 -1.959646
4        NaN       NaN -0.584636
5   0.314736 -0.692732 -0.303951
6   0.355121       NaN       NaN
7        NaN -1.900148  1.230828
8  -1.795468  0.490953       NaN
9  -0.678491 -0.087815       NaN
10  0.755714  0.550589 -0.702019
11  0.951908 -0.529933  0.344544
12       NaN  0.075340 -0.187669
13       NaN  0.314342 -0.936066
14       NaN  1.293355  0.098964

আসুন প্লট করি, বলুন, তৃতীয় কলাম:

plt.plot(df['Col3'])

যখন বিভিন্ন কৌশল দ্বারা পূর্ণ হয় - এই NaN-ভরা গ্রাফটি এর সাথে প্রতিস্থাপন করা যেতে পারে:

একটি পান্ডাস ডেটাফ্রেম প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্সে কীভাবে NaN পূরণ করবেন। উল্লম্ব অনুসন্ধান. আ.

fillna() - গড়, মধ্যমা, মোড

আপনি এই মানগুলিকে একটি নতুন কলামে পূরণ করতে পারেন এবং আপনি যে কলামটি পূরণ করতে চান তাতে এটি বরাদ্দ করতে পারেন, অথবা ব্যবহার করে ইন-প্লেস করতে পারেন inplace যুক্তি. এখানে, আমরা পরিদর্শনের সুবিধার জন্য একটি নতুন কলামে ভরা মানগুলি বের করব:

mean = df['Col3'].fillna(df['Col3'].mean(), inplace=False)
median = df['Col3'].fillna(df['Col3'].median(), inplace=False)
mode = df['Col3'].fillna(df['Col3'].mode(), inplace=False)

কলামের মধ্যক, গড় এবং মোড হল -0.187669, -0.110873 এবং 0.000000 এবং এই মানগুলি যথাক্রমে প্রতিটি NaN-এর জন্য ব্যবহার করা হবে। এটি কার্যকরভাবে ধ্রুবক মান দিয়ে পূরণ করছে, যেখানে মান ইনপুট হচ্ছে কলামের প্রবেশের উপর নির্ভর করে।

প্রথমত, মধ্যম মান দিয়ে পূরণ করার ফলে:

একটি পান্ডাস ডেটাফ্রেম প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্সে কীভাবে NaN পূরণ করবেন। উল্লম্ব অনুসন্ধান. আ.

গড় মান সহ:

একটি পান্ডাস ডেটাফ্রেম প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্সে কীভাবে NaN পূরণ করবেন। উল্লম্ব অনুসন্ধান. আ.

মোড মান সহ:

একটি পান্ডাস ডেটাফ্রেম প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্সে কীভাবে NaN পূরণ করবেন। উল্লম্ব অনুসন্ধান. আ.

fillna() - ধ্রুবক মান

আপনি পরিবর্তে একটি ধ্রুবক মান দিয়ে পূরণ করতে পারেন:

সেরা-অভ্যাস, শিল্প-স্বীকৃত মান এবং অন্তর্ভুক্ত চিট শীট সহ গিট শেখার জন্য আমাদের হ্যান্ডস-অন, ব্যবহারিক গাইড দেখুন। গুগলিং গিট কমান্ড এবং আসলে বন্ধ করুন শেখা এটা!

constant = df['Col3'].fillna(0, inplace=False

এর ফলে প্রতিটি NaN এর পরিবর্তে একটি ধ্রুবক মান (0) রাখা হয়। 0 আমাদের মধ্যকার কাছাকাছি এবং গড় এবং মোডের সমান, তাই ভরাট মানগুলি আমাদের উপহাস ডেটাসেটের জন্য সেই পদ্ধতির সাথে সাদৃশ্যপূর্ণ হবে:

0     0.783922
1     0.996131
2     0.000000
3    -1.959646
4    -0.584636
5    -0.303951
6     0.000000
7     1.230828
8     0.000000
9     0.000000
10   -0.702019
11    0.344544
12   -0.187669
13   -0.936066
14    0.098964

একটি পান্ডাস ডেটাফ্রেম প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্সে কীভাবে NaN পূরণ করবেন। উল্লম্ব অনুসন্ধান. আ.

fillna() - ফরোয়ার্ড এবং ব্যাকওয়ার্ড ফিল

প্রতিটি সারিতে - আপনি আগে বা পরে সারি থেকে মান গ্রহণ করে একটি ফরোয়ার্ড বা পিছন দিকে ফিল করতে পারেন:

ffill = df['Col3'].fillna(method='ffill')
bfill = df['Col3'].fillna(method='bfill')

ফরওয়ার্ড-ফিলিংয়ের সাথে, যেহেতু আমরা সারি 2 থেকে অনুপস্থিত - দ্বিতীয়টি পূরণ করতে সারি 1 থেকে মান নেওয়া হয়। মানগুলি এগিয়ে যায়:

0     0.783922
1     0.996131
2     0.996131
3    -1.959646
4    -0.584636
5    -0.303951
6    -0.303951
7     1.230828
8     1.230828
9     1.230828
10   -0.702019
11    0.344544
12   -0.187669
13   -0.936066
14    0.098964

একটি পান্ডাস ডেটাফ্রেম প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্সে কীভাবে NaN পূরণ করবেন। উল্লম্ব অনুসন্ধান. আ.

ব্যাকওয়ার্ড-ফিলিং সঙ্গে, বিপরীত ঘটবে. সারি 2 সারি 3 থেকে মান দিয়ে পূর্ণ হয়:

0     0.783922
1     0.996131
2    -1.959646
3    -1.959646
4    -0.584636
5    -0.303951
6     1.230828
7     1.230828
8    -0.702019
9    -0.702019
10   -0.702019
11    0.344544
12   -0.187669
13   -0.936066
14    0.098964

একটি পান্ডাস ডেটাফ্রেম প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্সে কীভাবে NaN পূরণ করবেন। উল্লম্ব অনুসন্ধান. আ.

যদিও, যদি একাধিক থাকে NaN একটি ক্রমানুসারে - এগুলি ভাল কাজ করবে না এবং NaN কে আরও নীচে ক্যাসকেড করতে পারে, ডেটা স্কুইং করে এবং প্রকৃতপক্ষে রেকর্ড করা মানগুলি সরিয়ে দেয়।

ইন্টারপোলেট()

সার্জারির interpolate() পদ্ধতি SciPy-এর কাছে মানগুলির ইন্টারপোলেশন অর্পণ করে মান ইন্টারপোলেট করার জন্য পদ্ধতির স্যুট. এটি বিভিন্ন ধরনের যুক্তি গ্রহণ করে, যার মধ্যে রয়েছে, nearest, zero, slinear, quadratic, cubic, spline, barycentric, polynomial, krogh, piecewise_polynomial, spline, pchip, akima, cubicsplineইত্যাদি

পূর্ববর্তী পদ্ধতির মতো ধ্রুবক বা অর্ধ-ভেরিয়েবল দিয়ে মান পূরণ করার চেয়ে ইন্টারপোলেশন অনেক বেশি নমনীয় এবং "স্মার্ট"।

ইন্টারপোলেশন সঠিকভাবে একটি ক্রম এমনভাবে পূরণ করতে পারে যা অন্য কোনও পদ্ধতি করতে পারে না, যেমন:

s = pd.Series([0, 1, np.nan, np.nan, np.nan, 5])
s.fillna(s.mean()).values

s.fillna(method='ffill').values

s.interpolate().values

ডিফল্ট ইন্টারপোলেশন রৈখিক, এবং যে অনুমান করা হয় 1...5 সম্ভবত একটি 1, 2, 3, 4, 5 সিকোয়েন্স খুব বেশি পাওয়া যায় না (কিন্তু নিশ্চিত নয়)। ধ্রুবক ভরাট এবং ফরোয়ার্ড বা ব্যাকওয়ার্ড-ফিলিং উভয়ই এখানে খারাপভাবে ব্যর্থ হয়। সাধারণভাবে বলতে গেলে - কোলাহলপূর্ণ সংকেত বা দূষিত ডেটাসেটে NaN পূরণ করার ক্ষেত্রে ইন্টারপোলেশন সাধারণত একটি ভাল বন্ধু হতে চলেছে।

ইন্টারপোলেশনের ধরন নিয়ে পরীক্ষা করলে ভালো ফলাফল পাওয়া যেতে পারে।

এখানে দুটি ইন্টারপোলেশন পদ্ধতি রয়েছে (splice এবং polynomial প্রয়োজন একটি order যুক্তি):

nearest = df['Col3'].interpolate(method='nearest')
polynomial = df['Col3'].interpolate(method='polynomial', order=3)

এর ফলে:

একটি পান্ডাস ডেটাফ্রেম প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্সে কীভাবে NaN পূরণ করবেন। উল্লম্ব অনুসন্ধান. আ.

এবং:

একটি পান্ডাস ডেটাফ্রেম প্লেটোব্লকচেইন ডেটা ইন্টেলিজেন্সে কীভাবে NaN পূরণ করবেন। উল্লম্ব অনুসন্ধান. আ.

সময় স্ট্যাম্প:

থেকে আরো Stackabuse