2016-10-22 7 views
6

मेरे पास लगभग 80 कॉलम के साथ एक बड़ा पांडा डेटाफ्रेम है। डेटाफ्रेम में से प्रत्येक 80 कॉलम वेबसाइटों के लिए दैनिक यातायात आंकड़े रिपोर्ट करता है (कॉलम वेबसाइटें हैं)।पायथन पांडा: डेटा को सामान्य करने का सबसे अच्छा तरीका?

चूंकि मैं कच्चे यातायात आंकड़ों के साथ काम नहीं करना चाहता, इसलिए मैं अपने सभी कॉलम को सामान्य करना चाहता हूं (पहले को छोड़कर, जो तारीख है)। या तो 0 1 करने के लिए या (और भी बेहतर) 0 से 100.

Date  A  B  ... 
10/10/2010 100.0 402.0 ... 
11/10/2010 250.0 800.0 ... 
12/10/2010 800.0 2000.0 ... 
13/10/2010 400.0 1800.0 ... 

कहा जा रहा है करने के लिए से, मुझे आश्चर्य है जो सामान्य लागू करने के लिए। Min-Max scaling बनाम जेड-स्कोर सामान्यीकरण (मानकीकरण)? मेरे कुछ स्तंभों में मजबूत आउटलेटर्स हैं। उदाहरण होना अच्छा होगा। मुझे खेद है कि पूरा डेटा प्रदान करने में सक्षम नहीं है।

उत्तर

14

सबसे पहले, अपनी तिथि कॉलम को एक अनुक्रमणिका में बदलें।

dates = df.pop('Date') 
df.index = dates 

तो या तो उपयोग z- स्कोर सामान्य:

df1 = (df - df.mean())/df.std() 

या न्यूनतम-अधिकतम स्केलिंग:

df2 = (df-df.min())/(df.max()-df.min()) 

मैं शायद, क्योंकि z- स्कोर सामान्य सलाह देंगे न्यूनतम-अधिकतम स्केलिंग है क्योंकि outliers के लिए अत्यधिक संवेदनशील।

+0

इस मामले में जब आउटलाइजर्स मेरी धारणा के लिए बहुत मजबूत हैं, तो क्या आप न्यूनतम-अधिकतम की सिफारिश करेंगे? – Rnaldinho

+0

इसके अलावा, मैंने यह कोशिश की। दुर्भाग्यवश, मान 0 और 1 या 0 और 1 के बीच नहीं हैं, लेकिन -3 से 1 तक हैं? दशमलव भी होना चाहिए? – Rnaldinho

+0

यदि आपके पास कोई मजबूत आउटलाइर्स हैं और आप विश्लेषण से पहले डेटा सेट से उन्हें हटाना नहीं चाहते हैं, तो मैं अनुशंसा करता हूं कि आप जेड-स्कोर सामान्यीकरण करें। – User191919

संबंधित मुद्दे