我有一个包含file.csv.gz
的存储桶。它大约210MB,我想把它读成大熊猫。
有谁知道怎么做?
对于非gz,这有效:
%gcs read --object gs://[bucket-name]/[path/to/file.csv] --variable csv
# Store in a pandas dataframe
df = pd.read_csv(StringIO(csv))
答案 0 :(得分:1)
您仍然可以使用pandas.read_csv,但必须指定 compression ='gzip',并从 pandas.compat 导入StringIO。
我在我的Datalab中用一个小文件尝试了下面的代码,它对我有用。
%gcs read --object gs://[bucket-name]/[path/to/file.csv] --variable my_file
import pandas as pd
from pandas.compat import StringIO
df = pd.read_csv(StringIO(my_file), compression='gzip')
df
答案 1 :(得分:0)
" %% gcs read"命令不适用于压缩数据。
" %% gcs read"将所有内容加载为字符串。由于您的压缩大小已经是210MB,因此无论如何都不能将它全部读成字符串。
在您的情况下,也许您可以考虑BigQuery命令。 " %% BQ"支持压缩的csv(仅.gz格式)作为数据源。以下显示了如何执行此操作:
单元格1 - 定义数据源:
%% bq datasource --name mycsv --path gs://b/o.csv.gz --compressed --format csv 模式: - name:url 类型:STRING - 名称:标签 类型:STRING
单元格2 - 定义查询:
%% bq query --datasources mycsv --name myquery SELECT * FROM mycsv
单元格3: - 运行查询并将其保存到DataFrame:
df = %% bq执行--query myquery --to-dataframe
在单元格2中,您可能希望添加一些过滤器并仅选择所需的列。否则,您将整个文件加载到内存中,这可能太大了。
请注意,上面的命令调用BigQuery操作,因此需要在项目中启用BigQuery API,并且还可能产生一些成本。