Не удается прочитать файлы ".parquet" в записной книжке Azure Jupyter (Python 2 и 3)
В настоящее время я пытаюсь открыть файлы паркета с помощью блокнота Azure Jupyter. Я пробовал оба ядра Python (2 и 3). После установки pyarrow я могу импортировать модуль, только если ядро Python 2 (не работает с Python 3)
Вот что я сделал до сих пор (для ясности, я не упоминаю все мои различные попытки, такие как использование conda вместо pip, поскольку это также не удалось):
!pip install --upgrade pip
!pip install -I Cython==0.28.5
!pip install pyarrow
import pandas
import pyarrow
import pyarrow.parquet
#so far, so good
filePath_parquet = "foo.parquet"
table_parquet_raw = pandas.read_parquet(filePath_parquet, engine='pyarrow')
Это хорошо работает, если я делаю это в автономном режиме (используя Spyder, Python v.3.7.0). Но это не удается с помощью записной книжки Azure.
AttributeErrorTraceback (most recent call last)
<ipython-input-54-2739da3f2d20> in <module>()
6
7 #table_parquet_raw = pd.read_parquet(filePath_parquet, engine='pyarrow')
----> 8 table_parquet_raw = pandas.read_parquet(filePath_parquet, engine='pyarrow')
AttributeError: 'module' object has no attribute 'read_parquet'
Любая идея, пожалуйста?
Заранее спасибо!
РЕДАКТИРОВАТЬ:
Большое спасибо за ваш ответ Питер Пэн! Я напечатал эти заявления, вот что я получил:
1.
print(pandas.__dict__)
=> read_parquet не появляется
2.
print(pandas.__file__)
=> Я получаю:
/home/nbuser/anaconda3_23/lib/python3.4/site-packages/pandas/__init__.py
импорт системы; print(sys.path) => я получаю:
['', '/home/nbuser/anaconda3_23/lib/python34.zip', '/home/nbuser/anaconda3_23/lib/python3.4', '/home/nbuser/anaconda3_23/lib/python3.4/plat-linux', '/home/nbuser/anaconda3_23/lib/python3.4/lib-dynload', '/home/nbuser/.local/lib/python3.4/site-packages', '/home/nbuser/anaconda3_23/lib/python3.4/site-packages', '/home/nbuser/anaconda3_23/lib/python3.4/site-packages/Sphinx-1.3.1-py3.4.egg', '/home/nbuser/anaconda3_23/lib/python3.4/site-packages/setuptools-27.2.0-py3.4.egg', '/home/nbuser/anaconda3_23/lib/python3.4/site-packages/IPython/extensions', '/home/nbuser/.ipython']
У вас есть идеи, пожалуйста?
РЕДАКТИРОВАТЬ 2:
Уважаемый @PeterPan, я напечатал оба !conda update conda
а также !conda update pandas
: при проверке версии Pandas (pandas.__version__
), это все еще 0.19.2
,
Я также пытался с !conda update pandas -y -f
, возвращает:
`Извлечение метаданных пакета............ Определение спецификации пакета:.
План пакета для установки в среде /home/nbuser/anaconda3_23:
Следующие новые пакеты будут установлены:
pandas: 0.19.2-np111py34_1`
При наборе текста:!pip install --upgrade pandas
Я получил:
Requirement already up-to-date: pandas in /home/nbuser/anaconda3_23/lib/python3.4/site-packages
Requirement already up-to-date: pytz>=2011k in /home/nbuser/anaconda3_23/lib/python3.4/site-packages (from pandas)
Requirement already up-to-date: numpy>=1.9.0 in /home/nbuser/anaconda3_23/lib/python3.4/site-packages (from pandas)
Requirement already up-to-date: python-dateutil>=2 in /home/nbuser/anaconda3_23/lib/python3.4/site-packages (from pandas)
Requirement already up-to-date: six>=1.5 in /home/nbuser/anaconda3_23/lib/python3.4/site-packages (from python-dateutil>=2->pandas)
Наконец, при наборе:
!pip install --upgrade pandas==0.24.0
Я получил:
Collecting pandas==0.24.0
Could not find a version that satisfies the requirement pandas==0.24.0 (from versions: 0.1, 0.2b0, 0.2b1, 0.2, 0.3.0b0, 0.3.0b2, 0.3.0, 0.4.0, 0.4.1, 0.4.2, 0.4.3, 0.5.0, 0.6.0, 0.6.1, 0.7.0rc1, 0.7.0, 0.7.1, 0.7.2, 0.7.3, 0.8.0rc1, 0.8.0rc2, 0.8.0, 0.8.1, 0.9.0, 0.9.1, 0.10.0, 0.10.1, 0.11.0, 0.12.0, 0.13.0, 0.13.1, 0.14.0, 0.14.1, 0.15.0, 0.15.1, 0.15.2, 0.16.0, 0.16.1, 0.16.2, 0.17.0, 0.17.1, 0.18.0, 0.18.1, 0.19.0rc1, 0.19.0, 0.19.1, 0.19.2, 0.20.0rc1, 0.20.0, 0.20.1, 0.20.2, 0.20.3, 0.21.0rc1, 0.21.0, 0.21.1, 0.22.0)
No matching distribution found for pandas==0.24.0
Поэтому я предполагаю, что проблема заключается в способе управления пакетами в Azure. Обновление пакета (здесь Панды) должно привести к обновлению до последней доступной версии, не так ли?
1 ответ
Я пытался воспроизвести вашу проблему на своем ноутбуке Azure Jupyter, но не смог. Для меня не было никакой проблемы без твоих двух шагов !pip install --upgrade pip
& !pip install -I Cython==0.28.5
который я думаю не имеет значения.
Пожалуйста, запустите несколько кодов ниже, чтобы проверить ваш пакет импорта pandas
будь прав.
- Бежать
print(pandas.__dict__)
проверить, есть ли описаниеread_parquet
функция на выходе. - Бежать
print(pandas.__file__)
чтобы проверить, импортировали ли вы другойpandas
пакет. - Бежать
import sys; print(sys.path)
проверить порядок путей, есть ли файл или каталог с таким же именем под этими путями.
Если есть тот же файл или каталог с именем pandas
, вам просто нужно переименовать его и перезапустить ipynb
перезапустить. Это общая проблема, к которой можно обратиться в этих потоках SO. AttributeError: у объекта 'module' нет атрибута 'reader', а при импорте установленного пакета из сценария возникает "AttributeError: module не имеет атрибута" или "ImportError: не удается импортировать имя".
В других случаях, пожалуйста, обновите ваш пост для более подробной информации, чтобы сообщить мне.
Последний pandas
версия должна быть 0.23.4
не 0.24.0
,
Я пытался выяснить самую раннюю версию pandas
которые поддерживают read_parquet
функция через поиск по названию функции read_parquet
в документах другой версии от 0.19.2
в 0.23.3
, Затем я нашел pandas
опоры read_parquet
особенность после версии 0.21.1
, как показано ниже.
Новые функции, показанные в What's New
версии 0.21.1
В соответствии с вашими EDIT 2
описание, похоже, что вы используете Python 3.4 в Azure Jupyter Notebook. Не все pandas
версии поддерживают версию Python 3.4.
Версии 0.21.1
& 0.22.0
официально поддерживаем Python 2.7,3.5 и 3.6, как показано ниже.
И страница PyPI для pandas
также требует версию Python, как показано ниже.
Таким образом, вы можете попробовать установить pandas
версии 0.21.1
& 0.22.0
в текущей записной книжке Python 3.4. если не удалось, пожалуйста, создайте новую записную книжку в Python 2.7
или же >=3.5
установить pandas
версия >= 0.21.1
использовать функцию read_parquet
,