Ale*_*eev 0 python zip dataframe pandas watson-studio
要在本地 Jupyter 笔记本中读取带有 pandas 的 zip 压缩 csv 文件,我执行:
import pandas as pd
pd.read_csv('csv_file.zip')
Run Code Online (Sandbox Code Playgroud)
但是,在 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 )
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试时:
import pandas as pd
df = pd.read_csv(body)
Run Code Online (Sandbox Code Playgroud)
我得到:
'utf-8' codec can't decode byte 0xbb in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud)
如果我指定compression='zip':
import pandas as pd
df = pd.read_csv(body, compression='zip')
Run Code Online (Sandbox Code Playgroud)
消息是:
'StreamingBody' object has no attribute 'seek'
Run Code Online (Sandbox Code Playgroud)
是否有直接方法可以read_csv()在 Watson Studio 中获取压缩文件,而无需显式编写解包代码?
(这在两种环境中pd.__version__都是如此0.21.0。)
如果您的文件已添加为 Watson Studio 项目的数据资产,则以下过程有效。
\n\n为您的项目创建项目代币。在您的项目中,转到Settings,导航到该Access tokens部分并单击选项New token(在“项目的访问角色”下拉菜单中选择“查看者”就足够了)。
\xe2\x8b\xae现在,在处于“编辑”模式的笔记本中,屏幕右上角有三个点 ( ),您可以在此处单击插入令牌。将添加一个新的第一个单元格以及您的项目凭据,现在您可以运行它。
现在你可以使用这样的代码:
file = project.get_file("my_compressed_csv.zip")\ndf = pd.read_csv(file, compression=\'zip\')\nRun Code Online (Sandbox Code Playgroud)\n\n在这种情况下,该read_csv()选项不能直接在 Watson Studio 中工作,因此您需要使用该project-lib库。
| 归档时间: |
|
| 查看次数: |
1763 次 |
| 最近记录: |