본문 바로가기
Python/Jupyter Notebook

작업 시간을 절약할 수 있는 두 가지 킬러 Jupyter Hacks

by 찐남 2023. 5. 27.

Jupyter 노트북은 단순하고 능률적이며,

초보자에게 친숙하고 매끄러운 디자인으로 인해

오늘날 모든 Python 지향 작업에

거의 필수 불가결한 에디터입니다.

돌이켜 생각해 보면 Jupyter와 같은 

Interactive Python(IPython) 도구가 없는 

코딩은 상상조차 할 수 없습니다.

 

기본적으로 IPython의 가장 중요한 장점은 

커널이 활성화되어 있는 동안 

개체를 메모리에 유지하여 

스크립트를 다시 실행하는 

마찰을 줄이는 것입니다.

또한 Jupyter는 일반적인 프로토타이핑 

목적으로도 선호됩니다.

이를 통해 데이터 정리, 변환 및 시각화, 수치 시뮬레이션, 

통계 모델링, 기계 학습 등과 같은 작업을 

비교적 쉽게 수행할 수 있습니다.

그러나 단순성으로 인해 개발자는 

프로젝트의 두 가지 기본 기둥인 

시간과 계산 비용을 모두 소모하는 

의도하지 않은 몇 가지 일반적인 실수를

저지르는 경향이 있습니다.

따라서 이번 포스팅에서는

거의 모든 Jupyter 사용자가 저지르는

두 가지 실수를 공유할 것입니다.

 

그것으로 시간을 엄청나게 절약할 수 있는

아주 우아한 해결책을 제시할 것입니다.

그럼 시작하겠습니다!

 

 

첫 번째 실수

Jupyter에서 코드를 작성했지만 

계산 후 변수에 할당하는 것을 

잊어버린 상황에 처한 적이 있지 않습니까?

그런 상황에서 셀을 마지못해 다시 실행하고

결과를 생성하여 변수에 할당해야 합니다.

저도 여러 번 겪었던 실수이기에

많은 공감을 느낍니다.

 

해결책은?

이것에 대한 좋은 해결책이 있다면 어떨까요?
Jupyter에서 셀을 실행하면

In [2]: besides the cell, 그렇지 않나요?

마찬가지로 셀의 출력 패널 외에 

다른 것도 볼 수 있습니다. 

보다 구체적으로 Out[3]:으로 표시됩니다.

 

IPython에서 

 

Out은 output-id와 cell-output의 매핑을 저장하는 

표준 파이썬 딕셔너리입니다. 

 

In은 실행된 코드를 순서대로 저장하는 

Python 리스트입니다.

 

유형은 다음과 같이 확인할 수 있습니다.

 

따라서 ouput을 변수에 할당하는 것을 잊은 경우

Out 딕셔너리를 사용하고

Output 패널 옆에 나타나는

output-id를 전달할 수 있습니다.

 

예를 들어 위의 groupby 출력에서 

Out[3]을 사용하여 결과를 검색할 수 있습니다.

 

굉장히 멋지지 않나요?

 

 

두 번째 실수

Jupyter 노트북에서 작업하는 동안

몇 가지 이유로 커널을 다시 시작해야 하는

상황이 발생할 수 있습니다.

 

그러나 다시 시작하기 전에 후속 실행에서

데이터 개체를 다시 계산하지 않기 위해

데이터 개체를 디스크에 덤프 하는 경향이 있습니다.

이것은 시간이 많이 걸리는 과정입니다. 

또한 중요한 각 데이터 개체를 

개별적으로 저장하는 것은 

상당히 번거로운 작업입니다.

 

해결책은?

"store" 명령은

이에 대한 이상적인 솔루션 역할을 합니다.

여기에서 커널을 다시 시작한 후에도

이전에 계산된 값을 얻을 수 있습니다.

또한 개체를 디스크에 덤프하는 

번거로움을 겪을 필요가 없습니다.

 


아래 코드에서 확인할 수 있습니다.

커널을 다시 시작해 보겠습니다.

 

위와 같이 store 명령을 사용하면

커널을 다시 시작한 후에도

이전에 계산된 값을 검색할 수 있습니다.

요약하면 다음 단계입니다.

1단계: %store를 사용하여 변수를 저장합니다.

%store value

2단계: 커널을 다시 시작한 후 -r 옵션과 함께 %store를 사용합니다.

%store -r value

 

단일 %store 명령을 사용하여 

여러 값을 저장할 수도 있습니다.

 

 

결론

이것으로 이번 포스팅을 마치겠습니다.

여러분들이 Jupyter 노트북을 사용하실 때,

조금이나마 도움이 되었으면 합니다. 

대화형 Python 환경에서 작업하는 동안 

이 두 가지 트릭을 통해 

많은 시간을 절약할 수 있다고 확신합니다.

반응형

댓글