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'
Pandas are not a built-in module (it doesn't come with the default python installation) in Python, you need to install it explicitly using the pip installer and then use it. If you are getting an error installing pip checkout pip: command not found to resolve the issue.
The Python "ModuleNotFoundError: No module named 'pandas'" occurs when we forget to install the pandas module before importing it or install it in an incorrect environment. To solve the error, install the module by running the pip install pandas command.
In most cases this error in Python generally raised: You haven't installed Pandas explicitly with pip install pandas. You may have different Python versions on your computer and Pandas is not installed for the particular version you're using.
Since pandas doesn't come installed automatically with Python, you'll need to install it yourself. The easiest way to do so is by using pip, which is a package manager for Python. In most cases, this will fix the error.
I had this error when I created a pkl file with python 2.7 and was trying to read it with python 3.6 I did:
pd.read_pickle('foo.pkl')
and it worked
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With