पंडों के डेटाफ़्रेम प्लेटोब्लॉकचैन डेटा इंटेलिजेंस में NaN कैसे भरें। लंबवत खोज। ऐ.

पंडों के डेटाफ़्रेम में NaN कैसे भरें?

गुम मान सामान्य हैं और या तो मानवीय त्रुटि, उपकरण त्रुटि, किसी अन्य टीम से प्रसंस्करण, या अन्यथा एक निश्चित अवलोकन के लिए डेटा की कमी के कारण होते हैं।

इस बाइट में, हम देखेंगे कि NaN को a . में कैसे भरा जाता है 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 () - लगातार मूल्य

आप इसके बजाय एक स्थिर मान भी भर सकते हैं:

सर्वोत्तम प्रथाओं, उद्योग-स्वीकृत मानकों और शामिल चीट शीट के साथ, Git सीखने के लिए व्यावहारिक मार्गदर्शिका देखें। Googling Git कमांड को रोकें और वास्तव में सीखना यह!

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 कैसे भरें। लंबवत खोज। ऐ.

फिलना () - फॉरवर्ड और बैकवर्ड फिल

प्रत्येक पंक्ति पर - आप पहले या बाद की पंक्ति से मान लेते हुए, आगे या पीछे भर सकते हैं:

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 एक क्रम में - ये अच्छा नहीं करेंगे और NaNs को और नीचे कर सकते हैं, डेटा को तिरछा कर सकते हैं और वास्तव में रिकॉर्ड किए गए मानों को हटा सकते हैं।

प्रक्षेप ()

RSI interpolate() विधि SciPy's को मूल्यों के प्रक्षेप का प्रतिनिधित्व करती है मूल्यों को प्रक्षेपित करने के तरीकों का सूट. यह कई तरह के तर्कों को स्वीकार करता है, जिनमें शामिल हैं, 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 संभावना है a 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 कैसे भरें। लंबवत खोज। ऐ.

समय टिकट:

से अधिक स्टैकब्यूज