sweetvizは2行でEDAをしてくれるpythonのライブラリです。
とっても便利ですが、フォントの問題で日本語が豆腐になってしまうことがあります1。
ちょっと前のバージョンから以下の一行で直せるようになってます。
sv.config_parser.read_string("[General]\nuse_cjk_font=1")
と、これだけの記事なのですが、せっかくなので何をやっているか解説していきます。
何をやってるのか
SweetvizのGithubにおいて、
- sweetvizはconfigファイルで色々設定を変えることが可能
- 日本語(、中国語、韓国語)は以下のようにiniファイルに書くと豆腐直せる
[General]
use_cjk_font = 1
と紹介されています2。configファイルに関してsweetvizは何をやっているかと言うと、
-
import sweetviz
時にconfig.pyが実行される - config.pyの中では、pythonの標準ライブラリであるconfigperserを使用して、デフォルトのiniファイルを読み込む
という感じです。なので、豆腐を直す追加の設定(上の2行)を書いたiniファイルを読み込めばいいわけです3。
import sweetviz
sweetviz.config_parser.read('path/to/my_config.ini')
いちいちiniファイルを作成するのは面倒なので、サクッとEDAだけ行いたい場合は文字列をそのまま読み込む read_string
が便利です4。ただし改行は必須なので、改行コードを表す \n
を使って書いたものが冒頭の一行です。
やってみる
お手元の環境、あるいはGoogle colabなどで、以下を実行すれば試せるはずです。
import pandas as pd
import sweetviz as sv
df = pd.DataFrame({'列1': [1,2,3], 'れつ2': ['栃木', '宮城', 'GUNMA']}, dtype='category')
df.info()
sv.config_parser.read_string("[General]\nuse_cjk_font=1")
sv.analyze(df).show_notebook()
-
string型の列は棒グラフにならないので、カテゴリ型を用いてる場合に起きる問題です。 ↩
-
https://github.com/fbdesignpro/sweetviz#new-chinese-japanse-korean-cjk-character-support 。なお、cjkはChinese、Japanese、Koreanの頭文字をとったもの。 ↩
-
ここに書いたもの以外はデフォルトの設定が引き継がれます。 ↩
-
https://docs.python.org/ja/3/library/configparser.html#configparser.ConfigParser.read_string ↩