😺
ydata-profiling の日本語化
困っていたこと
csv ファイルに日本語が含まれていた場合に、ydata-profiling による可視化のうち seaborn を使用して可視化している部分で、文字化け(豆腐化現象)が起こる。
import japanize_matplotlib/
を実行しても対応できなくて最初困った。
OS : Windows11
ydata-profiling のバージョン : 4.6.5
参考
解決方法
ydata_profiling がインストールされているディレクトリの visualisation/context.py と seaborn がインストールされているディレクトリの rcmod.py の中の font.sans-serif の先頭に "IPAexGothic" を追加して、カーネルを再起動。
下記は、context.py の中を書き換える例
"font.sans-serif": [
"Arial",
"Liberation Sans",
"Bitstream Vera Sans",
"sans-serif",
],
のようになっている部分を下記のように書き換える。
"font.sans-serif": [
"IPAexGothic",
"Arial",
"Liberation Sans",
"Bitstream Vera Sans",
"sans-serif",
],
コードセル上で編集する
下記をコードセル上で実行して、カーネルを再起動。
上記で行っていたファイルに対する処理をコードで行っているだけ。
import os
import importlib.util
def japanize_ydata_profiling():
def add_font(file_path):
# ファイルを読み込む
with open(file_path, 'r', encoding='utf-8') as file:
lines = file.readlines()
# "font.sans-serif" のリスト内に "IPAexGothic" が存在するかチェック
ipaexgothic_present = False
for line in lines:
if '"font.sans-serif":' in line:
if '"IPAexGothic"' in line:
ipaexgothic_present = True
break
# "IPAexGothic" が存在しなければ、リストの開始に追加
if not ipaexgothic_present:
for i, line in enumerate(lines):
if '"font.sans-serif": [' in line:
# [ の直後に "IPAexGothic", を追加
insertion_point = line.find('[') + 1
line = line[:insertion_point] + '"IPAexGothic", ' + line[insertion_point:]
lines[i] = line
break
# 編集した内容でファイルを上書き保存
with open(file_path, 'w', encoding='utf-8') as file:
file.writelines(lines)
# ydata_profiling のフォント設定を変更
library_path = importlib.util.find_spec("ydata_profiling").origin
library_dir = os.path.dirname(library_path)
file_path = library_dir + '/visualisation/context.py'
add_font(file_path)
# seaborn のフォント設定を変更
library_path = importlib.util.find_spec("seaborn").origin
library_dir = os.path.dirname(library_path)
file_path = library_dir + '/rcmod.py'
add_font(file_path)
print('japanize_ydata_profiling() is done')
japanize_ydata_profiling()
Discussion