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

我目前正在尝试使用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

进口系统; 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 --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' object has no attribute 'reader'和Importing installed package from script raises "AttributeError: module has no attribute" or "ImportError: cannot import name"是一个常见问题。

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

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

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

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

版本What's New0.21.1中显示的新功能
无法读取Azure Jupyter Notebook(Python 2和3)中的“ .parquet”文件 - python

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

版本0.21.10.22.0正式支持Python 2.7、3.5和3.6,如下所示。
无法读取Azure Jupyter Notebook(Python 2和3)中的“ .parquet”文件 - python

并且PyPI page for pandas还需要如下所示的Python版本。

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

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

如何在Jupyter笔记本中导入CPLEX? - python

我是Python和Jupyter笔记本的新手。我正在使用Windows 10。我已经安装了Anaconda3,并尝试在Jupyter笔记本环境中导入cplex。但是我只有以下错误:  ModuleNotFoundError:没有名为“ cplex”的模块我确实找到了一些解决方案,但是都没有解决问题。我认为我必须设置路径或安装一些文件才能在Jupyetr笔记本…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

python-docx应该在空单元格已满时返回空单元格 - python

我试图遍历文档中的所有表并从中提取文本。作为中间步骤,我只是尝试将文本打印到控制台。我在类似的帖子中已经看过scanny提供的其他代码,但是由于某种原因,它并没有提供我正在解析的文档的预期输出可以在https://www.ontario.ca/laws/regulation/140300中找到该文档from docx import Document from…

Python:集群作业管理 - python

我在具有两个阶段的计算群集(Slurm)上运行python脚本,它们是顺序的。我编写了两个python脚本,一个用于阶段1,另一个用于阶段2。每天早上,我检查所有第1阶段的工作是否都以视觉方式完成。只有这样,我才开始第二阶段。通过在单个python脚本中组合所有阶段和作业管理,是否有一种更优雅/自动化的方法?我如何知道工作是否完成?工作流程类似于以下内容:w…