Pandas 将批数据从BigQuery读取到Datalab
我在BigQuery表中有一个很大的数据集(大约45M行,13Gb的数据)。我想在我的GoogleDataLab笔记本中处理这些数据,用pandas做一些基本的统计,以便以后用Datalab单元中的matplotlib可视化数据。我认为尝试将所有数据集加载到pandas的数据帧中不是一个好主意(至少我会有RAM问题) 是否可以从BigQuery中批量读取数据(比如10K行)以在Datalab中使用Pandas 将批数据从BigQuery读取到Datalab,pandas,google-bigquery,google-cloud-datalab,Pandas,Google Bigquery,Google Cloud Datalab,我在BigQuery表中有一个很大的数据集(大约45M行,13Gb的数据)。我想在我的GoogleDataLab笔记本中处理这些数据,用pandas做一些基本的统计,以便以后用Datalab单元中的matplotlib可视化数据。我认为尝试将所有数据集加载到pandas的数据帧中不是一个好主意(至少我会有RAM问题) 是否可以从BigQuery中批量读取数据(比如10K行)以在Datalab中使用 提前谢谢 如果您的目的是可视化数据,那么采样会比加载小批量数据好吗 您可以对数据进行采样,例如:
提前谢谢 如果您的目的是可视化数据,那么采样会比加载小批量数据好吗 您可以对数据进行采样,例如:
import google.datalab.bigquery as bq
df = bq.Query(sql='SELECT image_url, label FROM coast.train WHERE rand() < 0.01').execute().result().to_dataframe()
你试过在表上迭代吗?
表
对象是一个iterable,它使用从BigQuery表获取数据,它以某种方式进行流式处理。默认情况下,页面大小为1024。感谢您在@BradleyJiang进行采样时提出的想法,这可能会有所帮助!但在这里,我处理的是时间顺序数据,二次采样会破坏时间顺序线。如果我找不到从BigQuery批量读取的方法,我想我需要转到原始csv文件,并将批量读取行。那么如何按时间排序,然后按页面查询?将google.datalab.bigquery导入为bq q=bq.Query('select*from myds.mytable order by time')t=q.execute().result()t.to_数据框(开始行=页面开始行,最大行=页面大小)
from google.datalab.ml import BigQueryDataSet
sampled_df = BigQueryDataSet(table='myds.mytable').sample(1000)