pandas 0.23 - 33. Developer

Developer




pandas

Developer

यह खंड पांडा के डाउनस्ट्रीम अनुप्रयोगों पर केंद्रित होगा।

Apache Parquet प्रारूप में पंडों DataFrame वस्तुओं को संग्रहीत करना

Apache Parquet प्रारूप फ़ाइल और स्तंभ स्तर पर कुंजी-मान मेटाडेटा प्रदान करता है, जो Parquet फ़ाइल के पाद लेख में संग्रहीत होता है:

5: optional list<KeyValue> key_value_metadata

जहां KeyValue है

struct KeyValue {
  1: required string key
  2: optional string value
}

ताकि एक pandas.DataFrame को ईमानदारी से खंगाला जा सके, हम FileMetaData में एक pandas मेटाडेटा कुंजी को इस FileMetaData संग्रहीत करते हैं:

{'index_columns': ['__index_level_0__', '__index_level_1__', ...],
 'column_indexes': [<ci0>, <ci1>, ..., <ciN>],
 'columns': [<c0>, <c1>, ...],
 'pandas_version': $VERSION}

यहाँ, <c0> / <ci0> और इसके आगे प्रत्येक स्तंभ के लिए मेटाडेटा वाले शब्दकोष हैं। इसका JSON फॉर्म है:

{'name': column_name,
 'pandas_type': pandas_type,
 'numpy_type': numpy_type,
 'metadata': metadata}

pandas_type स्तंभ का तार्किक प्रकार है, और इनमें से एक है:

  • बूलियन: 'bool'
  • इंटेगर: 'int8', 'int16', 'int32', 'int64', 'uint8', 'uint16', 'uint32', 'uint64'
  • फ्लोट्स: 'float16', 'float32', 'float64'
  • दिनांक और समय के प्रकार: 'datetime', 'datetimetz' , 'timedelta'
  • स्ट्रिंग: 'unicode', 'bytes'
  • श्रेणीबद्ध: 'categorical'
  • अन्य पायथन ऑब्जेक्ट: 'object'

numpy_type स्तंभ का भौतिक संग्रहण प्रकार है, जो डेटा को रखने वाले अंतर्निहित NumPy सरणी के लिए str(dtype) का परिणाम है। तो datetimetz यह datetime64[ns] और श्रेणीबद्ध के लिए, यह समर्थित पूर्णांक श्रेणीगत प्रकारों में से कोई भी हो सकता है।

metadata फ़ील्ड इसके अलावा None नहीं है:

  • datetimetz : {'timezone': zone, 'unit': 'ns'} , उदा {'timezone', 'America/New_York', 'unit': 'ns'}'unit' वैकल्पिक है, और यदि छोड़ दिया जाए तो इसे नैनोसेकंड माना जाता है।
  • {'num_categories': K, 'ordered': is_ordered, 'type': $TYPE} : {'num_categories': K, 'ordered': is_ordered, 'type': $TYPE}
    • यहाँ 'type' वैकल्पिक है, और यहाँ एक नेस्टेड पांडा प्रकार विनिर्देश हो सकता है (लेकिन श्रेणीबद्ध नहीं)
  • unicode : {'encoding': encoding}
    • एन्कोडिंग वैकल्पिक है, और यदि मौजूद नहीं है तो UTF-8 है
  • object : {'encoding': encoding} । वस्तुओं को क्रमबद्ध और BYTE_ARRAY लकड़ी की छत कॉलम में संग्रहीत किया जा सकता है। एन्कोडिंग इनमें से एक हो सकती है:
    • 'pickle'
    • 'msgpack'
    • 'bson'
    • 'json'
  • timedelta : {'unit': 'ns'}'unit' वैकल्पिक है, और यदि छोड़ दिया जाए तो इसे नैनोसेकंड माना जाता है। यह मेटाडेटा पूरी तरह से वैकल्पिक है

इनके अलावा अन्य प्रकारों के लिए, 'metadata' कुंजी को छोड़ा जा सकता है। यदि कुंजी मौजूद नहीं है तो कार्यान्वयन None मान सकता है।

पूरी तरह से गठित मेटाडेटा के एक उदाहरण के रूप में:

{'index_columns': ['__index_level_0__'],
 'column_indexes': [
     {'name': None,
      'pandas_type': 'string',
      'numpy_type': 'object',
      'metadata': None}
 ],
 'columns': [
     {'name': 'c0',
      'pandas_type': 'int8',
      'numpy_type': 'int8',
      'metadata': None},
     {'name': 'c1',
      'pandas_type': 'bytes',
      'numpy_type': 'object',
      'metadata': None},
     {'name': 'c2',
      'pandas_type': 'categorical',
      'numpy_type': 'int16',
      'metadata': {'num_categories': 1000, 'ordered': False}},
     {'name': 'c3',
      'pandas_type': 'datetimetz',
      'numpy_type': 'datetime64[ns]',
      'metadata': {'timezone': 'America/Los_Angeles'}},
     {'name': 'c4',
      'pandas_type': 'object',
      'numpy_type': 'object',
      'metadata': {'encoding': 'pickle'}},
     {'name': '__index_level_0__',
      'pandas_type': 'int64',
      'numpy_type': 'int64',
      'metadata': None}
 ],
 'pandas_version': '0.20.0'}