Python/Jupyter Notebook

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

찐남 2023. 5. 27. 23:52

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 환경에서 작업하는 동안 

이 두 가지 트릭을 통해 

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

반응형