こんにちは、ミナピピン(@python_mllover)です!
前回以下の記事でPythonからBigqueryでのテーブル操作のやり方について紹介したのですが、ちょっと使い勝手が悪く、もっといい方法はないか探したところ「pandas-gbq」というライブラリが便利だったので紹介したいと思います。
関連記事:【Python】GCPのBigqueryを「google-cloud-bigquery」を使って操作する
pandas-gbqでbigqueryを操作する
まずはpandas-gbqをインストールします。
$ pip install pandas_gbq
ちなみに以下のようなエラーは出た場合はその下のコマンドでインストールしてみてください。
Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
$pip install pandas_gbq --ignore-installed PyYAML
データの読み込み
import pandas as pd project = 'プロジェクトID' dataset = 'データセット名' table = 'テーブル名' # クエリ query = "SELECT * FROM `{0}.{1}.{2}`".format(project, dataset, table) # pandasのread_gqbにて読み込みます。 # クエリとプロジェクトidを引数に設定する。 # dialect='standard'とすることで標準SQLを使用(default='legacy') df = pd.read_gbq(query, project, dialect='standard') df.head()
ここまで実行すると、「Please visit this URL~」のような文章がリンクとなって表示されるので、それを押してください。※pandas-gbqをインストールしていないとここでエラーが出ます。
リンクをそのまま進んでいくと、認証コードが表示されるのでコピーし、Jupyterに戻り、下記のボックスに貼り付けし、Enterを押します。(ちなみに環境変数でGCPの認証を通している場合はこの画面は出現しません。)
これでBigQueryのテーブルをデータフレームに読み込むことができました。次は読み込んだデータフレームを少し加工して、BigQueryのテーブルとして更新してみます。
デーブルの更新
# to_gbqを利用します。 # 引数には'データセット名.テーブル名'、プロジェクトIDを指定します。 # if_existsという引数があり、ここを'append'にするとデータがinsertされ、'replace'にするとテーブルが置き換えられる。(default='fail') df.to_gbq('bitcoin.test', project, if_exists='fail')
終わり
仕事柄Bigqueryからデータを呼び出すことが多いので、呼び出したデータをそのままPythonで処理できるのは非常に便利で助かっています、さすがPythonです。
参照:https://qiita.com/i_am_miko/items/68cb516ad2be61d59554
コメント