2017-03-07 10 views
2

私のサーバーにあるcsvファイルから1.18 MBまたは約10,000行のデータをGoogle Table for Tableauにプッシュして読む必要があります。Python経由でGoogle SpreadSheetにデータをプッシュする最速の方法

データがGoogle DFPからcsvドキュメントに入っています。私はgspreadライブラリを使用して、以前はcsvデータでGoogleシートを更新してきましたが、10,000レコードではレコードごとに30秒間のポストを行いましたが、この方法は有効ではありません。

gspreadライブラリを使用するよりも、csv/txtファイルの内容をGoogleスプレッドシートに簡単にコピーできますか?好ましくはPythonで。

更新: 私はこの方法でセルを一括更新しようとしています。

raw_dfp = pd.read_csv('live_dfp_UTF.csv', error_bad_lines=False) 
sample5 = raw_dfp.iloc[:3, :] 
rows, col = sample5.shape 

doc.resize(1, 7) 
doc.clear() 
doc.resize(rows + 1, col) 

column_names = ['', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'] 

cell_range = 'A1:' + column_names[col] + str(rows) 

cells = doc.range(cell_range) 

# To use this next line?? 
# flattened_data = np.flatten(sample5) 

for x in range(rows): 
    cells[x].value = sample5[x].decode('utf-8') 

doc.update_cells(cells) 
+1

提案された回答がうまくいかない場合:1レコードで30秒が長いようです。しかし、オーバーヘッドが増え、渡すデータがそれほど多くないAPI呼び出しです。列の数に応じて、一度に〜200行の塊にプッシュすると、私のために1行を押すのにはほとんど無視できる時間がかかりました。ただし、1回の更新でどれくらい押し込むことができるかに上限があります。 – roganjosh

+0

私は次のような回答を書いています[こちら](http://stackoverflow.com/questions/34640175/can-i-write-whole-lines-in-google-spreadsheets-using-gspread-in-python/34837122#34837122)助けてくれることだけをする。 – roganjosh

+0

@roganjoshあなたは質問の本文にputの更新を見ることができますか?私はフラットラインの後に何をすべきかを理解するのに問題があります。 –

答えて

3

は、なぜあなたはパンダのデータフレームにcsvファイルからすべてのデータをロードして、全体としてのスプレッドシートをGoogleにプッシュしないのですか?

このライブラリは役に立つかもしれ:https://github.com/maybelinot/df2gspread

+0

システムの認証に問題がありました。残念なことに、その実装に関する非常に堅牢な知識ベースではありません。 –

1

あなたはそれがV3よりも高速であるAPI v4のを使用していますpygsheets試みることができます。 pandasデータフレームからデータをプッシュすることもサポートしています。

0

私は、Pythonのパンダとその逆にGoogleスプレッドシートを転送するための最良の方法はdf2gspreadを使用することによる、Shivamに同意: http://df2gspread.readthedocs.io/en/latest/overview.html#usage1

それが何をセットアップするために10分かかり、コードのわずか3行トリック:

from df2gspread import gspread2df as g2d 
df = g2d.download(gfile="your_spreadsheet_ID", col_names=True, row_names=True) 

ご質問がありましたら、お気軽にお問い合わせください。

関連する問題