2017-01-25 6 views
9

कैसे यूनिट परीक्षण पायथन डेटाफ्रेम कैसे करते हैं?आप यूनिट टेस्ट पायथन डेटाफ्रेम

मेरे पास ऐसे फ़ंक्शन हैं जिनमें डेटाफ्रेम के रूप में इनपुट और आउटपुट है। मेरे पास लगभग हर समारोह है। अब अगर मैं इकाई का परीक्षण करना चाहता हूं तो ऐसा करने का सबसे अच्छा तरीका क्या है? ऐसा लगता है कि प्रत्येक फंक्शन के लिए एक नया डेटाफ्रेम (मूल्यों के साथ आबादी के साथ) बनाने का प्रयास थोड़ा सा लगता है?

क्या कोई सामग्री है जो आप मुझे देख सकते हैं? क्या आप इन कार्यों के लिए यूनिट परीक्षण लिखना चाहिए?

उत्तर

2

मुझे नहीं लगता कि यूनिट परीक्षण के लिए छोटे डेटाफ्रेम बनाना मुश्किल है?

import pandas as pd 
from nose.tools import assert_dict_equal 

input = pd.DataFrame.from_dict({ 
    'field_1': [some, values], 
    'field_2': [other, values] 
}) 
expected = { 
    'result': [...] 
} 
assert_dict_equal(expected, my_func(input).to_dict(), "oops, there's a bug...") 
+0

मेरा परिणाम भी एक डेटा फ्रेम है। तो मुझे एक और डेटा फ्रेम बनाना चाहिए? इस मामले में मैं assert_dict_equal का उपयोग नहीं कर सकता? – CodeGeek123

+0

हां, यही कारण है कि मैंने आपके फ़ंक्शन से परिणामस्वरूप 'to_dict() 'कहा - इसलिए मुझे' dict 'मिलता है जिसे' अपेक्षित 'से तुलना की जा सकती है, जो' नाक 'विधि के साथ सुझाई गई है। – rtkaleta

+1

@ CodeGeek123 क्या यह मदद करता है? – rtkaleta

2

मैं डॉकस्ट्रिंग में सीएसवी के रूप में मूल्य लिखने का सुझाव दूंगा (या अलग-अलग फाइलें अगर वे बड़े हों) और उन्हें pd.read_csv() का उपयोग करके पार्सिंग करें। आप सीएसवी से अपेक्षित आउटपुट को भी पार्स कर सकते हैं, और तुलना कर सकते हैं, या अन्यथा सीएसवी लिखने और इसे अलग करने के लिए df.to_csv() का उपयोग कर सकते हैं।

+0

यह एक अच्छा विचार है, लेकिन 'csv' फ़ाइलों कष्टप्रद अपने DataFrame अजीब एन्कोडिंग, या सरणियों है कि आप करने के लिए' literal_eval', आदि उसके कोड सही तरीके से संरचित है, तो इनपुट/उम्मीद DataFrames की जरूरत है डेटा है, तो हो सकता है के साथ काम कर रहा है फ्लाई पर काफी छोटा और इसलिए निर्माण करना आसान होना चाहिए? – rtkaleta

6

जबकि पांडा के परीक्षण कार्यों मुख्य रूप से आंतरिक परीक्षण के लिए उपयोग किया जाता है, NumPy परीक्षण कार्यों कि यहाँ प्रलेखित रहे हैं की एक बहुत ही उपयोगी सेट शामिल हैं: NumPy Test Support

इन कार्यों को NumPy सरणी तुलना, लेकिन आप सरणी कि values संपत्ति का उपयोग कर एक पांडा डाटा फ्रेम आबाद मिल सकती है। आप एक साधारण डेटा फ्रेम को परिभाषित कर सकते हैं और तुलना कर सकते हैं कि आपका फ़ंक्शन आपके द्वारा अपेक्षित चीज़ों पर निर्भर करता है।

एक तकनीक का उपयोग कर सकते कार्यों की एक संख्या के लिए परीक्षण एक डाटा संग्रह परिभाषित करने के लिए है। इस तरह, आप उस डेटा फ्रेम को एक बार परिभाषित करने के लिए Pytest Fixtures का उपयोग कर सकते हैं और इसे कई परीक्षणों में उपयोग कर सकते हैं।

संसाधनों के संदर्भ में, मैं बहुत उपयोगी हो करने के लिए Testing with NumPy and Pandas पर इस लेख पाया। मैंने इस साल पिकॉन कनाडा में डेटा विश्लेषण परीक्षण के बारे में एक संक्षिप्त प्रस्तुति भी की: Automate Your Data Analysis Testing

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