LoginSignup
17
26

More than 3 years have passed since last update.

pandas.Dataframeからスプレッドシートに簡単に反映するgspread-dataframeライブラリ

Posted at

gspread-dataframeライブラリについて日本語の文献が少ないと感じたのでまとめる。

やりたいこと

Pythonでgoogleスプレッドシートを操作したい。一度スプレッドシートのデータをpandasのDataframeに入れてから、編集して、それを元のスプレッドシートに反映させたい!イメージは以下

名称未設定.002.jpeg

やってみた

まずは、読み書きの初期設定。画像付きでわかりやすいサイトがあった。スプレットシートやPythonの初期設定は難なく終った。

そして実際にコピーして、編集して、スプレッドシートに反映させる作業を行った。
とても丁寧なサイトがあり、参考にしてやってみた。スプレッドシートからコピーする作業はそこまで大変ではなさそう。

しかし、再び元のスプレッドシートをコピーする場合、cell_listに全てのセルについて保存してから反映させる。この作業がちょっと複雑そう。
名称未設定.001.jpeg
マジギレパンダス

そこでgspread-dataframeライブラリ

うまいことやってくれるライブラリがないか探したところ、gspread-dataframeがあった。インストールは簡単。

pip3 install gspread-dataframe

例えば、このようなスプレッドシートがあったとする。

スクリーンショット 2020-06-07 1.02.08.png

gspread-dataframeを使って以下のようにした。

import pandas as pd
import gspread
from gspread_dataframe import get_as_dataframe, set_with_dataframe

worksheet = [適宜シートを設定]

# sheetからdataframeで受け取る
df_sps = get_as_dataframe(worksheet, usecols=[0,1,2,3], skiprows=0, header=0, index_col=0)

#################
# ここでデータ処理
#################

# sheetに反映
set_with_dataframe(worksheet, df_sps.reset_index())
  • get_as_dataframe:指定したシートからデータを取ってきてDataframeにしてくれる。オプションはpandas.read_csvで利用できるものなら使えそう。 参考:https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html
  • set_with_dataframe:指定したシートにデータを反映させる。

(補足) この例だと、get_as_dataframeしたときに、1列目をindexとして指定している。indexを設定したままset_with_dataframeをするとindexの列が消えてしまうため、df_sps.reset_index()で渡した。

気になる点

  • スプレッドシートに書き込む際に必要なGoogleAPIは「100秒間に100回しかAPIを叩けない」という制約があるが、更新の際は何回APIを叩いていることになるのか。
  • データ数が多いときどうなるか

感想

簡単にpandas.Dataframeをスプレッドシートに反映できた。コードがかなりシンプルになるので今後活用していきたい。

17
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
26