Pandas: ValueError: não é possível definir a sinalização WRITEABLE como True desta matriz

Criado em 19 jan. 2019  ·  16Comentários  ·  Fonte: pandas-dev/pandas

precisará reverter o decorador xfail em: https://github.com/pandas-dev/pandas/pull/25517 quando isso for corrigido

Amostra de código, um exemplo que pode ser copiado e colado, se possível

Estou recebendo de repente esse erro, alguma ideia?

# Your code here
 input_df = pd.read_hdf(path_or_buf='x.hdf5',key='/x',mode='r')

Descrição do Problema

Traceback:
` Traceback (most recent call last): File "...", line 115, in <module> input_df = pd.read_hdf(path_or_buf='x.hdf5',key='/x',mode='r') File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 394, in read_hdf return store.select(key, auto_close=auto_close, **kwargs) File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 741, in select return it.get_result() File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 1483, in get_result results = self.func(self.start, self.stop, where) File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 734, in func columns=columns) File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 2937, in read start=_start, stop=_stop) File "/usr/local/lib/python3.6/dist-packages/pandas/io/pytables.py", line 2489, in read_array ret = node[0][start:stop] File "/usr/local/lib/python3.6/dist-packages/tables/vlarray.py", line 681, in __getitem__ return self.read(start, stop, step)[0] File "/usr/local/lib/python3.6/dist-packages/tables/vlarray.py", line 821, in read listarr = self._read_array(start, stop, step) File "tables/hdf5extension.pyx", line 2155, in tables.hdf5extension.VLArray._read_array ValueError: cannot set WRITEABLE flag to True of this array

Bug Dependencies IO HDF5

Comentários muito úteis

Ao usar numpy = 1.16.0, recebo este erro, quando faço o downgrade numpy = 1.15.4, o problema desapareceu

Todos 16 comentários

@ macd2 : Obrigado por relatar isso! Um par de coisas:

  • Nesse caso, você poderia fornecer as informações de ambiente de pandas.show_versions ?
  • Supondo que você possa, você se importa em compartilhar o arquivo que dispara esse erro?

Estou recebendo de repente esse erro, alguma ideia?

  • Parece que isso estava funcionando para você nas versões anteriores de pandas . Quando este código funcionou pela última vez para você? Qual versão você está usando agora (relacionada à primeira pergunta)?

cc @jreback

Ao usar numpy = 1.16.0, recebo este erro, quando faço o downgrade numpy = 1.15.4, o problema desapareceu

@gfyoung Claro, aqui estão as versões:
`` `pandas.show_versions
'dependências':
{'pandas': '0.23.4', 'pytest': '3.4.0', 'pip': '18 .1 ',' setuptools ': '40 .6.3', 'Cython': '0.29.3', ' numpy ':' 1.16.0 ',' scipy ':' 1.2.0 ',' pyarrow ': Nenhum,' xarray ': Nenhum,' IPython ':' 6.5.0 ',' esfinge ': Nenhum,' patsy ' : '0.5.0', 'dateutil': '2.7.5', 'pytz': '2018.7', 'blosc': Nenhum, 'gargalo': '1.2.1', 'tabelas': '3.4.4' , 'numexpr': '2.6.8', 'pena': Nenhum, 'matplotlib': '3.0.2', 'openpyxl': '2.5.12', 'xlrd': '1.1.0', 'xlwt' : '1.3.0', 'xlsxwriter': '0.7.3', 'lxml': '4.1.1', 'bs4': '4.4.1', 'html5lib': '1.0b8', 'sqlalchemy': '1.2.15', 'pymysql': '0.9.2', 'psycopg2': '2.7.6.1 (dt dec pq3 ext lo64)', 'jinja2': '2.10', 's3fs': Nenhum, 'fastparquet' : Nenhum, 'pandas_gbq': Nenhum, 'pandas_datareader': '0.7.0'}

`` `

infelizmente não posso compartilhar o arquivo, mas acho que os problemas realmente vêm do numpy, como @vvvlc disse aqui é um outro problema no git:

https://github.com/nipy/nibabel/issues/697

PS: just downgraded to numpy=1.15.4 and indeed it resolves the issue

Os pandas podem fazer alguma coisa nesse meio tempo? Ou apenas espere pelo próximo
lançamento de pytables?

Na segunda-feira, 21 de janeiro de 2019 às 5h34 macd2 [email protected] escreveu:

@gfyoung https://github.com/gfyoung Claro, aqui estão as versões:

'dependências':
{'pandas': '0.23.4', 'pytest': '3.4.0', 'pip': '18 .1 ',' setuptools ': '40 .6.3', 'Cython': '0.29.3', ' numpy ':' 1.16.0 ',' scipy ':' 1.2.0 ',' pyarrow ': Nenhum,' xarray ': Nenhum,' IPython ':' 6.5.0 ',' esfinge ': Nenhum,' patsy ' : '0.5.0', 'dateutil': '2.7.5', 'pytz': '2018.7', 'blosc': Nenhum, 'gargalo': '1.2.1', 'tabelas': '3.4.4' , 'numexpr': '2.6.8', 'pena': Nenhum, 'matplotlib': '3.0.2', 'openpyxl': '2.5.12', 'xlrd': '1.1.0', 'xlwt' : '1.3.0', 'xlsxwriter': '0.7.3', 'lxml': '4.1.1', 'bs4': '4.4.1', 'html5lib': '1.0b8', 'sqlalchemy': '1.2.15', 'pymysql': '0.9.2', 'psycopg2': '2.7.6.1 (dt dec pq3 ext lo64)', 'jinja2': '2.10', 's3fs': Nenhum, 'fastparquet' : Nenhum, 'pandas_gbq': Nenhum, 'pandas_datareader': '0.7.0'}

infelizmente não posso compartilhar o arquivo, mas acho que os problemas realmente vêm
de numpy como @vvvlc https://github.com/vvvlc disse aqui é outro
problema em seu git:

nipy / nibabel # 697 https://github.com/nipy/nibabel/issues/697

-
Você está recebendo isto porque está inscrito neste tópico.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/pandas-dev/pandas/issues/24839#issuecomment-456043488 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/ABQHIqiIyuE-lmMlN2Ep-4htyMrTBdefks5vFaWqgaJpZM4aJQqs
.

Para mim, pip install numpy==1.15.4 também resolve esse problema.

@TomAugspurger esse problema surge no Google no topo (pelo menos para mim apareceu) e parece que a solução é simples, então talvez seja o suficiente apenas esperar por uma correção upstream. Muito bom que você perguntasse :)

pip3 install numpy==1.15.4 também resolvido para mim ..

No entanto, quando eu fiz downgrade do numpy, continuei recebendo este erro ImportError: No module named 'numpy.core._multiarray_umath' . Finalmente descobri que estava acontecendo porque armazenei o arquivo .h5 com o numpy 1.16 instalado e ele não reabriu com o numpy desatualizado ...

você pode evitar o erro:
ValueError: cannot set WRITEABLE flag to True of this array
passando format='table' para HDFStore.append ou HDFStore.put ao salvar dados com os pandas.

Isso provavelmente resolverá seu problema, testado com pandas 0.24 e numpy 1.16+

@ dev72
ok, mas e os arquivos HDF antigos que já existem?

Acho que a melhor maneira de ler arquivos hdf antigos é fazer o downgrade de sua versão do pandas + numpy, ler todos os dados e gravá-los em um novo armazenamento hdf com format='table' .
Em seguida, ele deve funcionar com as versões mais recentes de numpy e pandas.

@ dev72 sim, certo, estou no mesmo ponto, mas do que eu prefiro continuar com o downgrade até que seja devidamente corrigido

sim mesmo veio do google, obrigado por preencher este problema @ macd2

Portanto, após perseguir alguns problemas enviados em numpy e PyTables esta postagem de @avalentino sugere que esse problema foi corrigido em PyTables master, mas ainda não foi lançado.

https://github.com/PyTables/PyTables/issues/719#issuecomment -455612656

Alguém já tentou usar PyTables master w / numpy >= 0.16 ?

Eu tenho que trabalhar usando isso

HDF5_DIR={HDF5_PATH} pip install -e git+https://github.com/PyTables/PyTables@492ee2f#egg=tables
pip install numpy==1.16.0

Certifique-se de que cython e hdf5 estejam instalados.

Quais versões de pytables e numpy reproduzem isso? É específico para os dados?

com

pandas: 0.24.1
numpy: 1.16.2
tables: 3.4.4

isso não aumenta,

In [8]: df = pd.DataFrame({"A": [1, 2]})

In [9]: df.to_hdf('x.hdf5', key='x')

In [10]: pd.read_hdf('x.hdf5', 'x', mode='r')
Out[10]:
   A
0  1
1  2

FYI, pytables 3.5.0 e 3.5.1 estão no PyPI com a correção do lado pytables.

Atualizar para pytables 3.5.1 corrige o problema para mim também com o numpy 1.16.2

lidar com tf 2.0.0 precisa numpy (pelo menos) 1.16.0. rebaixar o numpy para a versão anterior não funcionará no tf 2.0.0

Esta página foi útil?
0 / 5 - 0 avaliações