ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ydata-profiling] 판다스 프로파일링 사용시 파이썬 한글 깨짐 문제 해결하기
    Python/Pandas, Numpy 2023. 8. 28. 09:27
    반응형

    ydata-profiling (판다스 프로파일링) 사용시 한글 깨짐 문제 해결하기


    파이썬 (Python) 으로 EDA (Exploratory Data Analysis, 탐색적 데이터 분석) 을 하기 위해서는 주로 표 형식의 데이터를 조회할 수 있는 판다스 (Pandas) 와 시각화 패키지를 사용해 이것저것 시각화를 해 보는 것부터 시작합니다. 그런데, ydata-profiling (구 판다스 프로파일링) 이라는 패키지를 사용하면, 최대한 다양한 시각화 자료를 한번에 도출할 수 있어서 데이터 분석가들에게 추천드리고 있어요.

     

     

    한글 깨짐 문제 확인


    하지만, ydata-profiling을 사용할 때 주의할 점이 하나 있습니다. 바로, 한글이 포함된 데이터를 시각화할 때 한글이 깨지는 문제점이 발생한다는 점이지요. 이번에는 그런 문제를 해결해 보도록 하겠습니다. 저는 이번에 서울 열린데이터광장에서 제공하는 서울시 휴게음식점 인허가 정보를 이용해서 시각화를 한번 해 보겠습니다.

     

     

    # 패키지, 데이터 불러오기 및 시각화
    import ydata_profiling
    import pandas as pd
    
    df = pd.read_excel('./data/서울시 휴게음식점 인허가 정보.xlsx')
    df.profile_report()

     

     

    파이썬의 ydata-profiling을 이용하면, 이렇게 간단하게 다양한 시각화를 해 볼 수 있는데요, 기본 설정으로는 한글 문자들이 전부 □□□□와 같이 표현되는 것을 확인할 수 있습니다. 이것은 ydata-profiling에서 시각화에 사용하는 matplotlib 패키지가 기본적으로 영어 전용 폰트를 사용하는 탓이지요. 이 때는 해당 패키지의 컨텍스트 파일을 수정하는 것이 좋습니다.

     

     

    그래프의 한글 깨짐 문제 해결


    ydata-profiling의 컨텍스트 파일은 패키지가 설치된 경로의 visualisation 폴더에 있습니다. 만약 패키지가 설치된 경로를 모른다면, 아래 명령어를 입력해서 Location 항목을 참고해 주세요.

     

     

    !pip show ydata_profiling
    Name: ydata-profiling
    Version: 4.1.2
    Summary: Generate profile report for pandas DataFrame
    Home-page: https://github.com/ydataai/ydata-profiling
    Author: YData Labs Inc
    Author-email: opensource@ydata.ai
    License: MIT
    Location: c:\programdata\anaconda3\lib\site-packages
    Requires: htmlmin, imagehash, jinja2, matplotlib, multimethod, numpy, pandas, phik, pydantic, PyYAML, requests, scipy, seaborn, statsmodels, tqdm, typeguard, visions
    Required-by: 
    
    
    WARNING: Ignoring invalid distribution -rotobuf (c:\programdata\anaconda3\lib\site-packages)
    WARNING: Ignoring invalid distribution -astcluster (c:\programdata\anaconda3\lib\site-packages)

     

     

    다음으로는, ydata-profiling 패키지에서 사용하는 시각화 패키지의 설정을 바꿔줘야 합니다. 이건 matplotlib 패키지의 한글 폰트 설정과 똑같이 처리하면 되는데요, 아래와 같이 context.py 파일에서 font-family 항목을 원하는 폰트로 바꿔주는 방식입니다. 만약 윈도우 이용자라면 Malgun Gothic 으로 입력해서 맑은 고딕을 사용하는 것을 권장드리고요, 맥 유저라면 AppleGothic 으로 입력해서 애플고딕을 사용하는 것이 좋습니다. 리눅스는 배포판에 따라 기본 폰트가 다르므로 배포판에 따라서 적절하게 선택해 주세요.

     

     

     

    그리고, 한글 글꼴은 대개 영문 글꼴과의 기호 설정 차이 때문에 마이너스 기호 표현에 문제가 발생하기 때문에, 이 위에 "axes.unicode_minus": False 라고 한줄 입력해 주시는것이 좋습니다.

     

     

    다음으로는, 해당 파일의 아랫부분에 sns.set_style(style="white") 라는 코드를 찾은 뒤, 이 코드를 제거 또는 주석 처리해 줍니다. 파이썬의 seaborn 역시 matplotlib 패키지 의존성이 있기 때문에, 해당 코드가 실행된다면 matplotlib이 새로 로드되어 폰트 설정이 초기화되기 때문입니다.

     

     

    파일 편집이 끝났으면, 저장 후 커널을 재시작한 뒤 똑같은 코드를 다시 실행해 보시기 바랍니다. 한글이 깨지는 문제가 깔끔하게 해결된 것을 확인할 수 있습니다.

     

     

    # 패키지, 데이터 불러오기 및 시각화
    import ydata_profiling
    import pandas as pd
    
    df = pd.read_excel('./data/서울시 휴게음식점 인허가 정보.xlsx')
    df.profile_report()

     

     

    워드클라우드 한글 깨짐 문제 해결


    그런데, ydata-profiling 패키지의 한글 깨짐 문제는 이것으로 끝이 아닙니다. 해당 패키지는 데이터의 특성에 따라 워드클라우드 (wordcloud) 를 보여줄 수 있는데, 여기서도 한글 깨짐 문제가 발생합니다. 이 문제는 위의 방법으로 그래프의 한글 깨짐 문제를 해결한다 해도 여전히 발생하기 때문에, 다른 방법을 이용해서 해결해야 합니다.

     

     

     

    이 문제가 발생하는 파일은, 컨텍스트 파일과 같은 경로에 있는 plot.py 파일입니다. 여기에서 wordcloud 패키지 설정을 바꿔줘야 하는데요, wordcloud = WordCloud(... 라고 적힌 코드를 검색한 뒤 옵션을 하나 추가해 주면 됩니다.

     

     

    font_path="글꼴 경로" 라고 코드를 입력하면 되는데, 글꼴 경로는

     

     

    • 윈도우의 경우 대개 C:/Windows/Fonts 폴더 안에 있으며
    • 맥은 ~/라이브러리/Fonts 경로
    • 리눅스는 /usr/share/fonts 경로라고 합니다.

     

     

    # 패키지, 데이터 불러오기 및 시각화
    import ydata_profiling
    import pandas as pd
    
    df = pd.read_excel('./data/서울시 휴게음식점 인허가 정보.xlsx')
    df.profile_report()

     

     

    이제 파이썬 커널을 재시작한 뒤 똑같은 코드를 입력하면 제대로 표시되는 워드클라우드를 확인할 수 있습니다.

    반응형

    댓글

문의: jwkang3929@naver.com