데이터 과학에 필요한 프로그래밍 언어로 R과 파이썬이 경쟁을 한동안 했다면 이제 그 세월도 흘러 데이터 과학을 R과 파이썬을 적절히 잘 활용하는 시점으로 변경이 되었다. 데이터 과학에 필수적으로 요구되는 몇가지 구성요소로 다음이 있다. 프로그래밍 언어, 통합개발환경(코드 편집기), 버전 제어 및 형상관리, 공유와 협업이 대표적으로 요구되는 사항이다.
RStudio 통합개발환경 즉, 코드 편집기에서 파이썬을 연결하기 위해서는 Miniconda를 설치하여 파이썬과 파이썬 팩키지 관리자(conda
)를 함께 설치한다. Git and Bash도 설치하여 윈도우에서 리눅스 터미널을 사용할 수 있도록 CLI 환경을 일치시킨다.
RStudio와 R을 윈도우에 설치하는 것은 R을 설치하게 되면 RStudio에서 자동으로 인식해 RStudio와 R 설치는 CRAN R 최신 버전을 다운로드 받아 설치한다.
~/.bash_profile
파일을 편비하여 R이 설치된 경로를 지정하여 Git Bash 터미널에서 R을 실행할 수 있도록 한다.
# 경로에 R과 Rscript 추가
"/c/Program Files/R/R-4.0.2/bin/x64":$PATH export PATH=
~/.bash_profile
작업을 통해서 Git Bash 터미널에서 R 경로명을 등록시켜 R을 Git Bash와 연결시키는 작업을 완수했다.
RStudio 터미널과 Git Bash 터미널을 연결시켜 두면 추후 생길 수 있는 터미널 혼선을 막을 수 있다. 이를 위해서 Tools
→ Global Options
→ Terminal
에서 Shell을 Git Bash로 설정한다.
Custom
C:/Program Files/Git/bin/bash.exe
-l
상기 작업 실행결과 RStudio 터미널이 Git Bash 터미널로 일원화 되었다.
미니콘다 Miniconda를 설치했기 때문에 파이썬과 팩키지 관리자(conda
)가 동시에 설치가 되었다. 파이썬과 R을 연결해주는 팩키지가 reticulate
로 install.packages("png")
와 install.packages("reticulate")
명령어로 설치를 하게 되면 기본준비는 되었다. 이제 usethis::edit_r_profile
명령어를 R 콘솔에서 쳐서 .Rprofile
파일에 Sys.setenv(RETICULATE_PYTHON = "C:\\Users\\사용자명\\miniconda3\\python.exe")
을 설정하여 파이썬을 돌릴 수 있도록 준비를 한다. 참고로 .Rprofile
파일은 ~/Documents/.Rprofile
에 위치한다.
python
코드 덩어리를 만들어 헬로월드를 찍어 R마크다운 문서에 파이썬을 실행할 수 있음을 확인한다.
print("Hello World! 2+3 = ", 2+3)
Hello World! 2+3 = 5
아나콘다가 아닌 miniconda
를 기본 파이썬 엔진으로 사용할 경우 아나콘다에 포함된 팩키지들이 빠져있어 별도 설치를 해야 한다. pandas
, matplotlib
이 대표적인다.
파이썬 팩키지 관리자로 conda
를 사용하는 경우 conda install 팩키지명
을 사용하여 원하는 파이썬 팩키지를 설치할 수 있다. matplotlib
의 경우 QT
의존성이 있어 pyqt5
도 함께 설치한다.
conda install pandas
conda install pyqt5
conda install matplotlib
QT
를 설치한 후에 환경변수로 등록하는 작업이 함께 수반되어야 한다. 간단히 다음 코드를 사용해서 matplotlib
그래프를 그릴 때 사용하는 QT
라이브러리를 환경변수에서 참고하여 시각화시키는데 도움을 준다.
library(reticulate)
py_run_string("import os as os")
py_run_string("os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = 'C:/Users/사용자명/miniconda3/Library/plugins/platforms'")
RStudio IDE 를 가지고 윈도우 10 환경에서 R과 파이썬을 데이터 과학 주 언어로 사용하는 사례를 살펴보자.
tidyverse
에 대응되는 대표적인 데이터 과학 팩키지가 pandas
다. import
명령어로 가져온다.
파이썬
import pandas as pd
R/Tidyverse
library(tidyverse)
판다스 pd.read_csv()
메쏘드가 파일 데이터를 메모리로 불러읽어 데이터 과학 작업을 수행할 수 있도록 준비한다. tidyverse
에는 read_csv()
명령어가 이에 상응한다.
파이썬
= pd.read_csv("data/titanic.csv") titanic
R/Tidyverse
read_csv("data/titanic.csv") titanic_tbl <-
파이썬은 matplotlib
라이브러리를 통해 판다스 데이터프레임을 시각화한다. R은 ggplot
으로 그래프 문법에 맞춰 시각화를 한다.
파이썬
='age', y='fare', alpha=0.3) titanic.plot.scatter(x
R/Tidyverse
%>%
titanic_tbl ggplot(aes(x = age, y = fare)) +
geom_point(alpha = 0.3)
판다스 데이터프레임이나 R 티블(tibble) 데이터프레임은 직사각형 테이블 데이터이기 때문에 SQL 쿼리문에 대응되는 문법에 맞춰 데이터를 조작할 수 있다. 사례로 칼럼을 선택하는 경우를 비교해보자.
파이썬
"age", "fare"]] titanic[[
age fare
0 29.0000 211.3375
1 0.9167 151.5500
2 2.0000 151.5500
3 30.0000 151.5500
4 25.0000 151.5500
... ... ...
1304 14.5000 14.4542
1305 NaN 14.4542
1306 26.5000 7.2250
1307 27.0000 7.2250
1308 29.0000 7.8750
[1309 rows x 2 columns]
R/Tidyverse
%>%
titanic_tbl select(age, fare)
# A tibble: 1,309 x 2
age fare
<dbl> <dbl>
1 29 211.
2 0.917 152.
3 2 152.
4 30 152.
5 25 152.
6 48 26.6
7 63 78.0
8 39 0
9 53 51.5
10 71 49.5
# ... with 1,299 more rows
칼럼이 아니고 행을 필터(filtering)를 걸어 추출하는 사례를 살펴보자. 예를 들어 나이가 70 이상인 타이나틱호 승선인을 추출해보자.
파이썬
"age"] > 70] titanic[titanic[
pclass survived ... body home.dest
9 1 0 ... 22.0 Montevideo, Uruguay
14 1 1 ... NaN Hessle, Yorks
61 1 1 ... NaN Little Onn Hall, Staffs
135 1 0 ... NaN New York, NY
727 3 0 ... 171.0 NaN
1235 3 0 ... NaN NaN
[6 rows x 14 columns]
R/Tidyverse
%>%
titanic_tbl filter(age > 70)
# A tibble: 6 x 14
pclass survived name sex age sibsp parch ticket fare cabin embarked
<dbl> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <chr> <dbl> <chr> <chr>
1 1 0 Arta~ male 71 0 0 PC 17~ 49.5 <NA> C
2 1 1 Bark~ male 80 0 0 27042 30 A23 S
3 1 1 Cave~ fema~ 76 1 0 19877 78.8 C46 S
4 1 0 Gold~ male 71 0 0 PC 17~ 34.7 A5 C
5 3 0 Conn~ male 70.5 0 0 370369 7.75 <NA> Q
6 3 0 Sven~ male 74 0 0 347060 7.78 <NA> S
# ... with 3 more variables: boat <chr>, body <dbl>, home.dest <chr>
마지막으로 titanic
은 파이썬 객체로 이를 py$
방식으로 R에서 인식하기 때문에 시각화 함수로 ggplot
을 사용하게 되면 파이썬의 장점과 R의 장점을 함께 사용할 수 있다.
$titanic %>%
py ggplot(aes(x = age, y = fare)) +
geom_point(alpha = 0.5) +
labs(x = "탑승객 나이",
y = "탑승객 지불요금",
title = "타이타닉 탑승객 나이와 요금에 대한 산점도") +
theme_light(base_family = "NanumGothic")
데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com