Google Drive上に保存されたファイルをPythonで読み込む方法は複数あります。本記事では、以下の3つの方法についてCSVファイルを例に具体的なに解説します。
Google Drive APIを使用してCSVファイルを読み込む方法
まずは、APIを使う方法です。
こちらについての詳細は以下の記事で解説しているので、あわせて確認してください
Google Drive APIの設定
- Google Cloud Consoleにアクセス: Google Cloud Consoleにログインし、新しいプロジェクトを作成します。
- APIとサービスを有効化: 「APIとサービス」から「ライブラリ」に移動し、「Google Drive API」を検索して有効にします。
- OAuth 2.0 クライアントIDを作成: 「認証情報」から「OAuth 2.0 クライアントID」を作成し、認証情報をダウンロードします。これには
credentials.json
というファイルが含まれます。
詳細は以下のAPIの取得を確認してください。
必要なライブラリをインストール
以下のコマンドで必要なライブラリをインストールします。
pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client pandas
APIを使ってCSVファイルを読み込む
以下のコードを使ってGoogle DriveからCSVファイルを読み込むことができます。
先ほど取得したcredentials.jsonのパスを変更してください。
また、ファイルIDを入力してください。
ファイルIDはファイルURLの以下の部分になります。
https://drive.google.com/file/d/{file_id}/view?usp=sharing
from google.oauth2 import service_account
from googleapiclient.discovery import build
import pandas as pd
import io
# 認証情報の設定
SCOPES = ['https://www.googleapis.com/auth/drive.readonly']
SERVICE_ACCOUNT_FILE = 'path/to/credentials.json'
creds = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
# Google Drive APIの初期化
service = build('drive', 'v3', credentials=creds)
# ファイルIDを指定
file_id = 'your_file_id_here'
# CSVファイルの内容を取得
request = service.files().get_media(fileId=file_id)
fh = io.BytesIO(request.execute())
# pandasで読み込み
df = pd.read_csv(fh)
print(df.head())
共有リンクからCSVファイルを読み込む方法
続いて、ファイルをリンク共有できる場合に、共有リンクを使って取得する方法です。
共有リンクの取得
Google Driveで対象ファイルを右クリックし、「共有」を選択して「リンクを取得」します。リンクの形式はhttps://drive.google.com/file/d/FILE_ID/view?usp=sharing
です。
共有リンクからCSVファイルを読み込む
以下のコードで共有リンクからCSVファイルを直接読み込むことができます。
import pandas as pd
# 共有リンクのファイルIDを指定
file_id = 'your_file_id_here'
# ダウンロードURLの生成
url = f'https://drive.google.com/uc?id={file_id}'
# pandasでCSVファイルを読み込み
df = pd.read_csv(url)
print(df.head())
gdownライブラリを使ってCSVファイルを読み込む方法
共有リンクでの取得は非常に簡単ですが、大きなファイルの場合、うまく読み込めず、以下のようなデータがダウンロードされてしまうことがあります。
その場合には、gdwonが便利です。
gdownのインストール
以下のコマンドでgdown
をインストールします。
pip install gdown
gdownを使ってCSVファイルをダウンロードし、読み込む
以下のコードでCSVファイルをGoogle Driveからダウンロードし、pandasで読み込むことができます。
import gdown
import pandas as pd
# ファイルIDを指定
file_id = 'your_file_id_here'
# ダウンロードURLの生成
url = f'https://drive.google.com/uc?id={file_id}'
# gdownでCSVファイルをダウンロード
output = 'file.csv'
gdown.download(url, output, quiet=False)
# pandasでCSVファイルを読み込み
df = pd.read_csv(output)
print(df.head())
3つの方法のメリット/デメリット
ここまで紹介した方法を使って、Google Drive上のCSVファイルをPythonで簡単に読み込むことができます。
それぞれの方法のメリットとデメリットを比較してみます。
方法 | メリット | デメリット |
---|---|---|
Google Drive APIを使用 | – 高度なカスタマイズが可能 – APIを通じて直接アクセス – 認証・認可の制御ができる |
– 設定が複雑 – APIキーやOAuth 2.0の設定が必要 – 認証情報の管理が面倒 |
共有リンクから読み込む | – 簡単にリンクを取得して利用できる – 特別な設定が不要 |
– リンクの有効期限や共有設定に依存 – API機能に比べると制限が多い – 重たいデータに対応しない |
gdownを使用 | – 簡単にファイルをダウンロードできる – 使い方がシンプル -大きなファイルにも対応 |
– gdown ライブラリのインストールが必要– アクセス制御が難しい – ダウンロードする必要がある |
各方法には異なる利点と欠点があるので、目的や状況に応じて最適な方法を選んでください。