如何在 Google Datalab 中打开 gzip 文件?
How do I open a gzip file in Google Datalab?
我有一个包含 file.csv.gz
的桶。它大约有 210MB,我想把它读入 pandas。
有人知道怎么做吗?
对于非 gz,这有效:
%gcs read --object gs://[bucket-name]/[path/to/file.csv] --variable csv
# Store in a pandas dataframe
df = pd.read_csv(StringIO(csv))
“%%gcs read”命令不适用于压缩数据。
"%%gcs read" 将所有内容加载为字符串。由于您的压缩大小已经是 210MB,无论如何将其全部作为字符串读取可能不是一个好主意。
对于您的情况,也许您可以考虑使用 BigQuery 命令。 "%%bq" 支持压缩的 csv(仅 .gz 格式)作为数据源。以下显示如何操作:
单元格 1 -- 定义数据源:
%%bq 数据源 --name mycsv --path gs://b/o.csv.gz --compressed --format csv
模式:
- 姓名:url
类型:字符串
- 名称:标签
类型:字符串
单元格 2 -- 定义查询:
%%bq query --datasources mycsv --name myquery
SELECT * 来自 mycsv
单元格 3:-- 运行 查询并将其保存到 DataFrame:
df = %%bq execute --query myquery --to-dataframe
在单元格 2 中,您可能想要添加一些过滤器并且 select 只添加您想要的列。否则您会将整个文件加载到内存中,这可能太大了。
请注意,上述命令会调用 BigQuery 操作,因此需要在您的项目中启用 BigQuery API,并且可能会产生一些费用。
您仍然可以使用 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
我有一个包含 file.csv.gz
的桶。它大约有 210MB,我想把它读入 pandas。
有人知道怎么做吗?
对于非 gz,这有效:
%gcs read --object gs://[bucket-name]/[path/to/file.csv] --variable csv
# Store in a pandas dataframe
df = pd.read_csv(StringIO(csv))
“%%gcs read”命令不适用于压缩数据。
"%%gcs read" 将所有内容加载为字符串。由于您的压缩大小已经是 210MB,无论如何将其全部作为字符串读取可能不是一个好主意。
对于您的情况,也许您可以考虑使用 BigQuery 命令。 "%%bq" 支持压缩的 csv(仅 .gz 格式)作为数据源。以下显示如何操作:
单元格 1 -- 定义数据源:
%%bq 数据源 --name mycsv --path gs://b/o.csv.gz --compressed --format csv 模式: - 姓名:url 类型:字符串 - 名称:标签 类型:字符串
单元格 2 -- 定义查询:
%%bq query --datasources mycsv --name myquery SELECT * 来自 mycsv
单元格 3:-- 运行 查询并将其保存到 DataFrame:
df = %%bq execute --query myquery --to-dataframe
在单元格 2 中,您可能想要添加一些过滤器并且 select 只添加您想要的列。否则您会将整个文件加载到内存中,这可能太大了。
请注意,上述命令会调用 BigQuery 操作,因此需要在您的项目中启用 BigQuery API,并且可能会产生一些费用。
您仍然可以使用 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