पहले मामले में, मैं pandas.cut()
का उपयोग करने के लिए pandas.cut()
का उपयोग करने के लिए एक बहुत ही सरल DataFrame
का उपयोग करने के लिए एक कॉलम में अद्वितीय मानों की संख्या को गिनने के लिए उपयोग करता हूं। कोड चलाता है के रूप में उम्मीद:pandas.cut() दो समान मामलों में अद्वितीय गणना में अलग-अलग व्यवहार क्यों करता है?
हालांकि, निम्नलिखित कोड में, pandas.cut()
मायने रखता है गलत अनन्य मान की संख्या। मुझे उम्मीद है कि पहले बिन (1462320000, 1462406400] के पास 5 अद्वितीय मूल्य होंगे, और अंतिम बिन (1462752000, 1462838400] सहित अन्य डिब्बे 0 अद्वितीय मान होंगे।
इसके परिणामस्वरूप, परिणामस्वरूप दिखाया गया है, कोड 5 लौटाता है पिछले बिन (1462752000, 1462838400] में अद्वितीय मानों, जबकि 2 पर प्रकाश डाला क्योंकि वे सीमा से बाहर हैं मान नहीं गिना जाना चाहिए।
तो किसी को समझा सकता है क्यों pandas.cut()
बहुत अलग बर्ताव करता है इन 2 मामलों में? और भी, मैं वास्तव में आभारी होंगे अगर आप मुझे यह भी बता सकते हैं कि मैं किसी कॉलम में किसी अन्य कॉलम के मूल्य के भीतर एक कॉलम में अद्वितीय मानों की संख्या को सही ढंग से गिनने के लिए कोड को कैसे सही कर सकता हूं।
additionnal जानकारी: (कृपया आयात pandas
और numpy
कोड को चलाने के लिए, मेरे पांडा संस्करण 0.19.2 है, और मैं अजगर 2.7 का उपयोग कर रहा)
अपने तैयार संदर्भ के लिए, मैं इसके द्वारा पोस्ट मेरी DataFrame
और कोड तुम मेरे कोड पुन: पेश करने के लिए:
केस 1:
df = pd.DataFrame({'No': [1,1.5,2,1,3,5,10], 'useragent': ['a', 'c', 'b', 'c', 'b','a','z']})
print type(df)
print df
df.groupby(pd.cut(df['No'], bins=np.arange(0,4,1))).useragent.nunique()
केस 2:
print type(df)
print len(df)
print df.time.nunique()
print df.hash.nunique()
print df[['time','hash']]
df.groupby(pd.cut(df['time'], bins =np.arange(1462320000,1462924800,86400))).hash.nunique()
केस 2 की डेटा:
time hash
1462328401 qo
1462328401 qQ
1462838401 q1
1462328401 q1
1462328401 qU
1462328401 qU
1462328401 qU
1462328401 qU
1462328401 qX
1462838401 qX
काम करता है। टॉलिस्ट के साथ मोड़ के लिए धन्यवाद() – weefwefwqg3