我曾经使用Jupyter Notebook从本地目录中的CSV文件访问数据,但是,现在,我想通过datalab访问存储在Google云存储中的CSV文件。这是我用来运行该函数的一部分:

def function1(file_name):
    new_file = open("file_name.csv", "w")
    new_file.write("variable"+'\n')
    with open(file_name, "r") as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        for row in csv_reader:
            values_in_column1 = int(row[0])
            variable = values_in_column1 * 0.6 / 5


如何更改此功能,以使其能够与存储在Google cloiud存储和datalab中的CSV文件一起使用?

Datalab使我可以将一个csv文件的数据加载到一个变量中,但是我不想将所有数据加载到一个变量中。我想将每列的值加载到不同的变量中。

%%gcs read --object gs://bucket-name/file_name.csv --variable variable_name


有人建议使用字典或列表吗?还是有更简单的方法来做到这一点?

我已经尝试过使用来自google.cloud的存储,但是在通过终端更新google cloud存储时,无法导入它。

ImportErrorTraceback (most recent call last)
<ipython-input-6-943e66fe7e46> in <module>()
----> 1 from google.cloud import storage
      2
      3 storage_client = storage.Client()
      4 bucket = storage_client.get_bucket(bucket_name)
      5 blob = bucket.blob(source_blob_name)

ImportError: cannot import name storage

最佳答案

我首先创建Datalab实例并通过端口8081建立与localhost的连接。我建议您查看此链接,以更好地了解Datalab的功能和数据处理能力的潜力。
https://cloud.google.com/datalab/docs/quickstart

我已经在Datalab中尝试过该脚本,对我来说效果很好。我设法将样本数据从存储桶中的一个对象读取到一个数据帧中:

import google.datalab.storage as storage
import pandas as pd
import numpy as np
from io import BytesIO

mybucket = storage.Bucket('my-test-bucket-1-2-3-4')
data_csv = mybucket.object('test1.csv')

uri = data_csv.uri
%gcs read --object $uri --variable data

df = pd.read_csv(BytesIO(data))
df.head()


How to read data from Google storage cloud to Google cloud datalab

我看到您也在尝试对数据执行行操作。我建议您使用pandas.DataFrame.apply执行此类操作。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html

10-08 07:53