6

这是我尝试过的:(ipython笔记本,带有python2.7)

import gcp
import gcp.storage as storage
import gcp.bigquery as bq
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

sample_bucket_name = gcp.Context.default().project_id + '-datalab'
sample_bucket_path = 'gs://' + sample_bucket_name 
sample_bucket_object = sample_bucket_path + '/myFile.csv'
sample_bucket = storage.Bucket(sample_bucket_name)
df = bq.Query(sample_bucket_object).to_dataframe()

哪个失败了。
你有什么线索我做错了吗?

4

3 回答 3

9

基于datalab的源代码 bq.Query()主要用于执行BigQuery SQL查询。在从 Google Cloud Storage (GCS) 读取文件方面,一种可能的解决方案是使用 datalab %gcsline magic 函数将 csv 从 GCS 读取到本地变量中。将数据保存在变量中后,就可以使用该pd.read_csv()函数将 csv 格式的数据转换为 pandas DataFrame。以下应该有效:

import pandas as pd
from StringIO import StringIO

# Read csv file from GCS into a variable
%gcs read --object gs://cloud-datalab-samples/cars.csv --variable cars

# Store in a pandas dataframe
df = pd.read_csv(StringIO(cars))

以下链接中还有一个相关的 stackoverflow 问题: Reading in a file with Google datalab

于 2016-06-23T12:45:49.623 回答
8

除了@Flair 关于 %gcs 的评论之外,我还得到了以下适用于 Python 3 内核的内容:

    import pandas as pd
    from io import BytesIO

    %gcs read --object "gs://[BUCKET ID]/[FILE].csv" --variable csv_as_bytes

    df = pd.read_csv(BytesIO(csv_as_bytes))
    df.head()
于 2017-10-14T04:28:44.153 回答
0

您还可以使用 Dask 提取数据,然后将数据加载到运行在 GCP 上的 Jupyter Notebook 中。

确保您已安装 Dask。

conda install dask #conda

pip install dask[complete] #pip

import dask.dataframe as dd #Import

dataframe = dd.read_csv('gs://bucket/datafile.csv') #Read CSV data

dataframe2 = dd.read_csv('gs://bucket/path/*.csv') #Read parquet data

这就是加载数据所需的全部内容。

您现在可以使用 Pandas 语法过滤和操作数据。

dataframe['z'] = dataframe.x + dataframe.y

dataframe_pd = dataframe.compute()

于 2018-09-25T16:49:27.743 回答