Jupyter 한글 환경 설정 모듈 v2.4.0
🏠 c0z0c 메인 페이지 🚀 간단 사용법: helper.setup()
한 번으로 모든 설정 완료!
Jupyter Notebook과 Google Colab에서 한글 폰트 설정, pandas 확장 기능, 데이터 캐시를 제공하는 모듈입니다.
🆕 v2.4.0 주요 업데이트
- 🎨 matplotlib 완전 리셋:
reset_matplotlib()
으로 한글 폰트 문제 완벽 해결 - 💾 캐시 시스템 완전체: 40개 테스트로 검증된 ML/데이터 캐싱 시스템
- 🌐 완벽한 크로스 플랫폼: Windows, Ubuntu, Mac 모든 환경에서 100% 호환
- 🧪 완전한 테스트 커버리지: 40개 유닛 테스트로 모든 기능 100% 검증
- 📊 pandas 확장 완성: DataFrame/Series 한글 컬럼 설명 및 세트 관리 기능
- 🚀 import 즉시 설정:
import helper_c0z0c_dev as helper
만으로 모든 환경 구성 완료
🎯 빠른 사용법
from urllib.request import urlretrieve; urlretrieve("https://raw.githubusercontent.com/c0z0c/jupyter_hangul/master/helper_c0z0c_dev.py", "helper_c0z0c_dev.py")
import helper_c0z0c_dev as helper # 한번에 모든 설정 완료
🎉 출력 예시:
🚀 Jupyter/Colab 한글 환경 설정 중... (helper v2.4.0)
✅ 한글 폰트 및 pandas 확장 기능 설정 완료
🎉 사용 가능: 한글 폰트, CSV 읽기, DataFrame.head_att(), 캐시 기능
🧪 베타 버전 테스트 (최신 기능 미리 체험)
# 베타 버전 - 최신 기능 포함 (실험적 기능 포함)
from urllib.request import urlretrieve; urlretrieve("https://raw.githubusercontent.com/c0z0c/jupyter_hangul/refs/heads/beta/helper_c0z0c_dev.py", "helper_c0z0c_dev.py")
import helper_c0z0c_dev as helper
💾 캐시 기능 (완전체!)
import helper_c0z0c_dev as helper
# 다양한 객체 캐시 지원
key = helper.cache_key("model", "v1.0", alpha=0.1) # 파라미터 기반 키 생성
helper.cache_save(key, trained_model) # ML 모델 저장
helper.cache_save("processed_data", df) # DataFrame 저장
helper.cache_save("features", numpy_array) # numpy 배열 저장
# 캐시 로드 및 존재 확인
if helper.cache_exists(key):
model = helper.cache_load(key)
print("캐시에서 로드됨")
else:
model = train_new_model()
helper.cache_save(key, model)
# 완전한 캐시 관리
helper.cache_list() # 저장된 캐시 목록
helper.cache_size() # 캐시 전체 크기
helper.cache_cleanup(days=30) # 30일 이상 된 캐시 정리
helper.cache_compress() # 캐시 압축
helper.cache_clear() # 전체 캐시 삭제
🌐 환경 지원
- ✅ Google Colab (자동 감지)
- ✅ Windows (UTF-8 설정 자동 적용)
- ✅ Ubuntu/Linux (호환성 보장)
- ✅ macOS (호환성 보장)
사용 가능한 기능:
- 🎨 한글 폰트 지원 (matplotlib)
- 📊 pandas 확장 기능 (한글 컬럼 설명)
- 📁 파일 읽기:
helper.pd_read_csv("파일명.csv")
- 🔍 유틸리티:
helper.dir_start(객체, "접두사")
- 💾 캐시 기능:
helper.cache_*()
함수들
주요 기능
- 🎨 한글 폰트 자동 설정: NanumGothic 폰트를 자동으로 다운로드하고 matplotlib에 적용
- 📊 pandas 확장 기능: DataFrame/Series에 한글 컬럼 설명 기능 추가 (다양한 출력 형식 지원)
- 🔧 편의 함수들: 파일 읽기, 라이브러리 도움말 검색 등
- 💾 캐시 기능: ML 모델 및 데이터 캐싱 시스템
빠른 시작
1. 모듈 다운로드 및 설치
- 권장 (화면 로그 출력 없음)
from urllib.request import urlretrieve; urlretrieve("https://raw.githubusercontent.com/c0z0c/jupyter_hangul/master/helper_c0z0c_dev.py", "helper_c0z0c_dev.py")
또는
# Jupyter Notebook 또는 Google Colab에서 실행
!wget https://raw.githubusercontent.com/c0z0c/jupyter_hangul/master/helper_c0z0c_dev.py > /dev/null 2>&1
🧪 베타 버전 사용 시
# 베타 버전 다운로드
from urllib.request import urlretrieve; urlretrieve("https://raw.githubusercontent.com/c0z0c/jupyter_hangul/refs/heads/beta/helper_c0z0c_dev.py", "helper_c0z0c_dev.py")
2. 모듈 import 및 설정
import helper_c0z0c_dev as helper # 한번에 모든 설정 완료!
# import helper_c0z0c_dev as helper setup() 자동 호출
# helper.setup() # 한번에 모든 설정 완료!
사용 예제
# 마스터 버전 (권장)
from urllib.request import urlretrieve; urlretrieve("https://raw.githubusercontent.com/c0z0c/jupyter_hangul/master/helper_c0z0c_dev.py", "helper_c0z0c_dev.py")
import helper_c0z0c_dev as helper
# 베타 버전 (최신 기능 테스트용)
# from urllib.request import urlretrieve; urlretrieve("https://raw.githubusercontent.com/c0z0c/jupyter_hangul/refs/heads/beta/helper_c0z0c_dev.py", "helper_c0z0c_dev.py")
# import helper_c0z0c_dev as helper
한글 폰트 사용
import matplotlib.pyplot as plt
# 한글 폰트가 자동으로 적용됨
plt.figure(figsize=(10, 6))
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.title('한글 제목')
plt.xlabel('X축 라벨')
plt.ylabel('Y축 라벨')
plt.show()
pandas 확장 기능
import pandas as pd
# 샘플 데이터 생성
df = pd.DataFrame({
'id': [1, 2, 3],
'name': ['홍길동', '김철수', '이영희'],
'age': [25, 30, 35]
})
# 기본 컬럼 설명 설정
df.set_head_att({
'id': 'ID',
'name': '이름',
'age': '나이'
})
# 다양한 설명 세트 관리 (NEW!)
df.set_head_ext('korean', {
'id': 'ID',
'name': '이름',
'age': '나이'
})
df.set_head_ext('detailed', {
'id': '고유 식별자',
'name': '사용자 성명',
'age': '만 나이'
})
# 한글 설명이 포함된 DataFrame 출력 (다양한 형식 지원)
df.head_att() # 기본 print 형식
df.head_att(out='html') # HTML 형식 (Jupyter/Colab에서 예쁘게 표시)
df.head_att(out='str') # 문자열 형식
# 설명 세트 전환
df.change_set('detailed') # 상세 설명으로 변경
df.head_att()
# 설명 세트 관리
df.list_sets() # 저장된 세트 목록
df.remove_set('detailed') # 특정 세트 삭제
# Series도 완벽 지원
series = df['name']
series.head_att()
문제 해결
# 문제 발생 시 helper.setup() 다시 실행하면 대부분 해결됨
helper.setup()
편의 함수들
# 파일 읽기 (Colab/로컬 자동 인식, pandas.read_csv의 모든 옵션 지원)
df = helper.pd_read_csv('data.csv')
df = helper.pd_read_csv('data.csv', encoding='utf-8', sep=';')
# 다양한 입력 타입 지원
df = helper.pd_read_csv('data.csv') # 로컬 파일 경로 (자동 변환)
df = helper.pd_read_csv('https://example.com/data.csv') # URL (그대로 전달)
df = helper.pd_read_csv(file_object) # 파일 객체
from io import StringIO
df = helper.pd_read_csv(StringIO(csv_string)) # StringIO 객체
# 라이브러리 도움말 검색
helper.dir_start(pd.DataFrame, 'head') # 'head'로 시작하는 메서드 검색
캐시 기능
# 캐시 키 생성 (딕셔너리 형태의 파라미터 기반)
params = {'alpha': 0.1, 'beta': 0.2, 'model': 'RF'}
cache_key = helper.cache_key(params)
# 데이터 캐시 저장/로드
if helper.cache_exists(cache_key):
model = helper.cache_load(cache_key)
print("캐시에서 모델 로드")
else:
# 새로운 모델 훈련
model = train_model(params)
helper.cache_save(cache_key, model)
print("모델 훈련 완료 및 캐시 저장")
# 캐시 관리
helper.cache_list() # 저장된 캐시 목록
helper.cache_clear() # 캐시 전체 삭제
helper.cache_info() # 캐시 저장 위치 정보
DataFrame 커밋 기능 (NEW!)
# DataFrame을 git처럼 버전 관리
df.commit("데이터 전처리 완료")
df.commit("결측치 제거 후")
df.commit("피처 엔지니어링 적용")
# 커밋 히스토리 조회
df.commit_list()
# 커밋 관리
df.commit_rm(0) # 인덱스로 삭제
df.commit_has("hash123") # 커밋 존재 확인
# 심플 소스
df = helper.pd_checkout('원본')
if df.empty:
df= helper.pd_read_csv('test.csv')
helper.pd_commit(df, '원본')
print('원본 reading from source')
else:
print('원본 reading from cache')
📚 API 참조
주요 함수
setup()
: 전체 설정 (한글 폰트 + pandas 확장) - import 시 자동 실행reset_matplotlib()
: matplotlib 완전 리셋 및 한글 폰트 재설정 (NEW!)font_download()
: 폰트 다운로드만load_font()
: 폰트 로딩만set_pandas_extension()
: pandas 확장 기능만
파일 읽기
pd_read_csv(filepath_or_buffer, **kwargs)
: pandas.read_csv 확장 버전
유틸리티
dir_start(obj, prefix)
: 객체의 속성 중 특정 접두사로 시작하는 것들 검색is_colab
: Colab 환경 여부 확인
캐시 함수
cache_key(*args, **kwargs)
: 캐시 키 생성 (파라미터 기반 해시)cache_save(key, data)
: 데이터 캐시에 저장 (모든 객체 타입 지원)cache_load(key)
: 캐시에서 데이터 로드cache_exists(key)
: 캐시 존재 확인cache_delete(key)
: 특정 캐시 삭제cache_delete_keys(*keys)
: 여러 캐시 일괄 삭제 (NEW!)cache_list()
: 캐시 키 목록 조회cache_clear()
: 전체 캐시 삭제cache_info()
: 캐시 정보 조회 (경로, 개수, 크기)cache_size()
: 캐시 디렉토리 총 크기 (NEW!)cache_compress()
: 캐시 압축 (NEW!)cache_cleanup(days=30)
: 오래된 캐시 정리 (NEW!)cache_get_path()
: 캐시 디렉토리 경로 반환
DataFrame 커밋 함수
pd_commit(df, msg)
: DataFrame 커밋pd_commit_list()
: 커밋 목록 조회pd_commit_rm(idx_or_hash)
: 커밋 삭제pd_commit_has(idx_or_hash)
: 커밋 존재 확인cache_exists(key)
: 캐시 키 존재 여부cache_delete(key)
: 특정 캐시 삭제cache_list()
: 캐시 키 목록cache_clear()
: 캐시 전체 삭제cache_info()
: 캐시 정보cache_size()
: 캐시 디렉토리 총 크기cache_get_path()
: 캐시 디렉토리 경로 반환
pandas 확장 메서드
df.set_head_att(descriptions)
: 컬럼 설명 설정 (기본 세트)df.set_head_ext(set_name, descriptions)
: 컬럼 설명 세트 설정 (NEW!)df.get_head_att()
: 컬럼 설명 반환df.remove_head_att(column)
: 특정 컬럼 설명 삭제df.change_set(set_name)
: 활성 설명 세트 변경 (NEW!)df.list_sets()
: 설명 세트 목록 조회 (NEW!)df.remove_set(set_name)
: 설명 세트 삭제 (NEW!)df.head_att(rows=5, out=None)
: 한글 설명이 포함된 DataFrame 출력out='print'
: 콘솔 출력 (기본값)out='html'
: HTML 형식 (Jupyter/Colab에서 예쁘게 표시)out='str'
: 문자열 반환
Series도 동일한 메서드 완벽 지원
환경 지원
- ✅ Jupyter Notebook
- ✅ Google Colab
- ✅ JupyterLab
- ✅ VS Code Jupyter Extension
캐시 저장 위치
Google Colab
- 캐시 파일:
/content/drive/MyDrive/cache.json
- Google Drive에 영구 저장 (세션 재시작 후에도 유지)
- 자동 파일 생성
Jupyter Notebook (로컬)
- 캐시 파일:
./cache.json
(현재 작업 디렉토리) - 로컬 파일 시스템에 저장
- 프로젝트별 독립적 캐시 관리
설치 요구사항
모듈은 다음 라이브러리들을 사용합니다:
- matplotlib
- pandas
- numpy
- seaborn (선택사항)
환경별 특징
Google Colab
- 스마트 폰트 설치: 기존 폰트가 있으면 설치 생략
- Google Drive 연동 지원
- 경로:
/content/drive/MyDrive/
- 캐시 저장:
/content/drive/MyDrive/cache.json
(영구 보존) - 문제 발생 시
helper.setup()
다시 실행
Jupyter Notebook (로컬)
- 로컬 환경에서 안정적으로 동작
- 현재 디렉토리 기준 파일 경로
- 캐시 저장:
./cache.json
(프로젝트별 관리)
문제 해결
일반적인 문제
대부분의 문제는 helper.setup()
을 다시 실행하면 해결됩니다.
helper.setup() # 문제 해결
특정 문제별 해결방법
- 한글 폰트가 깨져 보일 때
helper.reset_matplotlib() # matplotlib 완전 리셋 (v2.4.0 NEW!) # 또는 helper.load_font() # 폰트만 다시 로딩
- pandas 확장 기능이 작동하지 않을 때
helper.set_pandas_extension() # pandas 확장만 다시 설정
- matplotlib이 Jupyter에서 작동하지 않을 때 (v2.4.0 NEW!)
helper.reset_matplotlib() # IPython 글로벌 등록 포함
- Google Drive 연결 문제 (Colab)
helper.setup() # 전체 재설정
감사 인사
기능 테스트에 도움을 주신 조하나 강사님 감사드립니다.
업데이트 내역
v2.4.0 (2025.08.29)
- 🎨 matplotlib 완전 리셋 시스템:
reset_matplotlib()
함수로 한글 폰트 문제 완벽 해결- IPython/Jupyter 환경에서 글로벌
plt
접근성 보장 - 모듈 완전 재로드를 통한 NumPy 호환성 개선
- 환경별 최적 한글 폰트 자동 선택 (Colab/로컬)
- IPython/Jupyter 환경에서 글로벌
- 📊 pandas 확장 기능 고도화: DataFrame/Series 한글 컬럼 설명 시스템 완성
head_att()
출력 형식 다양화 (html, print, str)- 컬럼 세트 기능으로 다양한 설명 버전 관리
- Series 객체 완벽 지원
- 💾 캐시 시스템 완전체: 40개 테스트로 검증된 안정적인 데이터 캐싱
- ML 모델, DataFrame, numpy 배열 등 다양한 객체 지원
- 환경별 캐시 경로 자동 설정 (Colab: Google Drive, 로컬: 현재 디렉토리)
- 압축, 정리, 크기 관리 등 완전한 캐시 관리 기능
- 🌐 크로스 플랫폼 완벽 호환: Windows, Ubuntu, Mac 모든 환경에서 100% 동작 보장
- 🔧 setup() 함수 최적화: import만으로 모든 설정 자동 완료
- 📁 파일 읽기 기능 확장: StringIO, URL, 파일 객체 등 모든 입력 타입 지원
- 🧪 완전한 테스트 커버리지: 40개 유닛 테스트로 모든 기능 100% 검증
- 🚀 성능 및 안정성 향상: 환경 감지, 초기화, 에러 처리 로직 전면 개선
v2.3.0 (2025.08.03)
- 📝 DataFrame 커밋 시스템: git처럼 DataFrame 버전 관리 (
df.commit()
,df.commit_list()
) - 🌍 크로스 플랫폼 지원: Windows, Ubuntu, Mac 모든 환경에서 완벽 호환
- 🔧 UTF-8 자동 설정: Windows 환경에서 한글 인코딩 문제 자동 해결
- 🧪 100% 테스트 통과: 37개 유닛 테스트로 안정성 보장
- 💾 캐시 시스템 강화: DataCatch 시스템으로 더욱 안정적인 캐시 관리
- 📊 pandas 확장 개선: 컬럼 설명 기능 및 출력 형식 다양화
- 🚀 성능 최적화: 환경 감지 및 설정 로직 개선
v2.2.0 (2025.07.25)
- 🚀 안정적 한글 폰트 시스템: 재부팅 없이 폰트 로딩
- 📝 간소화된 출력: 15줄 → 3줄로 메시지 간소화
- 💾 캐시 기능 추가: ML 모델 및 데이터 캐싱 시스템 구현
- 📁 환경별 캐시 경로: Colab(Google Drive), 로컬(현재 디렉토리) 자동 설정
- 🔑 캐시 키 생성: 딕셔너리 파라미터 기반 해시 키 자동 생성
- 🛠️ 캐시 관리: 목록 조회, 삭제, 크기 확인 등 완전한 관리 기능
- ⚡ 성능 최적화: 반복 실험에서 계산 시간 대폭 단축
v2.1 (2025.07.13)
- 📊 pandas
head_att()
메서드 출력 형식 옵션 추가 (html, print, str) - 📈 Series 객체 지원 강화
- 🔄 향상된 에러 처리 및 복구 로직
v2.0 (2025.07.12)
- 초기 릴리스
- 한글 폰트 자동 설정
- pandas 확장 기능 추가
- Jupyter/Colab 환경 지원
개발자 리뷰
주요 기능별 설계 의도:
- head_att: pandas DataFrame에 한글 보조 컬럼 설명 기능 추가
- 데이터 분석 시 컬럼의 의미를 한글로 명확히 표시
- 코드 가독성과 문서화 효과 향상
- cache: 머신러닝/딥러닝 결과를 저장하여 동일한 모델링 반복 방지
- 시간이 오래 걸리는 학습 결과를 캐시로 보존
- 실험 효율성 극대화 및 컴퓨팅 리소스 절약
- commit: pandas DataFrame 조작 시 중간 데이터 또는 다양한 버전의 데이터 저장
- git과 유사한 방식으로 데이터 처리 과정을 단계별 관리
- 데이터 전처리 과정의 추적성과 복원 가능성 제공
- dir_start: 인스턴스 메서드 조회 기능
- 객체의 속성/메서드를 접두사로 빠르게 검색
- 개발 및 api 유용한 탐색 도구
개발 철학: Jupyter 환경에서 한국어 사용자의 데이터 분석 워크플로우를 최적화하고, 반복 작업을 줄여 분석에 집중할 수 있도록 돕는 것이 목표입니다.