to_csv() で csv ファイルを書き出したらカラムが文字化けする件
pythonにてカラムが漢字のcsvファイルをDataFrame型で読み込んで加工し、csvファイルに書き出してエクセルで開いたら、カラムが文字化けしてしまったので、文字化け防止の方法をまとめます。
データは下記のものを想定します。
コードは以下のとおりです。
# ライブラリ import pandas as pd import os # パスの取得 path = os.getcwd() # DataFrame型データの作成 df = pd.DataFrame( {"壱":[1,2,3], "弐":[10,15,20], "参":[8, 6, 4] } ) # 文字化けするcsvファイルの書き出し df.to_csv(path + "\data1.csv")
このように出力してエクセルで開くと、下記のとおりカラムが文字化けしてしまいます。
なお、メモ帳で開くと、ちゃんと漢字で表記されます。
csvファイルはエクセルで開くことが多いと思いますし、人にデータを共有するとき、「このカラムどういう意味?」と聞かれると面倒ですよね。
そういう時は、to_csv() のパラメーターに、shift-jis を指定しましょう。
shift-jis は日本語フォントの文字コードです。
なお、encodingを何も設定しない場合は、自動的に "utf-8" という文字コードが設定されています。
df.to_csv(path + "\data2.csv", encoding="shift-jis")
または、to_excel() 関数を使って、エクセルデータで出力する方法もあります。
この場合は、encoding="shift-jis" の指定は必要ありません。
ただし、openpyxl ライブラリをインストールする必要があります。
pip install openpyxl
df.to_excel(path + "\data3.xlsx")
出力結果
参考サイト