yoshiislandblog.net
元営業の駆け出しアラサーSEが、休日にMACと戯れた際の殴り書きメモ。日々勉強。日々進歩。
20220205_pandas_csv_excel_1

pandasで作成したcsvを文字化けせずにExcelで開く

2022-02-05

pandasで作成したcsvをexcelで開こうとして、日本語が文字化けしたら、「utf_8_sig」というエンコードを指定しようというお話
(「utf_8」だと、Google Spredsheetなら問題ないが、Microsoft Excelだと文字化けしてしまう)

まずはpandasのインストール

%  python -m pip install --upgrade pip
%  pip install pandas

適当に日本語のjsonファイルを用意する
(本来なら、APIで取得した結果だったりするのだろうが、今回は動作確認なので適当に自作)

 
%  cat test.json
[
  {
    "name": "アリス",
    "gender": "女",
    "age": 30
  },
  {
    "name": "ヘレン",
    "gender": "女",
    "age": 25
  },
  {
    "name": "ジョン",
    "gender": "男",
    "age": 38
  }
]

先程作成したjsonファイルを読み込み、csvに変換するpythonスクリプトを用意する
utf-8でエンコードしたファイルは「results_utf_8.csv」として吐き出し、
utf-8_sigでエンコードしたファイルは「results_utf_8_sig.csv」として吐き出すようにする

 
%  cat json-to-csv.py
import pandas as pd

df = pd.read_json('test.json')

df.to_csv('results_utf_8.csv', encoding='utf_8')
df.to_csv('results_utf_8_sig.csv', encoding='utf_8_sig')

作成したスクリプトを実行する

 
%  python json-to-csv.py

作業ディレクトリを確認すると、results_utf_8.csvとresults_utf_8_sig.csvのファイルができている

 
%  ls
json-to-csv-test/      json-to-csv.py            results_utf_8.csv      results_utf_8_sig.csv  test.json

catで中身を確認するとどちらも同じに見えるが、
Excelで確認すると、results_utf_8.csvは文字化けしていて、results_utf_8_sig.csvは文字化けしていないことがわかる

 
%  cat results_utf_8.csv
,name,gender,age
0,アリス,女,30
1,ヘレン,女,25
2,ジョン,男,38

20220205_pandas_csv_excel_1

 
%  cat results_utf_8_sig.csv
,name,gender,age
0,アリス,女,30
1,ヘレン,女,25
2,ジョン,男,38

20220205_pandas_csv_excel_2

以上。