🗄️ 데이터센터
home
주식거래 데이터
home

새로운 편집기 Marimo

마리모란?

마리모(Marimo)는 파이썬 프로그래밍을 위한 혁신적인 대화형 노트북 편집기로, 기존의 주피터 노트북이 가진 한계를 극복하고자 새롭게 개발되었습니다. 이 도구는 코드 셀 간의 실시간 상호작용과 자동 업데이트를 지원하는 반응형 프로그래밍 환경을 제공하며, 특히 데이터 과학자와 개발자들이 더욱 효율적으로 작업할 수 있도록 설계되었습니다. 기존 노트북과는 달리, 마리모는 모든 코드 셀이 서로 연결되어 있어 한 셀의 변경사항이 자동으로 관련된 다른 셀들에 즉시 반영된다는 특징이 있습니다.

마리모의 핵심 특징

반응형 프로그래밍 환경: 마리모의 가장 혁신적인 기능은 실시간 반응형 코드 실행입니다. 변수 값을 변경하면 연관된 모든 코드가 자동으로 업데이트되어, 데이터 분석과 시각화 작업이 더욱 효율적으로 이루어집니다. 코드 셀 간의 자동 의존성 관리 기능도 제공합니다. 한 셀의 함수나 변수가 수정되면, 이를 사용하는 모든 셀이 자동으로 업데이트됩니다. 이를 통해 복잡한 데이터 분석 파이프라인을 쉽게 관리할 수 있습니다.
향상된 디버깅 기능: 마리모는 실시간 오류 감지직관적인 디버깅 도구를 제공합니다. 문법 오류와 런타임 오류를 즉시 확인할 수 있으며, 변수 상태와 실행 흐름을 쉽게 파악할 수 있어 디버깅 시간을 크게 단축할 수 있습니다.
대화형 시각화: 데이터 시각화를 실시간으로 조작할 수 있습니다. 예를 들어, 그래프의 매개변수를 슬라이더로 조절하면 즉시 변화를 확인할 수 있습니다. 또한 버튼, 드롭다운 메뉴 등 다양한 위젯을 통해 사용자와 상호작용하는 대시보드를 쉽게 만들 수 있습니다.
버전 관리 통합: Git과 같은 버전 관리 시스템과 완벽하게 통합됩니다. 코드의 변경 사항을 쉽게 추적하고 관리할 수 있으며, 팀 프로젝트에서 협업이 용이합니다. 또한 각 셀의 변경 이력을 개별적으로 관리할 수 있어, 특정 기능의 개발 과정을 자세히 추적할 수 있습니다.
성능 최적화: 마리모는 메모리를 효율적으로 관리하고 필요한 셀만 실행하여 성능을 최적화합니다. 대용량 데이터셋을 처리할 때도 빠른 속도를 유지하며, 특히 데이터 과학 작업에서 중요한 메모리 사용량을 최소화합니다. 캐싱 시스템을 통해 이전 실행 결과를 재사용하여 불필요한 계산을 방지합니다.
확장 가능한 플러그인 시스템: 사용자가 직접 플러그인을 개발하여 마리모의 기능을 확장할 수 있습니다. 새로운 시각화 도구, 데이터 처리 기능, 또는 특정 업무에 필요한 도구를 쉽게 추가할 수 있습니다. 플러그인은 파이썬 패키지로 배포할 수 있어 다른 사용자와 공유도 가능합니다.

주피터 노트북과의 주요 차이점

마리모와 주피터 노트북의 가장 근본적인 차이는 코드 실행 모델에 있습니다. 주피터 노트북이 선형적이고 순차적인 실행 모델을 따르는 반면, 마리모는 반응형 실행 모델을 채택했습니다. 주피터에서는 사용자가 셀을 수동으로 실행하고, 셀 간의 의존성을 직접 관리해야 하며, 실행 순서에 따라 결과가 달라질 수 있습니다. 이는 종종 'Hidden State' 문제를 일으켜 코드의 재현성을 저해하고 디버깅을 어렵게 만듭니다.
반면 마리모는 모든 코드 셀이 서로 연결된 그래프 구조를 형성하며, 변경사항이 발생하면 자동으로 관련된 모든 셀이 업데이트됩니다. 이는 마치 스프레드시트처럼 작동하여, 데이터의 흐름을 더 명확하게 파악할 수 있고 코드의 재현성도 보장됩니다. 또한 마리모는 Git과 같은 버전 관리 시스템과의 통합이 더욱 자연스러워, 노트북 파일의 변경 사항을 추적하고 협업하기가 훨씬 수월합니다.
이러한 차이점은 특히 복잡한 데이터 분석 프로젝트대규모 팀 협업에서 두드러지며, 마리모가 제공하는 실시간 피드백자동화된 의존성 관리는 개발 생산성을 크게 향상시킵니다.

빠른 시작

1. 설치하기

pip install marimo
Bash
복사

2. 새 노트북 생성하기

터미널에서 다음 명령어를 실행하면 워크스페이스가 생성되면서 작업환경GUI가 브라우저로 보여집니다. 지금부터는 GUI를 사용해서 노트북을 생성할 수 있습니다.
marimo ed
Bash
복사

편의기능

1. 변수뷰어

마리모의 변수 뷰어는 실행 중인 노트북의 모든 변수 상태를 실시간으로 모니터링할 수 있는 강력한 도구입니다. 이 기능을 통해 다음과 같은 작업이 가능합니다:
모든 변수의 현재 값과 타입을 한눈에 확인
변수값의 실시간 변화 추적
복잡한 데이터 구조(딕셔너리, 리스트, 객체 등)의 계층적 탐색
대규모 데이터셋의 요약 정보 확인
변수 뷰어는 디버깅과 코드 개발 과정에서 특히 유용하며, 코드의 실행 흐름을 이해하고 데이터의 변화를 추적하는 데 도움을 줍니다.

2. SQL연동

마리모는 SQL 데이터베이스와의 원활한 통합을 지원하며, 다음과 같은 주요 기능을 제공합니다:
직관적인 SQL 쿼리 작성: 내장된 SQL 편집기를 통해 구문 강조와 자동 완성 기능을 제공합니다.
실시간 쿼리 결과 확인: SQL 쿼리 결과가 즉시 데이터프레임으로 변환되어 표시됩니다.
다양한 데이터베이스 지원: PostgreSQL, MySQL, SQLite 등 주요 데이터베이스 시스템과 호환됩니다.
데이터베이스 연결 예시
import marimo as mo import pandas as pd from sqlalchemy import create_engine # 데이터베이스 연결 engine = create_engine('postgresql://user:password@localhost:5432/dbname') # SQL 쿼리 실행 query = """ SELECT * FROM users WHERE age > 25 """ df = pd.read_sql(query, engine) # 결과 표시 mo.display(df)
Python
복사

3. 의존성맵

마리모의 의존성 맵은 노트북 내의 모든 코드 셀 간의 관계를 시각적으로 보여주는 도구입니다. 이 기능을 통해 다음과 같은 이점을 얻을 수 있습니다:
코드 흐름 파악: 셀 간의 데이터 흐름과 의존성을 시각적 그래프로 표현하여 코드의 구조를 쉽게 이해할 수 있습니다.
디버깅 용이성: 특정 셀에 문제가 발생했을 때, 영향을 받는 모든 종속 셀을 즉시 확인할 수 있습니다.
코드 최적화: 불필요한 의존성을 식별하고 제거하여 코드의 효율성을 높일 수 있습니다.
실시간 업데이트: 코드가 수정될 때마다 의존성 맵이 자동으로 업데이트되어, 항상 최신 상태의 코드 구조를 반영합니다.
의존성 맵은 특히 복잡한 데이터 분석 프로젝트나 여러 개발자가 협업하는 환경에서 코드의 구조를 명확하게 파악하고 관리하는 데 매우 유용한 도구입니다.

Marimo 홈페이지 및 깃허브