JupyterでGCSにあるファイルを読み込み、DataFrameとして扱う方法を紹介します。サーバにいちいちデータを落としたくない場合やディスク容量がない場合に使えるかもしれません。いつも通り完全に備忘録です。
#ライブラリ
$ pip install google-cloud-storage
from google.cloud import storage as gcs import pandas as pd from io import BytesIO bucket_name = "[bucket name]" file_name = "[file path ]" project_name = "[project id]" # create gcs cliaent client = gcs.Client(project_name) bucket = client.get_bucket(bucket_name) # create blob blob = gcs.Blob(file_name, bucket) content = blob.download_as_string() train = pd.read_csv(BytesIO(content)) train.head()
こんな感じでDataFrameとして扱えます。CLIでGCSから、サーバーにファイルを落としたいなら、このコマンドです。好みですかね。Kaggleのeloコンペメダル欲しいなあ。
# gsutil -m cp [copy file path] [path] $ gsutil -m cp 'gs://kagg-bucket/elo/elo-merchant-category-recommendation/train.csv' ./ Copying gs://kagg-bucket/elo/elo-merchant-category-recommendation/train.csv... / [1/1 files][ 8.0 MiB/ 8.0 MiB] 100% Done
GCSに書き込むにはローカルのファイルパスを指定してあげる必要があるようです。
Dataflowを使ってサイズの大きいファイルを分割する処理をしたかったのですが、
サーバレスなのでうまく行きませんでした。出力結果をまとめたくない場合など用途によっては
Dataprocとう使うのもありだと思いました。