Не удается прочитать файлы ".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
  1. импорт системы; 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 будь прав.

  1. Бежать print(pandas.__dict__) проверить, есть ли описание read_parquet функция на выходе.
  2. Бежать print(pandas.__file__) чтобы проверить, импортировали ли вы другой pandas пакет.
  3. Бежать 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,