繁体   English   中英

无法读取Azure Jupyter Notebook(Python 2和3)中的“ .parquet”文件

[英]Cannot read “.parquet” files in Azure Jupyter Notebook (Python 2 and 3)

我目前正在尝试使用Azure Jupyter Notebook打开镶木地板文件。 我已经尝试了两个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中管理程序包的方式。 更新软件包(此处为Pandas),是否应该导致可用的最新版本的更新,不是吗?

我试图在我的Azure Jupyter Notebook上重现您的问题,但是失败了。 如果不执行两个步骤,对我来说就没有任何问题!pip install -I Cython==0.28.5 !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) import sys; print(sys.path)检查路径的顺序在这些路径下是否有相同的命名文件或目录。

如果有一个名为pandas文件或目录,则只需重命名它并重新启动ipynb即可重新运行。 这是一个常见问题,您可以引用这些SO线程AttributeError:'module'对象没有属性'reader',并且从脚本导入已安装的软件包会引发“ AttributeError:模块没有属性”或“ ImportError:无法导入名称”

在其他情况下,请更新您的信息以了解更多详细信息。


最新的pandas版本应为0.23.4 ,而不是0.24.0

我试图通过在0.19.20.23.3的不同版本的文档中搜索函数名称read_parquet来找出支持read_parquet功能的pandas的最早版本。 然后,我发现pandas支持read_parquet功能后的版本0.21.1 ,如下图所示。

在此处输入图片说明

在显示的新功能, What's New的版本0.21.1 在此处输入图片说明

根据您的EDIT 2描述,您似乎在Azure Jupyter Notebook中使用Python 3.4。 并非所有的pandas版本都支持Python 3.4版本。

0.21.10.22.0版本正式支持Python 2.7、3.5和3.6,如下所示。 在此处输入图片说明

pandasPyPI页面也需要以下Python版本。

在此处输入图片说明

因此,您可以尝试在当前的Python 3.4笔记本中安装pandas版本0.21.10.22.0 如果失败,请在Python 2.7>=3.5创建一个新笔记本,以安装>= 0.21.1 pandas版本以使用功能read_parquet

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM