如何将我的 csv 从 google dataLab 加载到 pandas 数据框?
How can i load my csv from google dataLab to a pandas data frame?
这是我尝试过的:
(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()
失败了。
你能知道我做错了什么吗?
基于datalab source codebq.Query()
主要用于执行BigQuerySQL查询。在从 Google 云存储 (GCS) 读取文件方面,一种可能的解决方案是使用数据实验室 %gcs
行魔术函数将 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))
下面还有一个相关的Whosebug问题link:
Reading in a file with Google datalab
除了@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()
您还可以使用 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()
这是我尝试过的: (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()
失败了。
你能知道我做错了什么吗?
基于datalab source codebq.Query()
主要用于执行BigQuerySQL查询。在从 Google 云存储 (GCS) 读取文件方面,一种可能的解决方案是使用数据实验室 %gcs
行魔术函数将 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))
下面还有一个相关的Whosebug问题link: Reading in a file with Google datalab
除了@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()
您还可以使用 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()