R과 Python 에서 Clipboard를 활용하는 방법에 대해서 알아보겠습니다.
[목차]
1. DataFrame R to Clipboard , Clipboard to Python 복사하기
2. Chrome Clipboard to R , Python
3. R과 Python 사이에 데이터 공유
1. DataFrame R to Clipboard , Clipboard to Python 복사하기
R에서 DataFrame 데이터를 clipboard로 복사하고 이를 Python의 DataFrame으로 입력하려면 몇 가지 단계를 거쳐야 합니다. 다음은 R과 Python을 연결하여 이 작업을 수행하는 방법입니다.
이런 경우는 별도의 파일로 데이터 공유하지 않고 메모리 상으로만 데이터를 공유한 셈이 되는 겁니다.
먼저 R to Clipboard 입니다.
다음은 Python에서 Clipboard 데이터를 읽고 DataFrame으로 변환하는 과정입니다.
Python에서는 pandas 라이브러리를 사용하여 clipboard로부터 데이터를 읽고 DataFrame으로 변환할 수 있습니다. 아래는 이 과정을 보여주는 Python 코드입니다.
2. Chrome Clipboard to R , Python
크롬 화면에서 위와 같이 영역을 선택하고 복사(Ctrl+c)를 했을 때
아래처럼 clipboard에 대해 read.csv, read.table, read.table(sep="\t")
이 함수들을 수행을 해봤습니다.
결과는 맨 마지막 read table sep="\t" 만 정상적으로 수행이 됐습니다.
위에는 R을 수행한 결과이고
다음은 Python에서 수행한 결과입니다.
3. R과 Python 사이에 데이터 공유
위와 같은 내용을 봤을 때 분명 데이터 공유가 가능할 것으로 보입니다.
일단 R에서 saveRDS 로 Clipboard에 복사해보려 했지만 이는 불가능 했습니다.
write.table 을 써도 공유가 가능한 데이터 형식이 있고 안되는 데이터가 있습니다.
예를 들어 seperator가 \t 인 경우엔 가능합니다. csv 나 다른 포맷들이 그런 경우겠죠?
첫번째 찾은 방법은 feather 입니다.
feather R과 Python 간에 상호 교환이 가능한 빠른 읽기/쓰기 형식으로 데이터프레임을 쓰기 위한 Python 라이브러리입니다.
feather 는 Data Frame 을 같이 쓰기 위한 라이브러리입니다.
두번째 찾은 방법은 rpy2 입니다.
rpy2 는 rpy2는 Python 프로세스에 포함되어 실행되는 R에 대한 인터페이스입니다.
이 프로젝트는 성숙하고 안정적이며 널리 사용됩니다.
rpy2-arrow 는 이 패키지를 사용하면 동일한 프로세스 내에서
Python과 R 간에 Apache Arrow 데이터 구조
(Array, ChunkedArray, Field, RecordBatch, RecordBatchReader, Table, Schema)를
공유할 수 있습니다
사용 예제는
https://rpy2.github.io/rpy2-arrow/version/main/html/conversion.html#faster-pandas-r-conversions
에서 확인 가능합니다.
사실 두 언어간 (각각은 다르게 실행되는 프로세스이므로 프로세스간 데이터 공유라고 할 수 있음)간 데이터를 공유한다는 것이 1)주소를 같이 쓴다는 것인지 2) 프로세스간 통신을 한다는 것
인지 확실히 해야합니다. 일반적으로 OS관점에서 프로세스간 데이터 공유라하면
프로세스 간 통신 (IPC)을 통해서 데이터를 송수신 하는 것을 말합니다. 따라서 r 과 python 사이에 데이터를 공유 한다는 말은 r과 OS, OS 와 Python 사이에서 데이터를 주고 받는 다는 것을 의미합니다.
위에 제공된 방법들도 모두 동일합니다.
'정리 > 데이터 분석' 카테고리의 다른 글
[R] Reshape package 를 이용한 melt, cast (0) | 2023.11.16 |
---|---|
[R, Python] Selenium 크롤링 (사이트 정보 긁어오기) (0) | 2023.11.07 |
[R] 비트코인 볼린져 밴드, 존버 Back Test (0) | 2019.10.27 |
[R] 비트코인의 변동성을 분석해보자 (0) | 2018.11.11 |
[R] 비트코인 트랜드 제거하기 (0) | 2018.11.07 |