Как я могу загрузить свой CSV из Google DataLab в фрейм данных pandas?

Вот что я пробовал: (ноутбук 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()

Который терпит неудачу.
у вас есть какие-либо указания, что я делаю неправильно?


person Cy Bu    schedule 23.06.2016    source источник


Ответы (3)


В дополнение к комментариям @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()
person Tony    schedule 14.10.2017

На основе исходного кода datalab в основном используется bq.Query() для выполнения SQL-запросов BigQuery. Что касается чтения файла из Google Cloud Storage (GCS), одним из возможных решений является использование магической функции datalab %gcs line для чтения csv из GCS в локальную переменную. Получив данные в переменной, вы можете использовать функцию pd.read_csv() для преобразования данных в формате csv в кадр данных pandas. Следующее должно работать:

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))

По следующей ссылке также есть связанный с этим вопрос о переполнении стека: файл с лабораторией данных Google

person Anthonios Partheniou    schedule 23.06.2016

Вы также можете использовать Dask для извлечения и загрузки данных, скажем, в блокнот Jupyter, работающий на GCP.

Убедитесь, что у вас установлен 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()

person Miguel Galeano    schedule 25.09.2018