데이터 과학자가 바라본 20대 총선

사전 투표율

사전 투표율 (early voting turnout)

사전 투표는 사전투표란 선거일에 투표를 할 수 없는 선거인은 누구든지 별도의 신고없이 읍·면·동마다 설치된 사전투표소에서 선거일 전 5일부터 2일간 투표할 수 있는 제도로서 2013년 상반기 재·보궐선거에서 최초 도입됨1.

전국 사전 투표율 분석 데이터

시도명 선거인수 투표자수 인구대비선거인비율 지방선거사전투표율 총선사전투표율
평균 42,100,398 4,472,492 81.5 11.5 12.19
서울특별시 8,423,654 837,130 83.8 11.1 11.61
부산광역시 2,952,961 253,396 83.9 8.9 9.83
대구광역시 2,031,478 179,239 81.6 8 10.13
인천광역시 2,379,666 222,386 81.1 11.3 10.81
광주광역시 1,158,598 158,455 78.7 13.3 15.75
대전광역시 1,214,402 136,185 80.0 11.2 12.94
울산광역시 937,421 96,221 79.8 10.7 11.98
세종특별 167,798 24,289 75.4 15.1 16.85
경기도 10,034,919 966,650 79.7 10.3 11.16
강원도 1,277,858 153,219 82.5 14.2 13.36
충청북도 1,287,549 146,411 81.2 13.3 12.85
충청남도 1,683,854 180,411 80.8 11.9 12.13
전라북도 1,520,032 233,465 81.3 16.1 17.32
전라남도 1,567,192 264,693 82.1 18 18.85
경상북도 2,242,016 282,268 82.8 13.1 14.07
경상남도 2,719,668 290,791 80.6 11.9 12.19
제주특별 501,332 47,283 79.0 11.1 10.7

1. 사전투표율 데이터 가져오기

googlesheets 팩키지를 활용하여 사전투표율 데이터를 분석하는데 엑셀을 대신하여 웹기반 스프레드쉬트를 활용한다. 사전투표율분석 파일을 생성하고 사전투표 워크쉬트에 상기 표형식 데이터를 분석한다.

t.datgooglesheet, 리스트 데이터형이고, gs_read 함수를 통해 tbl_df, 데이터프레임이다.

#================================================================
# 1. 데이터 가져오기
#================================================================
library(googlesheets)

glist <- gs_ls()

t.dat <- gs_title("사전투표율분석")
Sheet successfully identified: "사전투표율분석"
v.dat <- gs_read(t.dat, ws='사전투표')
Accessing worksheet titled '사전투표'.
No encoding supplied: defaulting to UTF-8.

2. 데이터 정제

사전투표분석을 위해 데이터프레임을 데이터 시각화를 위해 정리한다. 탐색적 데이터분석결과 세종특별자치시는 인구가 적어 상호비교를 하는데 도움이 되지 않아 제외한다.

suppressMessages(library(dplyr))
colnames(v.dat) <- c('시도','선거인수','투표자수','인구대비선거인비율','총선사전투표율','지방선거사전투표율')
v.dat <- v.dat %>%
  filter(!(시도 %in% "세종특별자치시")) 

3. 시각화

ggplot을 통해 인구대비 선거인비율(%)이 대략 82% 정도로 파악이 되고, 전국 평균과 비교하여 전라남도와 전라북도가 총선 사전투표율이 높은 반면, 대구광역시는 상대적으로 낮은 것이 시각화를 통해 드러난다.

library(ggplot2)
source("~/Dropbox/01_data_science/00-hangul-plot-setting.R") # http://freesearch.pe.kr/archives/4446 참조

ggplot(data = v.dat) + 
  aes(x=인구대비선거인비율,y=총선사전투표율) +
  geom_point() +
  geom_smooth() +
  labs(title = "지방선거사전투표율", x="인구대비 선거인비율(%)", y="총선사전투표율(%)") +
  geom_text(aes(x=인구대비선거인비율,y=총선사전투표율, label=시도), hjust=1, vjust=0, family="AppleGothic", size=3) +
  theme(plot.title = element_text(size=25, family="AppleGothic", colour="blue"),
        axis.text = element_text(size=10, family="AppleGothic"))

plot of chunk ealry_voting_visualization