如何在 Watson Studio 中使用 pandas read_csv 读取压缩的 csv 文件?
How to read a compressed csv-file with pandas read_csv in Watson Studio?
要在我的本地 Jupyter 笔记本中使用 pandas 读取 zip 压缩的 csv 文件,我执行:
import pandas as pd
pd.read_csv('csv_file.zip')
但是,在 Watson Studio 中,当我用云对象存储流对象替换文件名时,read_csv()
抛出异常。
这是我笔记本在 Watson Studio 中的第一个单元格:
import types
from ibm_botocore.client import Config
import ibm_boto3
def __iter__(self): return 0
client = ibm_boto3.client(service_name='s3', ibm_api_key_id='...',
ibm_auth_endpoint="...", config=Config(signature_version='oauth'),
endpoint_url='...')
body = client.get_object(Bucket='...', Key='csv_file.zip')['Body']
if not hasattr(body, "__iter__"):
body.__iter__ = types.MethodType( __iter__, body )
现在,当我尝试时:
import pandas as pd
df = pd.read_csv(body)
我得到:
'utf-8' codec can't decode byte 0xbb in position 0: invalid start byte
如果我指定 compression='zip'
:
import pandas as pd
df = pd.read_csv(body, compression='zip')
消息是:
'StreamingBody' object has no attribute 'seek'
有没有直接在 Watson Studio 中 read_csv()
压缩文件而无需显式编写解包代码的方法?
(pd.__version__
在两种环境下都是 0.21.0
。)
如果您的文件已添加为 Watson Studio 项目的数据资产,则以下过程有效。
为您的项目创建一个项目令牌。在您的项目中,转到 设置,导航到 访问令牌 部分并单击选项 新令牌(在 "Access role for project" 下拉菜单中 select "Viewer" 就足够了)。
现在你的笔记本在"edit"模式下,屏幕右上角出现三个点(⋮)您单击插入您的令牌。将使用您的项目凭据添加一个新的第一个单元格,现在您 运行 它。
现在您可以使用这样的代码:
file = project.get_file("my_compressed_csv.zip")
df = pd.read_csv(file, compression='zip')
在这种情况下,read_csv()
选项在 Watson Studio 中无法直接使用,因此您需要使用 project-lib
库。
要在我的本地 Jupyter 笔记本中使用 pandas 读取 zip 压缩的 csv 文件,我执行:
import pandas as pd
pd.read_csv('csv_file.zip')
但是,在 Watson Studio 中,当我用云对象存储流对象替换文件名时,read_csv()
抛出异常。
这是我笔记本在 Watson Studio 中的第一个单元格:
import types
from ibm_botocore.client import Config
import ibm_boto3
def __iter__(self): return 0
client = ibm_boto3.client(service_name='s3', ibm_api_key_id='...',
ibm_auth_endpoint="...", config=Config(signature_version='oauth'),
endpoint_url='...')
body = client.get_object(Bucket='...', Key='csv_file.zip')['Body']
if not hasattr(body, "__iter__"):
body.__iter__ = types.MethodType( __iter__, body )
现在,当我尝试时:
import pandas as pd
df = pd.read_csv(body)
我得到:
'utf-8' codec can't decode byte 0xbb in position 0: invalid start byte
如果我指定 compression='zip'
:
import pandas as pd
df = pd.read_csv(body, compression='zip')
消息是:
'StreamingBody' object has no attribute 'seek'
有没有直接在 Watson Studio 中 read_csv()
压缩文件而无需显式编写解包代码的方法?
(pd.__version__
在两种环境下都是 0.21.0
。)
如果您的文件已添加为 Watson Studio 项目的数据资产,则以下过程有效。
为您的项目创建一个项目令牌。在您的项目中,转到 设置,导航到 访问令牌 部分并单击选项 新令牌(在 "Access role for project" 下拉菜单中 select "Viewer" 就足够了)。
现在你的笔记本在"edit"模式下,屏幕右上角出现三个点(⋮)您单击插入您的令牌。将使用您的项目凭据添加一个新的第一个单元格,现在您 运行 它。
现在您可以使用这样的代码:
file = project.get_file("my_compressed_csv.zip")
df = pd.read_csv(file, compression='zip')
在这种情况下,read_csv()
选项在 Watson Studio 中无法直接使用,因此您需要使用 project-lib
库。