2015-12-16 8 views
6

का उपयोग करने पर दिशानिर्देश inplace का उपयोग करने के लिए दिशानिर्देश क्या है?पांडा इनस्थल कीवर्ड तर्क

उदाहरण के लिए,

df = df.reset_index() 

या

df.reset_index(inplace=True) 

एक ही एक ही लेकिन अलग-अलग?

+2

वही बात। मैं अन्य लाइनों के आगे पढ़ने की आसानी के लिए पहला तरीका पसंद करता हूं जो डेटाफ्रेम इनस्थल पर कार्य नहीं करते हैं। – itzy

उत्तर

5

परिणामी डेटाफ्रेम df के संदर्भ में, दोनों दृष्टिकोण समान हैं। अंतर (अधिकतम) स्मृति उपयोग में निहित है, क्योंकि इन-प्लेस संस्करण डेटाफ्रेम की एक प्रति नहीं बनाता है।

import numpy as np 
import pandas as pd 

def make_data(): 
    return pd.DataFrame(np.random.rand(1000000, 100)) 

def func_copy(): 
    df = make_data() 
    df = df.reset_index() 

def func_inplace(): 
    df = make_data() 
    df.reset_index(inplace=True) 

हम स्मृति के उपयोग के लिए कुछ बेंच मार्किंग प्रदर्शन करने के लिए memory_profile लाइब्रेरी का उपयोग कर सकते हैं::

%load_ext memory_profiler 

%memit func_copy() 
# peak memory: 1602.66 MiB, increment: 1548.66 MiB 

%memit func_inplace() 
# peak memory: 817.02 MiB, increment: 762.94 MiB 

जैसी उम्मीद थी, यथा-स्थान संस्करण अधिक स्मृति कुशल है

इस स्थापना पर विचार करें।

दूसरी ओर, वहाँ भी दृष्टिकोणों के बीच समय चलाने में एक गैर तुच्छ अंतर हो जब डाटा, आकार इतना बड़ा (जैसे ऊपर के उदाहरण में) है लगता है:

%timeit func_copy() 
1 loops, best of 3: 2.56 s per loop 

%timeit func_inplace() 
1 loops, best of 3: 1.35 s per loop 

इन मतभेदों को हो सकता है या उपयोग के मामले (उदाहरण के लिए adhoc अन्वेषक विश्लेषण बनाम उत्पादन कोड), डेटा आकार और हार्डवेयर संसाधन के आधार पर महत्वपूर्ण नहीं हो सकता है। सामान्य रूप से, बेहतर स्मृति और रन टाइम दक्षता के लिए जब भी संभव हो, इन-प्लेस संस्करण का उपयोग करना एक अच्छा विचार हो सकता है।

+0

'df.reset_index (inplace = True)' रिटर्न कोई नहीं fyi - – user3659451

+0

ठीक है, इंगित करने के लिए धन्यवाद। –

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