호기심 많은 분석가
[Python] Python에서 구글 스프레드시트 연동하기 본문
목차
Python에서 구글 스프레드시트 연동하기
구글 스프레드시트를 활용해 데이터 관리를 하거나 대시보드를 운영하는 경우 DB의 데이터를 python으로 전처리한 뒤 자동으로 업데이트하는 등 업무를 하다 보면 Python에서 구글 스프레드시트 연동해야 하는 니즈가 존재합니다.
이번 포스팅에서는 어떻게 Python에서 구글 스프레드시트를 연동하는지 예시를 통해 알아보고자 합니다.
필요 라이브러리 불러오기 및 설치
# !pip install pydata_google_auth
# !pip install gspread
# !pip install gspread_dataframe
import pydata_google_auth
import gspread
from gspread_dataframe import set_with_dataframe
우리는 pydata_google_auth 라이브러리를 통해 사용자 자격 증명(User Credentials)을 생성하고 Google API를 활용하고자 합니다.
사용자 자격 증명(User Credentials) 생성
SCOPES = ['https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/spreadsheets']
credentials = pydata_google_auth.get_user_credentials(SCOPES, auth_local_webserver=True)
credentials.access_token = credentials.token
gc = gspread.authorize(credentials)
pydata_google_auth를 통해 credentials를 생성하고, 그 내부의 token을 통해 구글 스프레드시트(gspread)에 인증합니다.
처음 코드를 실행하게 되면 웹을 통한 권한 승인 절차를 진행하게 되는데, 승인 후엔 local에 credentials가 저장되기 때문에 그 이후에는 따로 승인 절차가 필요하지 않은 것을 확인할 수 있습니다.
- Credentials 저장 경로
- Mac : $HOME/.config/pydata/pydata_google_credentials.json
- Windows : $APPDATA/.config/pydata/pydata_google_credentials.json
구글 스프레드시트 데이터 불러오기
# google spread sheet 연동
# 데이터로 작업하고자하는 시트 링크 기입
sh = gc.open_by_url('google-spreadsheet-link')
# 데이터로 작업하고자하는 시트 탭 명 기입
worksheet = sh.worksheet('data')
# 탭 내부 데이터 활용하기 위해 DataFrame 형태로 변환
df_sheet_raw = pd.DataFrame(worksheet.get_all_values(), columns=worksheet.get_all_values()[0]).iloc[1:,:]
인증을 모두 완료했으므로, 우리가 활용하고자 하는 구글 스프레드시트 내 데이터를 불러와보겠습니다.
open_by_url 함수에 시트 링크를, worksheet 함수에 데이터 탭 명을 기입해 준 뒤 get_all_values() 함수를 이용해 데이터를 불러옵니다.
첨부한 사진에서 확인할 수 있다시피 get_all_values() 함수를 이용해 데이터를 호출하면 리스트 형태로 return 되기 때문에, pd.DataFrame 함수를 이용해 pandas로 활용하기 편한 데이터프레임 형태로 변환해 줍니다.
그러면 이제 전처리할 수 있는 환경이 모두 완성되었습니다.
구글 스프레드시트에 데이터 적재하기
# 데이터프레임을 구글 시트 내에 적재
# 탭명, 데이터, 컬럼명 포함 여부, 행, 열
set_with_dataframe(worksheet, df_sheet, include_column_header=False, row=2, col=2)
구글 스프레드시트의 데이터를 불러와서 활용할 때도 있지만 반대로 전처리한 데이터를 구글 스프레드시트에 적재하고 싶을 때도 있는데요.
그런 경우에는 set_with_dataframe이라는 함수를 활용해 원하는 탭, 원하는 위치에 데이터를 적재할 수 있습니다.
이번 포스팅에서는 간략하게 python과 구글 스프레드시트를 연동하는 방법에 대해 알아봤고, 더 많은 기능은 gspread 공식 문서 참고하시면 좋을 것 같습니다. 🐳
'Coding > Machine Learning & Python' 카테고리의 다른 글
[DACON] LH 구내식당 식수 인원 예측 대회 (2) | 2021.07.26 |
---|---|
[Pandas] Series에는 merge를 어떻게 해줄까? (0) | 2021.07.05 |
[Python] Intersection에 대해 알아보자(set, index) (0) | 2021.06.25 |
[ML] 다중 회귀 VS 다항 회귀 (Multiple VS Polynomial regression) (0) | 2021.06.07 |
[Pandas] Pandas의 map, apply, applymap 함수 (3) | 2021.06.06 |