无法读取 Azure Jupyter Notebook 中的“.parquet”文件(Python 2 和 3)
Cannot read ".parquet" files in Azure Jupyter Notebook (Python 2 and 3)
我目前正在尝试使用 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
导入系统;打印(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
,它 returns:
`正在获取包元数据......................
解决包规范:.
环境安装包计划/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 线程 and .
在其他情况下,请更新您的 post 以获取更多详细信息让我知道。
最新的 pandas
版本应该是 0.23.4
,而不是 0.24.0
。
我试图通过在0.19.2
不同版本的文档中搜索函数名称read_parquet
来找出支持read_parquet
特性的最早版本pandas
至 0.23.3
。然后,我发现pandas
在版本0.21.1
之后支持read_parquet
特性,如下。
版本0.21.1
的What's New
中显示的新功能
根据您的 EDIT 2
描述,您似乎在 Azure Jupyter Notebook 中使用 Python 3.4。并非所有 pandas
版本都支持 Python 3.4 版本。
版本0.21.1
& 0.22.0
正式支持Python2.7、3.5、3.6,如下。
并且 PyPI page for pandas
还需要如下 Python 版本。
所以您可以尝试在Python 3.4的当前笔记本中安装pandas
版本0.21.1
& 0.22.0
。如果失败,请在Python 2.7
或>=3.5
中创建一个新笔记本安装pandas
版本>= 0.21.1
以使用功能read_parquet
.
我目前正在尝试使用 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
导入系统;打印(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
,它 returns:
`正在获取包元数据......................
解决包规范:.
环境安装包计划/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 线程
在其他情况下,请更新您的 post 以获取更多详细信息让我知道。
最新的 pandas
版本应该是 0.23.4
,而不是 0.24.0
。
我试图通过在0.19.2
不同版本的文档中搜索函数名称read_parquet
来找出支持read_parquet
特性的最早版本pandas
至 0.23.3
。然后,我发现pandas
在版本0.21.1
之后支持read_parquet
特性,如下。
版本0.21.1
的What's New
中显示的新功能
根据您的 EDIT 2
描述,您似乎在 Azure Jupyter Notebook 中使用 Python 3.4。并非所有 pandas
版本都支持 Python 3.4 版本。
版本0.21.1
& 0.22.0
正式支持Python2.7、3.5、3.6,如下。
并且 PyPI page for pandas
还需要如下 Python 版本。
所以您可以尝试在Python 3.4的当前笔记本中安装pandas
版本0.21.1
& 0.22.0
。如果失败,请在Python 2.7
或>=3.5
中创建一个新笔记本安装pandas
版本>= 0.21.1
以使用功能read_parquet
.