본문 바로가기

정리/데이터 분석

[R, Python] 클립보드 사용법

728x90

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 클립보드



위에는 R을 수행한 결과이고

다음은 Python에서 수행한 결과입니다.

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 사이에서 데이터를 주고 받는 다는 것을 의미합니다.
위에 제공된 방법들도 모두 동일합니다.