pandas 0.23 - 25. Frequently Asked Questions (FAQ)

अक्सर पूछे जाने वाले प्रश्न (एफएक्यू)




pandas

अक्सर पूछे जाने वाले प्रश्न (एफएक्यू)

DataFrame स्मृति उपयोग

DataFrame (इंडेक्स सहित) का मेमोरी उपयोग info() कॉल करते समय दिखाया गया है। एक कॉन्फ़िगरेशन विकल्प, display.memory_usage ( विकल्पों की सूची देखें), निर्दिष्ट करता है कि df.info() विधि को लागू करते समय DataFrame की मेमोरी का उपयोग प्रदर्शित किया जाएगा या नहीं।

उदाहरण के लिए, info() कॉल करते समय नीचे दिए गए DataFrame का मेमोरी उपयोग दिखाया गया है:

In [1]: dtypes = ['int64', 'float64', 'datetime64[ns]', 'timedelta64[ns]',
   ...:           'complex128', 'object', 'bool']
   ...: 

In [2]: n = 5000

In [3]: data = dict([(t, np.random.randint(100, size=n).astype(t))
   ...:               for t in dtypes])
   ...: 

In [4]: df = pd.DataFrame(data)

In [5]: df['categorical'] = df['object'].astype('category')

In [6]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5000 entries, 0 to 4999
Data columns (total 8 columns):
int64              5000 non-null int64
float64            5000 non-null float64
datetime64[ns]     5000 non-null datetime64[ns]
timedelta64[ns]    5000 non-null timedelta64[ns]
complex128         5000 non-null complex128
object             5000 non-null object
bool               5000 non-null bool
categorical        5000 non-null category
dtypes: bool(1), category(1), complex128(1), datetime64[ns](1), float64(1), int64(1), object(1), timedelta64[ns](1)
memory usage: 289.1+ KB

+ प्रतीक बताता है कि सच्ची मेमोरी का उपयोग अधिक हो सकता है, क्योंकि पांडा dtype=object साथ कॉलम में मानों द्वारा उपयोग की जाने वाली मेमोरी की गणना नहीं करते हैं।

memory_usage='deep' करना अधिक सटीक मेमोरी उपयोग रिपोर्ट को सक्षम करेगा, जिसमें निहित वस्तुओं के पूर्ण उपयोग के लिए लेखांकन होगा। यह वैकल्पिक है क्योंकि यह गहन आत्मनिरीक्षण करना महंगा हो सकता है।

In [7]: df.info(memory_usage='deep')
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5000 entries, 0 to 4999
Data columns (total 8 columns):
int64              5000 non-null int64
float64            5000 non-null float64
datetime64[ns]     5000 non-null datetime64[ns]
timedelta64[ns]    5000 non-null timedelta64[ns]
complex128         5000 non-null complex128
object             5000 non-null object
bool               5000 non-null bool
categorical        5000 non-null category
dtypes: bool(1), category(1), complex128(1), datetime64[ns](1), float64(1), int64(1), object(1), timedelta64[ns](1)
memory usage: 425.6 KB

डिफ़ॉल्ट रूप से डिस्प्ले विकल्प True पर सेट होता है, लेकिन df.info() लागू करते समय memory_usage पास करके स्पष्ट रूप से ओवरराइड किया जा सकता है।

प्रत्येक स्तंभ का मेमोरी उपयोग memory_usage() विधि को कॉल करके पाया जा सकता है। यह बाइट्स में दिखाए गए प्रत्येक कॉलम के कॉलम नामों और मेमोरी उपयोग द्वारा दर्शाए गए सूचकांक के साथ एक Series देता है। ऊपर दिए गए DataFrame लिए, प्रत्येक कॉलम की मेमोरी उपयोग और memory_usage विधि के साथ कुल मेमोरी उपयोग पाया जा सकता है:

In [8]: df.memory_usage()
Out[8]: 
Index                 80
int64              40000
float64            40000
datetime64[ns]     40000
timedelta64[ns]    40000
complex128         80000
object             40000
bool                5000
categorical        10920
dtype: int64

# total memory usage of dataframe
In [9]: df.memory_usage().sum()