2件のコメント概要Pythonで日本語を含むファイルを扱ったりグラフを書いたりしようとしたとき、初期設定ではうまく表示されないため、下手をすると数日間イライラすることになり時間がもったいないです。そもそもなぜこんなことになるかというと、主に以下4つの理由によるものと考えられます。本記事では細かい説明は省略し、日本語を使いたいモジュールごとに、具体的にどうしたらよいのかを説明していきます。(2系のみ)Pythonの標準エンコーダーが日本語に対応していないasciiであるPython標準文字コード(utf-8)がExcel等で使う文字コード(shift-jis)と異なるPythonで認識できる日本語フォントがPCにインストールされていない主要モジュールの初期フォントが日本語に対応したフォントになっていない対策集Python2系のソースコード作成時Python(2系)では、日本語データを変数に割り当てるとき、必ず頭文字にuを付けてください。uは「データをunicodeとして扱う」ということを意味します。指定しない場合、バイト文字列(str型)として扱われます。バイト文字列を画面表示したりする場合decodeが必要になります。2系ではdecodeにasciiが指定されているので普通に使おうとするとエラーが出ます。後ろにdecode(“utf-8”)を付ければ対策出来ますが、面倒なので頭にuを付けることをお勧めします。pandasを使う場合pandasがcsvデータを読み書きするときに使うread_csv及びto_csvは、デフォルトではutf-8を使います。Excelはshift-jisですので、このままだと文字化けや読み込みエラーが生じます。そのため、文字コードを以下のように明示的に指定しましょう。matplotlibを使う場合matplotlibを使うときに日本語がよく□になってしまいますが、これはフォントが日本語に対応していないことが原因です。いうわけでフォントに日本語を指定したいところですが、matplotlibではttc拡張子のフォントしか取り扱ってくれないので、webからダウンロードしインストールしましょう。IPAフォントのダウンロード等が使えます。インストールしたらC直下に行き、AnacondaフォルダからLib→site-packages→matplotlib→mpl-dataと辿り、matplotlibrcをメモ帳等で開きましょう。このファイルはmatplotlibの各種項目の初期設定を指定するファイルです。文末にfont.family:ダウンロードしたフォントを記載すれば対応完了です。設定してもうまくいかないときは以下を試してみてください。Pythonの再起動フォント名の綴りが合っているか(IPAGothic等。間違っていてもエラーは出ませんので注意。使えるフォント名は.matplotlibというフォルダの中のfontList.jsonをメモ帳で開けば確認できます。)ユーザーフォルダ等にある[.matplotlib]というフォルダを探し中のキャッシュファイルを削除seabornを使う場合seaborn綺麗なグラフを書きたいときに使えるモジュールですが、やはり日本語に対応していません。上と同様にttc形式のフォントをインストール後、C直下に行き、AnacondaフォルダからLib→site-packages→seabornと辿り、中にあるrcmod.pyというファイルを開きましょう。このファイルはseabornの設定項目が指定されており、sans-serifとなっている部分を2か所、日本語フォント名に変更しましょう。設定してもうまくいかないときはPythonを再立ち上げしましょう。rcmod内でsans-serifと書かれている部分は上記以外にもありますが、上記以外は変更しないようにしましょう。sklearn.treeを使う場合scikitlearn.treeで決定木分析を実施し、graphvizで決定木グラフを書きたいとき、やはり日本語に対応していない問題に直面します。上と同様にttc形式のフォントをインストール後、C直下に行き、AnacondaフォルダからLib→site-packages→sklearn→treeと辿り、中にあるexport.pyというファイルを開きましょう。このファイルは名前の通りグラフ出力に使うモジュールでfontnameにhelveticaとなっている部分を2か所、日本語フォント名に変更しましょう。詳しくは以下の記事を参考にしてください。Python3でscikit-learnの決定木を日本語フォントで画像出力する方法のまとめまとめPythonは覚えやすく様々な用途に使える言語ですが日本語の取り扱いに関してはかなりネックです(勿論、大抵の言語で多かれ少なかれそういう傾向はありますが)。いろいろなサイトを辿ると対策が書いてあるのですが、人にPythonを紹介する時に、「モジュールごとに対策がまとまっていたらいいのになぁ」と思ったので、自分で書いてみました。皆様のPythonライフに貢献できると幸いです。22:41おかげでmatplotlibで日本語を表示することができました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。プロフィール兵庫県在住の30代データサイエンティスト。Pythonを使った機械学習等によるデータ分析や、ウェブアプリ等のシステム開発に取り組んでいます。