Не удается прочитать файлы «.parquet» в записной книжке Azure Jupyter (Python 2 и 3) - PullRequest
0 голосов
/ 20 декабря 2018

В настоящее время я пытаюсь открыть файлы паркета с помощью блокнота 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

import sys;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 Ответ

0 голосов
/ 25 декабря 2018

Я попытался воспроизвести вашу проблему на моем ноутбуке Azure Jupyter, но не удалось.Для меня не было никаких проблем, если бы вы не выполнили два шага !pip install --upgrade pip & !pip install -I Cython==0.28.5, которые, я думаю, не имеют значения.

Пожалуйста, запустите несколько кодов ниже, чтобы проверить ваш пакет импорта pandas, будь он верным.

  1. Запустите print(pandas.__dict__), чтобы проверить, есть ли в выводе описание функции read_parquet.
  2. Выполните print(pandas.__file__), чтобы проверить, импортирован ли другой пакет pandas.
  3. Запустите import sys; print(sys.path), чтобы проверить порядок путей, существует ли файл или каталог с таким же именем под этими путями.

Если есть тот же файл или каталог с именем pandas, выпросто нужно переименовать его и перезапустить ipynb для повторного запуска.Это общая проблема, к которой вы можете обратиться к этим потокам SO AttributeError: у объекта 'module' нет атрибута 'reader' и При импорте установленного пакета из скрипта возникает «AttributeError: у модуля нет атрибута» или «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, как показано ниже.

enter image description here

Новые функции, показанные в What's New версии 0.21.1 enter image description here

Согласно вашему описанию 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, как показано ниже,enter image description here

А для страницы PyPI для pandas также требуется версия Python, как показано ниже.

enter image description here

Таким образом, вы можете попробовать установить pandas версии 0.21.1 & 0.22.0 в текущую записную книжку Python 3.4.в случае неудачи создайте новый блокнот на Python 2.7 или >=3.5 для установки pandas версии >= 0.21.1 для использования функции read_parquet.

...