从 Google Cloud Storage 将 CSV 文件读取到 Datalab 并转换为 pandas dataframe

Read CSV file to Datalab from Google Cloud Storage and convert to pandas dataframe

我正在尝试将保存在 gs 中的 csv 文件读取到数据框以供分析

我已经按照以下步骤操作但没有成功

mybucket = storage.Bucket('bucket-name')
data_csv = mybucket.object('data.csv')
df = pd.read_csv(data_csv)

这不起作用,因为 data_csv 不是 pd.read_csv 预期的路径 我也试过了

%%gcs read --object $data_csv --variable data
#result: %gcs: error: unrecognized arguments: Cloud Storage Object gs://path/to/file.csv

如何读取我的文件进行分析?

谢谢

你只需要使用对象的 uri 属性 来获取实际路径:

uri = data_csv.uri
%%gcs read --object $uri --variable data

您的代码的第一部分不起作用,因为 pandas 期望数据位于本地文件系统中,但您使用的是位于云中的 GCS 存储桶。

%%gcs returns 字节对象。要读取它,请使用 io (python 3)

中的 BytesIO
mybucket = storage.Bucket('bucket-name')
data_csv = mybucket.object('data.csv')

%%gcs read --object $data_csv --variable data

df = pd.read_csv(BytesIO(data_csv), sep = ';')

如果您的 csv 文件以逗号分隔,则无需指定 ,这是默认设置 在此处阅读有关 io 库和包的更多信息:Core tools for working with streams

这对我有用

df = pd.read_csv(BytesIO(data), encoding='unicode_escape')