카테고리:

1 분 소요

Pandas로 한글 데이터 불러오기

pandas를 통해 한글이 포함된 csv를 불러오는 방법은 아래와 같다.

import pandas as pd
df = pd.read_csv('./data.csv', sep=',', encoding='utf-8')
df.head()

인코딩의 문제가 없으므로, 해당 파일의 head 부분을 잘 불러온다.

하지만, 이를 plot()함수를 이용하여 변환시키면 아래와 같이 인코딩이 깨져 네모로 표현된다.

인코딩이 깨져 헤드 부분의 텍스트가 제대로 표현되지 않은 화면

해결 방법

기본적으로 Ubuntu에는 나눔글꼴이 설치되어 나오나, JupyterHub Docker Image에는 나눔글꼴이 설치되어 있지 않은 우분투 기반 Image이므로, 다음과 같은 명령어를 쉘에 입력하여 나눔글꼴을 설치한다.

sudo apt-get install fonts-nanum*

나눔글꼴을 설치하였다면, Jupyter로 돌아가 아래와 같이 폰트 캐시를 삭제한다.

import matplotlib 
matplotlib.font_manager._rebuild()

이후 아래와 같이 rc함수와 plot함수를 이용하여 출력하면 한글이 깨지지 않고 출력된다.

from matplotlib import font_manager, rc
font_name = font_manager.FontProperties(fname='/usr/share/fonts/truetype/nanum/NanumGothicBold.ttf').get_name()
rc('font', family=font_name)

import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
df.plot()

인코딩이 제대로 되어 한글이 깨지지 않고 제대로 표현된 화면

태그: font_manager, Jupyter, jupyterhub, Jupyternotebook, matplot, matplotlib, plot(), PLT, 한글깨짐, 한글폰트

업데이트: