Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Data Science by (50.2k points)

Importing pandas didn't throw the error, but rather trying to read a picked pandas dataframe as such:

import numpy as np

import pandas as pd

import matplotlib

import seaborn as sns

sns.set(style="white")

control_data = pd.read_pickle('null_report.pickle')

test_data = pd.read_pickle('test_report.pickle')

The traceback is 165 lines with three concurrent exceptions (whatever that means). Is read_pickle not compatible with pandas version 17.1 I'm running? How do I unpickle my dataframe for use?

Below is a copy of the traceback:

ImportError                               Traceback (most recent call last)

C:\Users\test\Anaconda3\lib\site-packages\pandas\io\pickle.py in try_read(path, encoding)

     45             with open(path, 'rb') as fh:

---> 46                 return pkl.load(fh)

     47         except (Exception) as e:

ImportError: No module named 'pandas.indexes'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)

C:\Users\test\Anaconda3\lib\site-packages\pandas\io\pickle.py in try_read(path, encoding)

     51                 with open(path, 'rb') as fh:

---> 52                     return pc.load(fh, encoding=encoding, compat=False)

     53 

C:\Users\test\Anaconda3\lib\site-packages\pandas\compat\pickle_compat.py in load(fh, encoding, compat, is_verbose)

    115 

--> 116         return up.load()

    117     except:

C:\Users\test\Anaconda3\lib\pickle.py in load(self)

   1038                 assert isinstance(key, bytes_types)

-> 1039                 dispatch[key[0]](self)

   1040         except _Stop as stopinst:

C:\Users\test\Anaconda3\lib\pickle.py in load_stack_global(self)

   1342             raise UnpicklingError("STACK_GLOBAL requires str")

-> 1343         self.append(self.find_class(module, name))

   1344     dispatch[STACK_GLOBAL[0]] = load_stack_global

C:\Users\test\Anaconda3\lib\pickle.py in find_class(self, module, name)

   1383                 module = _compat_pickle.IMPORT_MAPPING[module]

-> 1384         __import__(module, level=0)

   1385         if self.proto >= 4:

ImportError: No module named 'pandas.indexes'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)

C:\Users\test\Anaconda3\lib\site-packages\pandas\io\pickle.py in read_pickle(path)

     59     try:

---> 60         return try_read(path)

     61     except:

C:\Users\test\Anaconda3\lib\site-packages\pandas\io\pickle.py in try_read(path, encoding)

     56                 with open(path, 'rb') as fh:

---> 57                     return pc.load(fh, encoding=encoding, compat=True)

     58 

C:\Users\test\Anaconda3\lib\site-packages\pandas\compat\pickle_compat.py in load(fh, encoding, compat, is_verbose)

    115 

--> 116         return up.load()

    117     except:

C:\Users\test\Anaconda3\lib\pickle.py in load(self)

   1038                 assert isinstance(key, bytes_types)

-> 1039                 dispatch[key[0]](self)

   1040         except _Stop as stopinst:

C:\Users\test\Anaconda3\lib\pickle.py in load_stack_global(self)

   1342             raise UnpicklingError("STACK_GLOBAL requires str")

-> 1343         self.append(self.find_class(module, name))

   1344     dispatch[STACK_GLOBAL[0]] = load_stack_global

C:\Users\test\Anaconda3\lib\pickle.py in find_class(self, module, name)

   1383                 module = _compat_pickle.IMPORT_MAPPING[module]

-> 1384         __import__(module, level=0)

   1385         if self.proto >= 4:

ImportError: No module named 'pandas.indexes'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)

C:\Users\test\Anaconda3\lib\site-packages\pandas\io\pickle.py in try_read(path, encoding)

     45             with open(path, 'rb') as fh:

---> 46                 return pkl.load(fh)

     47         except (Exception) as e:

ImportError: No module named 'pandas.indexes'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)

C:\Users\test\Anaconda3\lib\site-packages\pandas\io\pickle.py in try_read(path, encoding)

     51                 with open(path, 'rb') as fh:

---> 52                     return pc.load(fh, encoding=encoding, compat=False)

     53 

C:\Users\test\Anaconda3\lib\site-packages\pandas\compat\pickle_compat.py in load(fh, encoding, compat, is_verbose)

    115 

--> 116         return up.load()

    117     except:

C:\Users\test\Anaconda3\lib\pickle.py in load(self)

   1038                 assert isinstance(key, bytes_types)

-> 1039                 dispatch[key[0]](self)

   1040         except _Stop as stopinst:

C:\Users\test\Anaconda3\lib\pickle.py in load_stack_global(self)

   1342             raise UnpicklingError("STACK_GLOBAL requires str")

-> 1343         self.append(self.find_class(module, name))

   1344     dispatch[STACK_GLOBAL[0]] = load_stack_global

C:\Users\test\Anaconda3\lib\pickle.py in find_class(self, module, name)

   1383                 module = _compat_pickle.IMPORT_MAPPING[module]

-> 1384         __import__(module, level=0)

   1385         if self.proto >= 4:

ImportError: No module named 'pandas.indexes'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)

<ipython-input-17-3b05fe7d20a4> in <module>()

      3 # test_data = np.genfromtxt(fh, usecols=2)

      4 

----> 5 control_data = pd.read_pickle('null_report.pickle')

      6 test_data = pd.read_pickle('test_report.pickle')

      7 

C:\Users\test\Anaconda3\lib\site-packages\pandas\io\pickle.py in read_pickle(path)

     61     except:

     62         if PY3:

---> 63             return try_read(path, encoding='latin1')

     64         raise

C:\Users\test\Anaconda3\lib\site-packages\pandas\io\pickle.py in try_read(path, encoding)

     55             except:

     56                 with open(path, 'rb') as fh:

---> 57                     return pc.load(fh, encoding=encoding, compat=True)

     58 

     59     try:

C:\Users\test\Anaconda3\lib\site-packages\pandas\compat\pickle_compat.py in load(fh, encoding, compat, is_verbose)

    114         up.is_verbose = is_verbose

    115 

--> 116         return up.load()

    117     except:

    118         raise

C:\Users\test\Anaconda3\lib\pickle.py in load(self)

   1037                     raise EOFError

   1038                 assert isinstance(key, bytes_types)

-> 1039                 dispatch[key[0]](self)

   1040         except _Stop as stopinst:

   1041             return stopinst.value

C:\Users\test\Anaconda3\lib\pickle.py in load_stack_global(self)

   1341         if type(name) is not str or type(module) is not str:

   1342             raise UnpicklingError("STACK_GLOBAL requires str")

-> 1343         self.append(self.find_class(module, name))

   1344     dispatch[STACK_GLOBAL[0]] = load_stack_global

   1345 

C:\Users\test\Anaconda3\lib\pickle.py in find_class(self, module, name)

   1382             elif module in _compat_pickle.IMPORT_MAPPING:

   1383                 module = _compat_pickle.IMPORT_MAPPING[module]

-> 1384         __import__(module, level=0)

   1385         if self.proto >= 4:

   1386             return _getattribute(sys.modules[module], name)[0]

ImportError: No module named 'pandas.indexes'

I also tried loading the pickle file from pickle directly:

via_pickle = pickle.load( open( 'null_report.pickle', "rb" ) )

and got the same error:

---------------------------------------------------------------------------

ImportError                               Traceback (most recent call last)

<ipython-input-23-ba2e3adae1c4> in <module>()

      1 

----> 2 via_pickle = pickle.load( open( 'null_report.pickle', "rb" ) )

      3 

      4 # control_data = pd.read_pickle('null_report.pickle')

      5 # test_data = pd.read_pickle('test_report.pickle')

ImportError: No module named 'pandas.indexes'

1 Answer

0 votes
by (108k points)

I too had this error when I created a pkl file with python 2.7 and was trying to read it with python 3.6. What I did is simply write the following code:

pd.read_pickle('foo.pkl')

and it worked.

Related questions

0 votes
1 answer
0 votes
1 answer
0 votes
1 answer
0 votes
1 answer
0 votes
1 answer

Browse Categories

...