2016-03-28 12 views

उत्तर

8

यह, एक ही है, तो pivot_table उपयोग aggfunc=len और fill_value=0 में:

pd.crosstab(df['Col X'], df['Col Y']) 
pd.pivot_table(df, index=['Col X'], columns=['Col Y'], aggfunc=len, fill_value=0) 

संपादित करें:

डिफ़ॉल्ट aggfunc अलग हैं:: वहाँ अधिक अंतर नहीं है pivot_table - np.mean, crosstab - len

पैरामीटर margins_name केवल pivot_table में है।

pivot_table में आप index और columns कीवर्ड के लिए Grouper उपयोग कर सकते हैं।


मुझे लगता है कि अगर आप बस आवृत्ति तालिका की जरूरत है, crosstab समारोह बेहतर है।

+0

लेकिन ऐसा लगता है कि आप क्रॉसस्टैब फ़ंक्शन के लिए 'aggfunc' भी प्राप्त कर सकते हैं। –

11

दोनों के बीच मुख्य अंतर pivot_table अपेक्षा करता है कि आपका इनपुट डेटा पहले से ही डेटाफ्रेम हो; आप डेटाफ्रेम को pivot_table पर पास करते हैं और कॉलम नामों को स्ट्रिंग के रूप में पास करके index/columns/values निर्दिष्ट करते हैं। cross_tab के साथ, आपको डेटाफ्रेम में जाने की जरुरत नहीं है, क्योंकि आप index/columns/values के लिए सरणी जैसी वस्तुओं को पास करते हैं।

crosstab के लिए source code को देखते हुए, यह अनिवार्य रूप से सरणी की तरह वस्तुओं आप पारित लेता है, एक DataFrame बनाता है, फिर pivot_table के रूप में उपयुक्त कहता है।

सामान्य रूप से, यदि आपके पास पहले से डेटाफ्रेम है, तो pivot_table का उपयोग करें, इसलिए आपके पास एक ही डेटाफ्रेम को फिर से बनाने का अतिरिक्त ओवरहेड नहीं है। यदि आप सरणी जैसी वस्तुओं से शुरू कर रहे हैं और केवल पिवोट किए गए डेटा से चिंतित हैं, तो crosstab का उपयोग करें। ज्यादातर मामलों में, मुझे नहीं लगता कि इससे वास्तव में एक अंतर आएगा जो आप काम करने का निर्णय लेते हैं।

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