python - read - ImportError: ningún módulo llamado ''pandas.indexes''
python pandas save to csv (4)
Aquí está la solución sin actualizar pandas o lo que sea que estés usando.
Si estás usando python2
import pickle
with open(''filename.pkl'', ''rb'') as fo:
dict = pickle.load(fo, encoding=''latin1’)
Si estás usando python3
import _pickle as cPickle
with open(''filename.pkl'', ''rb'') as fo:
dict = cPickle.load(fo, encoding=''latin1’)
La importación de pandas no generó el error, sino que trata de leer un marco de datos de pandas seleccionado como tal:
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'')
El rastreo es de 165 líneas con tres excepciones concurrentes (lo que sea que signifique). ¿ read_pickle
no es compatible con pandas versión 17.1 que estoy ejecutando? ¿Cómo puedo deseleccionar mi marco de datos para su uso?
A continuación se muestra una copia del rastreo:
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''
También intenté cargar el archivo pickle directamente desde pickle:
via_pickle = pickle.load( open( ''null_report.pickle'', "rb" ) )
y consiguió el mismo 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''
Guardar y cargar en diferentes versiones de pandas
usando pickle
menudo no funciona. En su lugar, utilice pandas.HDFStore
.
Cuando necesitaba actualizar pandas pero también necesitaba algunos datos guardados con pickle en versiones anteriores, volví y volví a guardar esos datos en formato HDF, cuando nada más funcionaría. Ya no hay problemas.
Funciona para cualquier tipo de estructura de datos de pandas que parezca, ¡incluso marcos de datos multi-indexados! En resumen, si el decapado falla después de una actualización de la versión, intente HDFStore; Es más confiable (y más eficiente!).
Tuve este error cuando creé un archivo pkl con python 2.7 y estaba intentando leerlo con python 3.6. Lo hice:
pd.read_pickle(''foo.pkl'')
Y funcionó
Tuve este problema al intentar abrir un marco de datos en escabeche hecho con pandas 0.18.1 usando pandas 0.17.1. Si estás usando pip, actualiza pandas con:
pip install --upgrade pandas
Si está utilizando una biblioteca como anaconda, use:
conda upgrade pandas
Si necesita tener ambas versiones de pandas en su máquina, considere usar virtualenv