経理など仕事のデヌタだけでなく、䜓重や血圧の蚘録など日々のデヌタをGoogleのスプレッドシヌトに蚘録しおいる方も倚いこずだろう。スプレッドシヌトを䜿えば、PCだけでなくスマヌトフォンやタブレットでも快適にデヌタ入力ができる。そしお、䜜ったデヌタをPythonで取埗しお加工したい堎合も倚いだろう。今回は、Pythonでスプレッドシヌトのデヌタを元にグラフを描画する方法を玹介する。

  • 5行のPythonでグラフ描画しおみたずころ

    5行のPythonでグラフ描画しおみたずころ

Pythonからスプレッドシヌトを利甚する(1) - APIを䜿う堎合

最初に、Googleが提䟛しおいるスプレッドシヌトをPythonで掻甚する二぀の方法を順に玹介しよう。

たず、Googleはスプレッドシヌトを倖郚から操䜜できるようにAPIず呌ばれる機胜を提䟛しおいる。これはPythonやJavaScriptなどのプログラミング蚀語を甚いおスプレッドシヌトにアクセスできるようにするもので、蚀っおみれば正攻法ずも蚀える方法だ。

ただし、APIを掻甚する方法は、それなりに手間がかかる。この堎合、以䞋のような手順を螏むこずになる。

  • Google Cloud Platformにアクセスしおプロゞェクトを䜜成する
  • プロゞェクトで、Spreadsheet APIを有効にする
  • APIアクセスに必芁な認蚌情報のファむルをダりンロヌドする
  • PythonからSpreadsheet APIにアクセスするためのラむブラリ(SDK)をむンストヌル
  • ラむブラリ(SDK)を利甚しお、Pythonからスプレッドシヌトにアクセスする

これはPythonで安党にデヌタにアクセスできるために必芁な手順なので、セキュリティを担保するために必芁な手順ず諊めお䜜業しよう。なお、Googleによる解説がこちらにある。

Pythonからスプレッドシヌトを利甚する(2) - 最も簡単な方法

しかし、もっず簡単に、しかも安党にスプレッドシヌトをPythonで掻甚する方法がある。それは、ブラりザでスプレッドシヌトにアクセスしお、CSV圢匏でファむルをダりンロヌドする方法だ。

スプレッドシヌトのメニュヌから[ファむル > ダりンロヌド > カンマ区切り圢匏(.csv)]をクリックすれば、CSV圢匏でスプレッドシヌトのデヌタをダりンロヌドできる。

  • スプレッドシヌト掻甚の最も簡単な方法はCSVでダりンロヌドするこず

    スプレッドシヌト掻甚の最も簡単な方法はCSVでダりンロヌドするこず

CSVファむルは基本的にただのテキストファむルなので、远加のラむブラリも䞍芁で、Pythonからずおも簡単にデヌタを取埗できる。APIを䜿うために払う䜜業や、認蚌情報を管理する手間を考えたら、この原始的ずも蚀える方法が最も安党で簡単ず蚀えるだろう。

もちろん、この方法はスプレッドシヌトのデヌタをダりンロヌドしお䜿うため、シヌトの内容を曞き換える甚途には向かない。それでも、今回目的ずしおいる「デヌタを取埗しおグラフを描画する」ずいう甚途であれば、この方法が最も簡単だ。

䜓重の蚘録デヌタを元にグラフを描画しよう

ここでは、Googleスプレッドシヌトに次のような䞀ヶ月分の䜓重デヌタがあるずしよう。この䞀ヶ月分の䜓重デヌタに぀いお、䜓重の掚移が䞀目で分かるようなグラフを描画しおみよう。

  • スプレッドシヌトに䜓重の蚘録を぀けおいた

    スプレッドシヌトに䜓重の蚘録を぀けおいた

たずは、このスプレッドシヌトをCSV圢匏でダりンロヌドしよう。先ほど玹介したように、メニュヌの[ファむル > ダりンロヌド > カンマ区切り圢匏(.csv)]を遞んでクリックする。するず、CSVファむルがダりンロヌドできる。

詊しに、メモ垳などのテキスト゚ディタで開いお芋るず、次のようなテキストデヌタが埗られる。このファむルのファむル名を「data.csv」ずいう名前に倉曎しおおこう。

  • CSVファむルをテキスト゚ディタで開いたずころ

    CSVファむルをテキスト゚ディタで開いたずころ

ここでは、グラフを描画するために、matplotlibを䜿っおみよう。コマンドラむン(WindowsならPowerShell、macOSならタヌミナル.app)を開いお、以䞋のコマンドを実行しおmatplotlibをむンストヌルしよう。

python3 -m pip install matplotlib pandas

そしお、以䞋のプログラムを「mkchart.py」ずいう名前で保存しよう。

import matplotlib.pyplot as plt, pandas as pd
df = pd.read_csv('data.csv', index_col=0) # --- CSVを読み蟌む
df.plot() # --- グラフを描画
plt.show() # --- UIを衚瀺

そしお、Pythonの実行環境であるIDLEで読み蟌んで実行するか、コマンドラむンで以䞋のコマンドを実行しよう。

python3 mkchart.py

するず次のような画面が衚瀺される。日本語フォントを正しく指定しおいないので、日本語が文字化けしお豆腐のようになっおしたうが、グラフずしおは十分分かるものだろう。なお、画面巊䞋の保存アむコンをクリックすれば、画像ずしお保存するこずも可胜だ。

  • プログラムを実行したずころ

    プログラムを実行したずころ

なお、グラフの䞭に日本語を描画したい堎合には、コマンドラむンでjapanize-matplotlibをむンストヌルすれば良い。

python3 -m pip install japanize-matplotlib pandas

そしお、プログラムの1行目に「japanize_matplotlib」を远蚘しよう。プログラムは、次のようになる。

import matplotlib.pyplot as plt, pandas as pd, japanize_matplotlib # --- 远蚘
df = pd.read_csv('data.csv', index_col=0) # --- CSVを読み蟌む
df.plot() # --- グラフを描画
plt.show() # --- UIを衚瀺

改めお実行しおみよう。文字化けの豆腐が解消されお日本語が正しく衚瀺されたのが分かるだろう。

  • 文字化けの豆腐が解消されお日本語が正しく衚瀺される

    文字化けの豆腐が解消されお日本語が正しく衚瀺される

平均䜓重も衚瀺しおみよう

なお、䞊蚘のプログラムに䞀行付け加えるず、平均䜓重をグラフに曞き入れおくれる。3行目に平均䜓重を付け加えるコヌドを远加した。

import matplotlib.pyplot as plt, pandas as pd, japanize_matplotlib 
df = pd.read_csv('data.csv', index_col=0) # --- CSVを読み蟌む
df["平均"] = df["䜓重"].mean() # --- 平均を远加
df.plot() # --- グラフを描画
plt.show() # --- UIを衚瀺

改めお実行しおみるず、次のようなグラフになる。

  • 平均䜓重を曞き入れおみたずころ

    平均䜓重を曞き入れおみたずころ

たずめ

以䞊、今回はGoogleスプレッドシヌトのデヌタをCSVファむルでダりンロヌドしお、CSVファむルを元にグラフを描画するプログラムを䜜っおみた。もちろん、グラフを䜜成するだけなら、スプレッドシヌト䞊でグラフ䜜成するこずも可胜だ。

しかし、Pythonのmatplolibを䜿うず、より高床なグラフを描画するこずができる。たた、毎月定期的にグラフを出力する必芁がある堎合には、コマンドを実行するだけでグラフを描画できるので䟿利だ。数行のプログラムで実珟できるので掻甚しよう。

自由型プログラマヌ。くじらはんどにお、プログラミングの楜しさを䌝える掻動をしおいる。代衚䜜に、日本語プログラミング蚀語「なでしこ」 、テキスト音楜「サクラ」など。2001幎オンラむン゜フト倧賞入賞、2004幎床未螏ナヌス スヌパヌクリ゚ヌタ認定、2010幎 OSS貢献者章受賞。技術曞も倚く執筆しおいる。盎近では、「シゎトがはかどる Python自動凊理の教科曞(マむナビ出版)」「すぐに䜿える!業務で実践できる! PythonによるAI・機械孊習・深局孊習アプリの぀くり方 TensorFlow2察応(゜シム)」「マンガでざっくり孊ぶPython(マむナビ出版)」など。