PythonによるSpreadsheetとDataFrameの操作

# はじめに
プログラムが素人でPythonの勉強を始めた人で，環境構築に悩んでいる方を想定して書きました。
Spreadsheetをcolaboratoryで扱うために必要な作業についてまとめました。
## 前提条件
 - colaboratoryを開くことができる

# 本体
## Google Driveを立ち上げ、Colaboratoryを開く。
![co1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89181/bb5f5904-e241-adc2-1a8d-a6e7a27ed607.png)

## 次のコードを入力する
pandas、numpy、matplotlibは頻繁に使うので最初にインポートしておきます(code00.py)。


```Python:code00.py

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

```
## スプレッドシートを扱うための認証作業をする
code01.pyを実行すると・・・

```Python:code01.py
# インポート
import gspread
from google.colab import auth
from gspread_dataframe import get_as_dataframe, set_with_dataframe
from oauth2client.client import GoogleCredentials

# 認証する
auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())
```
こんな画面になると思います。赤の矢印のURLをクリックします。
![co2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89181/009f6d72-9f36-ff2e-fb1d-7afe3a29e356.png)

自分のアカウント（使用しているアカウント）を選択します。
![co3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89181/99d0d843-856d-1a62-d552-4dde107ae3bc.png)


すると，下の画面が表示されますので，`許可`をクリックします。
![co4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89181/99ff798b-fe63-2c6c-2802-1f174f4aa5fb.png)



さらに，暗号のようにアルファベットや数字の並んだコードが表示されます。これが認証に用いるコードです。
右にある四角を押すと，認証コードがクリップボードにコピーされます。
![co5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89181/d0320877-e77f-5b95-2d44-2442f0f7e0c6.png)


Colaboratoryの画面に戻り，`Enter verification code`とある隣のスペースにカーソルをおき，
`Ctrl + V`を同時におして貼り付けます。
![co6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89181/04ac242f-323a-3995-b0b4-47065c9ee9a8.png)

## スプレッドシートを読み込む
シート内のデータを一括してpandasのDataFrame形式に変える方法を例示します。

本題の前に，サンプルのスプレッドシートを作成して作業を進めます。

### スプレッドシートを作成する
では，読み込むための例データを作成しましょう。
もしくは，[ここ](https://docs.google.com/spreadsheets/d/1cvEz4aWAZFXGSj4AqSJ1fuqatOUBa1e_G_RQu2OMZ1o/edit?usp=sharing)にシートをつけておきます。
![スクリーンショット 2020-08-26 17.00.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89181/0006b098-a843-31cb-5f7e-b1af4f0b3a9b.png)

| A | B | R |
|:--------:|:--------:|:--------:|
| 0 |  | 0 |
| 1 | 5 | 67 |
| 1 | 7 | 76 |
| 1 | 5 | 67 |
| 1 | 3 | 58 |
| 1 | 6 | 72 |
| 1 | 6	| 72 |
| 1 | 6 | 72 |
| 1 | 9 | 85 |
| 1 | | 45 |
| 1 | 7 |76
| 1 | 5 |67
| 0 | 	| 0 | 
| 1 | 6	|72|
| 0.8 | 3 | 49 | 
| 1 | 6 |72|
| 1 | 8|81|

### スプレッドシート内のデータの読み込み
#### ファイル名を使う場合
ファイル名を使うときは，同じファイル名があると混同されるので，注意します。
スプレッドシートで保存したときのファイル名を文字列型にして ( )内において実行します。

```Python:ファイル名で読み込む
gs = gc.open("samplesheet")
```

#### キーを使う場合
はじめに，Spreadsheetのキーを取得します。
キーの取得は，下の図のURLである，
`https://docs.google.com/spreadsheets/d/`の直後から次のスラッシュまでの間（最後のスラッシュは含まない）が，このスプレッドシートのキーになります。
![idid.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89181/b2577df1-e5cc-00f3-e98f-3a5fe5b7d4c3.png)

この部分をキー操作でクリップボードにコピー(Ctrl+C)しておきます。

```Python:キーで読み込む
gs = gc.open_by_key("キーをペーストするところ")
```


### データの読み込みとDataFrameへの変換
読み込んだデータすべてをDataFrameに変換します。
この前に，スプレッドシートにアクセスしました。それに続けて，その方法について下に例コードを提示します。

```Pytohn:
worksheet = gs.get_worksheet(0)
dat = pd.DataFrame(worksheet.get_all_values())

## 列名があるとき
dat.columns = dat.loc[0]
dat = dat.loc[1:]

## 列名がないとき
dat.columns = ["A","B","R"]
```
実行後のcolaboratoryの画面です。
あとは，pandasのDataFrameに対する操作です。
![スクリーンショット 2020-08-27 7.42.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/89181/fe7540dc-b190-72a5-c226-f69e61eb9b14.png)


# 最後に

spreadsheetは無制限で使用できますので，気兼ねなくいろいろなことができます。ネットワーク環境が整っていれば比較的簡単にできると思います。