지난 포스팅에서 Beautiful Soup Library를 활용하여 작년 서울의 기온데이터를 수집했습니다. 오늘은 이 데이터를 가지고 월별로 기온이 어떻게 변했는지 그래프를 그려보겠습니다. 그래프를 그리는 방법은 다양합니다. 엑셀의 차트, 파이썬의 matplotlib 라이브러리, R의 ggplot2 패키지를 활용할 수 있습니다. 저는 R이 가장 쉽고, 편하고, 다양한 결과물을 만들어 낼 수 있어 즐겨 사용하는 편입니다.





오늘 그려볼 그래프는 R의 ggplot2를 이용해 월별 기온변화에 대한 박스플롯 그리기입니다.

데이터 정비하기

우리가 사용할 데이터는 Weather Underground에서 수집한 작년 한 해 서울의 일별 평균, 최고, 최저기온입니다. 그래프를 그리기 전에 먼저 데이터를 살펴보도록 하겠습니다. 엑셀로 데이터 파일을 불러오면 이상한 데이터들이 눈에 보입니다. 2013년 1월 12일의 평균기온이 31도로 나오는 것입니다.



Weather Underground는 기온을 섭씨와 화씨로 보여주는데, 페이지를 순회할 때 일부 페이지의 기온이 화씨로 수집된 것입니다. 이런 데이터들을 정비하기 위해 엑셀에서 온도단위를 추가해서 섭씨와 화씨로 구분했습니다. 이 중 화씨 데이터만 섭씨로 변환합니다.



화씨에서 32도를 빼고, 그 값에 5/9를 곱하면 됩니다. 변환 결과를 별도의 파일에 'converted-weather-seoul.csv'로 저장했습니다. 이렇게 기초데이터를 정확하게 체크하는 것은 너무나 중요합니다. 기초데이터가 잘못되어 있다면 어떤 분석을 하더라도 올바른 결과가 나올 수 없기 때문입니다.

converted-weather-seoul.csv

데이터 불러오기

R에서는 텍스트 데이터파일, 엑셀파일, SPSS파일의 데이터 등을 불러올 수 있습니다. 우리가 불러올 파일은 CSV형식이므로 R콘솔창에 아래와 같이 입력합니다.

seoul <- read.csv("converted-weather-seoul.csv")

이제 'converted-weather-seoul.csv'의 데이터가 'seoul'이라는 변수에 할당되었습니다.



ggplot2를 이용해 박스플롯 그리기

ggplot2는 해들리 위컴(hadley Wickham)이 만든 그래프 패키지 입니다. 범용성, 명료함, 일관성있는 인터페이스, 멋진 출력결과로 많은 R사용자로부터 사랑받고 있는 패키지 입니다. 평균기온에 대한 박스플롯을 그려보도록 하겠습니다. 단 한 줄의 코드로 아래와 같이 그래프를 그려냅니다.

meanTemp <- ggplot(seoul, aes(factor(Month), MeanTemp)) + geom_boxplot()


전체적으로는 서울의 평균기온은 1월을 최저로 8월까지 상승했다가 다시 하락함을 알 수 있습니다. 월별 기온의 분포역시 1월에는 크다가 7월에 가장 작아졌다 다시 커지는 양상을 보입니다.


박스플롯은 '상자(box)'와 '수염(whiskers)'로 구성됩니다. 상자의 하단은 평균기온의 25백분위수, 상단은 75백분위수, 상자 내부의 가로선은 50백분위수 즉 중앙값을 나타냅니다. 상자의 상단에서 하단까지의 범위를 '사분위수 범위(inter-quantile range; IQR)이라고 부립니다. 상자의 상하단 모서리로 부터 IQR의 1.5배까지 수직으로 이어져 있는 선을 수염이라고 합니다. 그리고 수염의 끝부분보다 바깥쪽에 데이터가 존재한다면 이를 이상치로 보고 까만 점으로 표시합니다. 자세한 내용은 아래 그림을 참조하시기 바랍니다.



댓글을 달아 주세요

  1. 통돌이

    ggplot2 package 설치하고 블로그하신대로 따라했는데
    > meanTemp <- ggplot(seoul, aes(factor(Month), MeanTemp)) + geom_boxplot()
    >

    에서 다시 입력창까지밖에 뜨지않습니다.. 뭐가 잘못된 걸까요?

    2014.05.02 11:49 신고 Address Modify/Delete Reply
    • ZEN

      콘솔창에 'meanTemp'라고 입력해 보시기 바랍니다.
      정상적으로 그래프가 출력됩니다. ^^

      2014.05.03 09:30 신고 Address Modify/Delete
  2. R기초

    천천히 따라서 조금씩 하고 있는 기초자입니다^^
    ggplot2 package 설치하는 방법 포스팅을 찾을 수가 없네요..ㅠㅠ

    2014.05.21 18:15 신고 Address Modify/Delete Reply
    • ZEN

      콘솔창에
      install.packages("ggplot2") 라고 입력하시면 자동으로 설치됩니다. ^^
      ggplot을 사용하시기 전에는
      library(ggplot2)로 로딩해주시고,
      업데이트 하실 때에는
      update.packages()라고 입력해 보세요
      업데이트 가능한 패키지들에 대해 업데이트 여부를 묻고,
      'Y'를 선택하면 자동으로 업데이트 됩니다.

      2014.05.22 14:43 신고 Address Modify/Delete
  3. R공부

    안녕하세요.
    저도 R studio 를 사용하려고 설치를 하였습니다.
    그런데 다음과 같은 새창이 떴고
    R code execution error
    console 창에 install.packages("ggplot2") 을 입력하니 다음과 같은 문구가 나오면서 설치가 안되더라구요.
    Error in nchar(homeDir) : invalid multibyte string, element 1
    혹시 이에 대한 원인을 알고 계시나요?ㅠㅠ
    전 Win7 64bit 를 사용 중입니다.
    R studio Version 0.99.473 이고 R 은 version 3.2.2 입니다.

    2015.08.18 17:48 신고 Address Modify/Delete Reply
    • ^^;;

      저도 같은 오류가 있었는데 윈도우 사용자 명이 한글로 되어 있어서 사용자 디렉토리가 한글로 되어있고 R에서 이걸 인식하지 못해 생기는 문제였습니다. http://blog.readiz.com/244#.VktTCVXhC70 참고해서 사용자디렉토리명을 영문으로 바꿔주니 잘 동작합니다. 다만.. 오히려 다른 프로그램에서 문제가 생길 수 있으니 이는 감안하셔야 합니다.

      2015.11.18 01:23 신고 Address Modify/Delete
  4. 노경모

    내용 참 쉽게 잘 설명해주시네요,감사합니다.
    즐겨찾기 누르고 갑니다 ^^ 자주 방문할게요

    2015.12.21 11:23 신고 Address Modify/Delete Reply
  5. 비밀댓글입니다

    2017.12.27 01:15 Address Modify/Delete Reply