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

标签 python azure jupyter-notebook azure-machine-learning-service

我目前正在尝试使用 Azure Jupyter Notebooks 打开 parquet 文件。我已经尝试过两个 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 Notebook 时失败。

 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

    我得到:

    要求已是最新的:/home/nbuser/anaconda3_23/lib/python3.4/site-packages 中的 pandas 要求已经是最新的:/home/nbuser/anaconda3_23/lib/python3.4/site-packages 中的 pytz>=2011k (来自 pandas) 要求已经是最新的:/home/nbuser/anaconda3_23/lib/python3.4/site-packages 中的 numpy>=1.9.0 (来自 pandas) 要求已经是最新的:/home/nbuser/anaconda3_23/lib/python3.4/site-packages 中的 python-dateutil>=2 (来自 pandas) 要求已是最新的:/home/nbuser/anaconda3_23/lib/python3.4/site-packages 中的 6>=1.5(来自 python-dateutil>=2->pandas)

    最后,输入时:

    !pip install --upgrade pandas==0.24.0

    我得到:

    收集 pandas==0.24.0 找不到满足 pandas==0.24.0 要求的版本(来自版本: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) 找不到 pandas==0.24.0 的匹配发行版

    因此,我的猜测是问题出在 Azure 中管理包的方式上。更新软件包(此处为 Pandas)应该会更新到可用的最新版本,不是吗?

    最佳答案

    我尝试在我的 Azure Jupyter Notebook 上重现您的问题,但失败了。如果不执行您的两个步骤 !pip install --upgrade pip!pip install -I Cython==0.28.5 我认为这并不重要,对我来说没有任何问题.

    请运行以下代码检查您的导入包pandas是否正确。

    1. 运行print(pandas.__dict__)检查输出中是否有read_parquet函数的描述。
    2. 运行 print(pandas.__file__) 以检查您是否导入了不同的 pandas 包。
    3. 运行导入系统; 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

    我尝试通过在不同版本的文档中搜索函数名read_parquet来找到最早支持read_parquet功能的pandas版本版本从 0.19.20.23.3。然后,我发现pandas0.21.1版本之后支持了read_parquet功能,如下。

    enter image description here

    What's New中显示的新功能版本 0.21.1 enter image description here

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

    版本 0.21.1 & 0.22.0正式支持Python 2.7、3.5、3.6,如下。 enter image description here

    还有PyPI page for pandas还需要如下的Python版本。

    enter image description here

    所以你可以尝试在当前Python 3.4的笔记本中安装pandas版本0.21.10.22.0。如果失败,请使用 Python 2.7>=3.5 创建一个新笔记本来安装 pandas 版本 >= 0.21.1 使用函数 read_parquet

    关于python - 无法读取 Azure Jupyter Notebook 中的 ".parquet"文件(Python 2 和 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53872444/

    相关文章:

    python - 为什么 python cryptodome 使用 latin-1 来编码和解码字符串?

    python - 日志记录关闭 flask 终端输出

    python - 在 Python 中动态分配函数实现

    javascript - Sencha touch 2 azure如何向invokeApi添加 header 身份验证?

    python - 使用 Colab 访问本地文件夹

    python - 如何避免输出到 jupyter notebook 中的可滚动框架?

    jupyter-notebook - 在 Google Colab 中导入 .py 文件

    python - 重新启动游戏(重置滚动屏幕)

    c# - Azure 表存储 - 无法建立连接,因为目标计算机主动拒绝它 127.0.0.1 :10002

    azure - 为什么 CloudConfigurationManager 使用我的 Cloud.cscfg 而不是 Local.cscfg?