Python으로 kaggle 데이터 GCP에 적재

요약

  • Kaggle 데이터 다운로드
  • GCP에 데이터 세트 만들고 서비스 계정 생성하기
  • Python-BigQuery 연결 후 데이터 조회
  • 데이터 적재 하기

Kaggle 데이터 다운로드

  • kaggle을 설치한다

    1
    !pip install kaggle
  • kaggle의 key를 받아온다

    1
    2
    3
    !mkdir ~/.kaggle
    !echo '{"username":"your_id","key":"your_key"}' > ~/.kaggle/kaggle.json
    !chmod 600 ~/.kaggle/kaggle.json
  • kaggel TOKEN 받아오기

    • kaggle에 접속한다음 프로필을 선택하고 Account를 누른다

    • 화면을 내리면 API 탭을 찾을수 있다.

    • Create New API Token을 누르고 다운 kaggle.json 파일을 받아줍니다.

    • 한번 발급 받으면 이전의 것은 알려주지 않기 때문에 잊어버렸다면 Expire API TOKEN 으로 모두 지고 새로운 토큰을 받는다.

  • kaggle에서 원하는 데이터를 다운 받아준다 → competitions에서 원하는 competition을 선택하고 data 탭으로 가면 다운 받을 수 있는 api가 있다.


GCP에 데이터 세트 만들고 서비스 계정 생성하기

  • GCP에 프로젝트를 만들고 새로운 데이터 세트를 만들어 준다

  • 중간에 Default table expiration 을 클릭하면 테이블이 며칠 후에 만료되는지도 설정 가능하다

  • 서비스 계정 생성

    • GCP 좌측 상단 ‘탐색 메뉴’ 클릭후 ‘IAM 및 관리자’의 ‘서비스 계정’으로 이동

    • ‘+ 서비스 계정 만들기’ 클릭 후 서비스 계정 만들기 진행

  • 서비스 계정 키 생성 후 JSON 파일 추출

    • Email에 생성된 서비스 계정 클릭 → 페이지 상단에 KEYS → ADD KEY → Create new key

    • config 폴더 생성 후 해당 경로에 json 파일 다운로드

  • 서비스 계정에 빅쿼리 관련 역할 추가

    • GCP 좌측 상단 ‘탐색 메뉴’ 클릭후 ‘IAM 및 관리자’의 ‘IAM’으로 이동

    • ‘추가’ 클릭 - 생성된 서비스 계정 이메일 추가 및 ‘BigQuery 관리자’ 역할 선택 후 저장


Python-BigQuery 연결 후 데이터 조회

  • 구글 클라우드 빅쿼리 클라이언트 설치

    1
    !pip install google-cloud-bigquery
  • 서비스 계정 키 설정 → 빅쿼리 클라이언트 정의 → 데이터 조회 쿼리 실행


데이터 적재 하기

  • 데이터를 불러온다

    1
    2
    3
    4
    5
    6
    7
    import pandas as pd

    BASE_DIR = "./"
    train = pd.read_csv(BASE_DIR + 'train.csv')
    test = pd.read_csv(BASE_DIR + 'test.csv')

    train.shape, test.shape
    1
    ((3000888, 6), (28512, 5))
  • 데이터를 적재 한다

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from google.oauth2 import service_account
    import pandas_gbq

    cd = service_account.Credentials.from_service_account_file("./config/my-project-230227-c3691227da1d.json")
    project_id = 'my-project-230227'
    train_table = 'kaggle_data.train'
    test_table = 'kaggle_data.test'
    train.to_gbq(train_table,project_id,if_exists='replace',credentials=cd)
    test.to_gbq(test_table,project_id,if_exists='replace',credentials=cd)
    print('migration complete')

  • GCP에 들어가서 확인해 본다

  • 이렇게 테이블을 gcp에 적재하면 데이터들을 다양한 방면으로 사용이 가능하다: Looker Studio를 이용한 시각화


Share