Programming

Colab + Drive + Github Workflow

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

I. 동기 부여 및 개요

  • Google Colab을 알게 된 이후에, 모든 파일을 가급적 여기에서 작성을 한다.

  • Why?

    • 첫째, GPU를 무료로 사용할 수 있다.
    • 둘째, 맥북에어의 저용량을 쓰는 나에게 있어, 시스템 파일 등을 Local로 내려받는데 버거움이 있다.
    • 셋째, 온라인 강의 및 책을 협업해서 써야 하는데, 각 Local 환경을 구축하는 번거로움을 없애고 싶었다.
    • 마지막으로, 파일 공유가 가능하다.
  • 문제는 Google Colab + Drive + Github로 연동하여 소스파일을 관리해야 하는 시점이 도래했다.

Python Package Settings on Google Colab

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

I. 개요

  • 교육상, 최근 kaggle 및 국내 경진 대회에 참여할 일이 생겼다.
  • 실습을 해보니, 매번 패키지와 파일을 다운로드 받는 것이 많이 불편했다.
    • 파일을 열 때마다, !pip install name_of_package을 실행해야 하는 번거로움이 있다.
  • 이러한 해결책으로 파이썬 패키지를 Google Colab에 영구적(Permantly)으로 설치하는 것을 실습한다.

Ch17 Types of Functions

I. 구글 클라우드 설정

본격적인 빅쿼리 실습에 앞서서, Python과 연동하는 예제를 준비하였다. 빅쿼리 시작에 앞서서 선행적으로 클라우드 사용을 해야 한다.

  1. 만약 GCP 프로젝트가 없다면, 계정을 연동한다. Go to Cloud Resource Manager
  2. 그리고, 비용결제를 위한 카드를 등록한다. Enable billing
  3. 마지막으로 BigQuery API를 사용해야 하기 때문에 빅쿼리 API 사용허가를 내준다.Enable BigQuery

위 API를 이용하지 않으면 Python 또는 R과 연동해서 사용할 수는 없다. 자주 쓰는것이 아니라면 비용은 거의 발생하지 않으니 염려하지 않아도 된다. 비용관리에 대한 자세한 내용은 BigQuery 권장사항: 비용 관리에서 확인하기를 바란다.

competition - M5 EDA

강의 홍보

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

I. 개요

  • Kaggle에서 데이터를 다운로드 하는 방법에 대해서는 생략한다.
  • 본 포스트는 Google Colab을 기반으로 작성하였다.
  • Kaggle + Google Colab 데이터 연동하는 방법은 이전 포스트를 참고한다.

Ch16 Data Types - Numeric types

I. 구글 클라우드 설정

본격적인 빅쿼리 실습에 앞서서, Python과 연동하는 예제를 준비하였다. 빅쿼리 시작에 앞서서 선행적으로 클라우드 사용을 해야 한다.

  1. 만약 GCP 프로젝트가 없다면, 계정을 연동한다. Go to Cloud Resource Manager
  2. 그리고, 비용결제를 위한 카드를 등록한다. Enable billing
  3. 마지막으로 BigQuery API를 사용해야 하기 때문에 빅쿼리 API 사용허가를 내준다.Enable BigQuery

위 API를 이용하지 않으면 Python 또는 R과 연동해서 사용할 수는 없다. 자주 쓰는것이 아니라면 비용은 거의 발생하지 않으니 염려하지 않아도 된다. 비용관리에 대한 자세한 내용은 BigQuery 권장사항: 비용 관리에서 확인하기를 바란다.

Kaggle with Google Colab

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

I. 개요

  • Kaggle 대회에서 나오는 데이터의 용량은 작은 편은 아니다.
  • 성능이 적은 노트북을 사용해야 하는 경우라면 Google Colab을 사용해야 한다.
  • 이 때, Kaggle 데이터를 Google Colab으로 다운로드 받는 과정에 대해 기술 하려고 한다.

II. 캐글 계정에서 해야 할 것

  • 먼저 본인의 계정에서 API Token을 다운로드 받는다.

matplotlib - 08 Histogram

강의 홍보

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

I. Matplotlib & Seaborn

(1) 기본 개요

Matplotlib는 파이썬 표준 시각화 도구라고 불리워지며 파이썬 그래프의 기본 토대가 된다고 해도 무방하다. 객체지향 프로그래밍을 지원하므로 세세하게 꾸밀 수 있다.

Ch15 Outer Join

I. 구글 클라우드 설정

본격적인 빅쿼리 실습에 앞서서, Python과 연동하는 예제를 준비하였다. 빅쿼리 시작에 앞서서 선행적으로 클라우드 사용을 해야 한다.

  1. 만약 GCP 프로젝트가 없다면, 계정을 연동한다. Go to Cloud Resource Manager
  2. 그리고, 비용결제를 위한 카드를 등록한다. Enable billing
  3. 마지막으로 BigQuery API를 사용해야 하기 때문에 빅쿼리 API 사용허가를 내준다.Enable BigQuery

위 API를 이용하지 않으면 Python 또는 R과 연동해서 사용할 수는 없다. 자주 쓰는것이 아니라면 비용은 거의 발생하지 않으니 염려하지 않아도 된다. 비용관리에 대한 자세한 내용은 BigQuery 권장사항: 비용 관리에서 확인하기를 바란다.

R - Select Helper Functions

I. 개요

dplyr 문법에서 select에 대해 다룬다. 보통 select는 열 추출 함수로 소개되고 있다. 그런데, select 함수에는 열 추출을 할 때 도와주는 helper functions가 있는데, 간단하게 소개하고자 한다.

  • starts_with
  • ends_with
  • contains
  • matches
  • num_range
  • one_of

작은 도움이 되었기를 바란다.

II. 사전 준비

  • 본격적인 실습에 앞서서, 패키지를 로드 한다.
library(dplyr)
library(nycflights13)
  • flights 데이터셋의 변수들을 확인하자.
glimpse(flights)
## Rows: 336,776
## Columns: 19
## $ year           <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, …
## $ month          <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ day            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ dep_time       <int> 517, 533, 542, 544, 554, 554, 555, 557, 557, 558, 558,…
## $ sched_dep_time <int> 515, 529, 540, 545, 600, 558, 600, 600, 600, 600, 600,…
## $ dep_delay      <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -…
## $ arr_time       <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849…
## $ sched_arr_time <int> 819, 830, 850, 1022, 837, 728, 854, 723, 846, 745, 851…
## $ arr_delay      <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -…
## $ carrier        <chr> "UA", "UA", "AA", "B6", "DL", "UA", "B6", "EV", "B6", …
## $ flight         <int> 1545, 1714, 1141, 725, 461, 1696, 507, 5708, 79, 301, …
## $ tailnum        <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N39…
## $ origin         <chr> "EWR", "LGA", "JFK", "JFK", "LGA", "EWR", "EWR", "LGA"…
## $ dest           <chr> "IAH", "IAH", "MIA", "BQN", "ATL", "ORD", "FLL", "IAD"…
## $ air_time       <dbl> 227, 227, 160, 183, 116, 150, 158, 53, 140, 138, 149, …
## $ distance       <dbl> 1400, 1416, 1089, 1576, 762, 719, 1065, 229, 944, 733,…
## $ hour           <dbl> 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, …
## $ minute         <dbl> 15, 29, 40, 45, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, …
## $ time_hour      <dttm> 2013-01-01 05:00:00, 2013-01-01 05:00:00, 2013-01-01 …
  • 총 19개의 변수들로 구성이 되어 있는 것을 확인 할 수 있다.

III. 다양한 Helpers 응용

  • 앞서 개요에서 소개한 것처럼 순차적으로 helpers 활용한 변수추출을 진행하도록 한다.
  • 필자는 간단하게 소개하는 것이기 때문에, 어떻게 응용할지는 각자 주어진 데이터에서 다시한번 응용하는 것을 추천한다.
  • help(select)를 실행하면 더 자세히 나와 있다.

(1) starts_with

  • 변수명의 prefix를 가져오는 것이다.
  • 예를 들어 알파벳 문자 a만 가져오도록 해보자.
flights %>% select(starts_with("a")) %>% glimpse()
## Rows: 336,776
## Columns: 3
## $ arr_time  <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849, 853…
## $ arr_delay <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -14, 3…
## $ air_time  <dbl> 227, 227, 160, 183, 116, 150, 158, 53, 140, 138, 149, 158, …
  • 만약 여기에서 ar로 변경하면, air_time 변수는 추출되지 않는다.
flights %>% select(starts_with("ar")) %>% glimpse()
## Rows: 336,776
## Columns: 2
## $ arr_time  <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849, 853…
## $ arr_delay <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -14, 3…

(2) ends_with

  • starts_with의 정확히 반대되는 개념이다. 변수명의 suffix를 기준으로 변수명을 추출한다.
flights %>% select(ends_with("y")) %>% glimpse()
## Rows: 336,776
## Columns: 3
## $ day       <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
## $ dep_delay <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -1, 0,…
## $ arr_delay <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -14, 3…
  • y와 연관된 변수명은 3가지였다.
  • 그런데, 조금더 구체적으로 delay라는 글자를 기준으로 추출해보자.
flights %>% select(ends_with("delay")) %>% glimpse()
## Rows: 336,776
## Columns: 2
## $ dep_delay <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -1, 0,…
## $ arr_delay <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -14, 3…

(3) contains

  • 변수명에 특정 문자열이 있으면 추출할 때 유용하다.
  • 특정 문자열 el을 조회하는 함수를 작성하도록 한다.
flights %>% select(contains("el")) %>% glimpse()
## Rows: 336,776
## Columns: 2
## $ dep_delay <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -1, 0,…
## $ arr_delay <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -14, 3…

(4) matches

  • helper 함수 중에서 정규 표현식 입력이 가능한 유일한 helper 함수 이다.
  • 우선 아래코드를 확인해보자.
flights %>% select(matches("a{1}")) %>% glimpse()
## Rows: 336,776
## Columns: 10
## $ year           <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, …
## $ day            <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ dep_delay      <dbl> 2, 4, 2, -1, -6, -4, -5, -3, -3, -2, -2, -2, -2, -2, -…
## $ arr_time       <int> 830, 850, 923, 1004, 812, 740, 913, 709, 838, 753, 849…
## $ sched_arr_time <int> 819, 830, 850, 1022, 837, 728, 854, 723, 846, 745, 851…
## $ arr_delay      <dbl> 11, 20, 33, -18, -25, 12, 19, -14, -8, 8, -2, -3, 7, -…
## $ carrier        <chr> "UA", "UA", "AA", "B6", "DL", "UA", "B6", "EV", "B6", …
## $ tailnum        <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N39…
## $ air_time       <dbl> 227, 227, 160, 183, 116, 150, 158, 53, 140, 138, 149, …
## $ distance       <dbl> 1400, 1416, 1089, 1576, 762, 719, 1065, 229, 944, 733,…
  • a{1}는 변수명에서 a가 1번 이상 나온 것을 확인하여 추출하는 정규표현식이다.
  • 정규표현식의 관한 정리된 글을 활용하여 익히도록 한다.

(5) num_range

  • num_range는 변수명 중에서 A1, A2와 같이 코드화하여 정리하는 테이블에 변수명을 추출할 때 유용하다.
  • 아래코드를 확인해보자.
set.seed(1)
df <- data.frame(A1 = runif(10), 
                 A2 = runif(10), 
                 A3 = runif(10), 
                 A4 = runif(10), 
                 A5 = runif(10))

df %>% select(num_range('A', range = 2:4)) %>% glimpse()
## Rows: 10
## Columns: 3
## $ A2 <dbl> 0.2059746, 0.1765568, 0.6870228, 0.3841037, 0.7698414, 0.4976992, …
## $ A3 <dbl> 0.93470523, 0.21214252, 0.65167377, 0.12555510, 0.26722067, 0.3861…
## $ A4 <dbl> 0.4820801, 0.5995658, 0.4935413, 0.1862176, 0.8273733, 0.6684667, …

(6) one_of

  • one_of를 활용할 때는 vector를 응용하는데, 이 때 vector안에 있는 변수명과 매칭되는 테이블을 추출한다.
flights %>% select(one_of(c("tailnum", "year"))) %>% glimpse()
## Rows: 336,776
## Columns: 2
## $ tailnum <chr> "N14228", "N24211", "N619AA", "N804JB", "N668DN", "N39463", "…
## $ year    <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2…

VI. Reference

출처: Select/rename variables by name

Hugo - 이미지 위치 설정

I. Problem

Hugo에서 이미지를 업로드하면 자동적으로 왼쪽(Left) 정렬이 된다. 기본적으로 마크다운 내에서 html 적용은 되지 않는 문제점이 있다.

  • 아래는 기본적인 img 업로드 방식이다.
![](/img/programming/2020/05/numpy_array_creation/numpy.png)

  • 위 그림처럼 왼쪽으로 치우친 것을 볼 수 있다. 이럴 경우 어떻게 해결해야 할까? 간단하게 해결 방법을 정리하여 공유한다.

II. CSS 파일 찾기

  • 기본적으로 이미지를 핸들링 하는 것은 CSS 파일에서 해결한다. 문제는 어떤 CSS 파일을 열어야 하는지 처음에는 어려울 것이다.
  • 첫째, 대부분 hugo 개발자들이 테마를 사용하기 때문에 테마에서 css 파일을 찾는다.
    • 강사의 테마는 mainroad이며, 위 기준으로 말씀드리면 파일 경로는 아래와 .
themes/mainroad/assets/css/style.css
  • style.css 파일을 열면, 테마에 적용된 각종 css 태그들을 확인할 수 있다.

III. CSS 파일에 소스 추가

  • 다른 소스 코드는 만지지 않는다.
  • 맨 마지막에서 아래와 같은 소스코드를 입력한다.
img[src$='#center']
{
    display: block;
    margin: 0.7rem auto; /* you can replace the vertical '0.7rem' by
                            whatever floats your boat, but keep the
                            horizontal 'auto' for this to work */
    /* whatever else styles you fancy here */
}

img[src$='#floatleft']
{
    float:left;
    margin: 0.7rem;      /* this margin is totally up to you */
    /* whatever else styles you fancy here */
}

img[src$='#floatright']
{
    float:right;
    margin: 0.7rem;      /* this margin is totally up to you */
    /* whatever else styles you fancy here */
}
  • 위 코드에서 각 스타일에 맞게 margin, float 등을 css 코드에 맞게 수정 변환하면 된다.
  • 수정하였다면 이제 저장한뒤, 작성중인 마크다운으로 다시 돌아간다.

IV. Markdown 파일에의 적용.

  • 이제 적용해보자. 적용하는 것은 어렵지 않다. 이미지 경로 마지막에 #center, #floatleft, #floatright 등을 입력하면 된다.
![](/img/programming/2020/05/image_center/your_image.png#center) # floatleft, floatright
  • #center의 예시