MENU

Cloud Storage に存在する CSV ファイルを pandas.DataFrame として取得する方法

この記事では、Python クライアントライブラリ( google-cloud-storage モジュール)を使用して、Cloud Storage に存在する CSV ファイルをデータフレームとして取得する方法を紹介しています。

Python==3.9.7
---
pandas==1.4.1
google-cloud-storage==2.2.1
$ pip install pandas
$ pip install google-cloud-storage
目次

まとめ

from io import BytesIO
import pandas as pd
from google.cloud import storage

# クライアントをインスタンス化
client = storage.Client()

# バケットを取得
# BUCKET_NAMEは、Cloud Storageのバケット名を指定
bucket = client.get_bucket(BUCKET_NAME)

# BLOB(Binary Large OBject)を構成
# FILE_PATHは、オブジェクトのファイルパスを指定
blob = bucket.blob(FILE_PATH)

# オブジェクトのデータを取得
content = blob.download_as_bytes()

# バイナリオブジェクトに変換し、データフレームを作成
df = pd.read_csv(BytesIO(content))

以下、プログラムの解説です。

解説

この章では例として、Cloud Storage に sample-bucket というバケット( Cloud Storage でデータを格納する基本的なコンテナ)が存在し、test1 フォルダの sample_123456.csv というオブジェクトをデータフレームとして取得したいものとします。

sample-bucket
  ┣ test1/
  ┃  ┗ sample_123456.csv
  ┣ test2/
  ┗ test3/
Col1,Col2,Col3
1,あ,A
2,い,B
3,う,C

クライアントをインスタンス化

google-cloud-storage モジュールを使用して、Python から Cloud Storage を操作するために、クライアントをインスタンス化します。

from google.cloud import storage

# クライアントをインスタンス化
client = storage.Client()

バケットを取得

google.cloud.storage.Clientクラスのget_bucketメソッドで、バケットをBucketオブジェクトとして取得します。

  from google.cloud import storage

  # クライアントをインスタンス化
  client = storage.Client()

+ # バケットを取得
+ bucket = client.get_bucket('sample-bucket')

BLOB を構成

google.cloud.storage.Bucketクラスのblobメソッドで BLOB( Binary Large OBject )をBlobオブジェクトとして取得します。

  from google.cloud import storage

  # クライアントをインスタンス化
  client = storage.Client()

  # バケットを取得
  bucket = client.get_bucket('sample-bucket')

+ # BLOB(Binary Large OBject)を構成
+ blob = bucket.blob('test1/sample_123456.csv')

オブジェクトのデータを取得

google.cloud.storage.Blobクラスのdownload_as_bytesメソッドで BLOB の内容を取得します。

  from google.cloud import storage

  # クライアントをインスタンス化
  client = storage.Client()

  # バケットを取得
  bucket = client.get_bucket('sample-bucket')

  # BLOB(Binary Large OBject)を構成
  blob = bucket.blob('test1/sample_123456.csv')

+ # オブジェクトのデータを取得
+ content = blob.download_as_bytes()

同じ動作をするdownload_as_stringメソッドはdownload_as_bytesメソッドの非推奨のエイリアスなので、使わないようにしましょう。

データフレームを作成

pandas モジュールのread_csvメソッドは、ファイルパスまたはバイナリオブジェクトをもとにデータフレームを作成するので、標準モジュール ioBytesIOメソッドを使用してバイナリオブジェクトに変換します。

+ from io import BytesIO
+ import pandas as pd
  from google.cloud import storage

  # クライアントをインスタンス化
  client = storage.Client()

  # バケットを取得
  bucket = client.get_bucket('sample-bucket')

  # BLOB(Binary Large OBject)を構成
  blob = bucket.blob('test1/sample_123456.csv')

  # オブジェクトのデータを取得
  content = blob.download_as_bytes()

+ # バイナリオブジェクトに変換し、データフレームを作成
+ df = pd.read_csv(BytesIO(content))

この記事が気に入ったら
フォローしてね!

シェアしていただけると励みになります
  • URLをコピーしました!

コメント

コメントする

目次
閉じる