PythonでExcelのCSVファイルを扱う際、特に日本語が含まれる場合、文字コードに気を付ける必要があります。基本的に、ファイルの読み書きがコンピュータだけでなく、人間がExcelなどを使ってファイル編集する場合などは、注意が必要となります。
UTF-8とExcel
ファイルを扱うのがコンピュータのみの場合は、基本的に文字コードをUTF-8にしておけば問題ないです。しかし、人がExcelでファイルを編集する可能性がある場合、文字コードがUTF-8だと日本語が文字化けして正常に表示されないことがあります。
この問題を解決するためには、BOM付のUTF-8にしてやることで、Excelでも日本語が文字化けせず、かつコンピュータでもUTF-8として認識可能となります。
pandasでのファイル読み書き
Pythonのpandasライブラリを使ってCSVファイルを扱う場合、以下のように文字コードを指定してファイルを読み込むことができます。
import pandas as pd
df = pd.read_csv('ファイル名', encoding = 'utf-8') #文字コードの指定
print(df)
また、BOM付のUTF-8でCSVファイルを保存するには、以下のようにします。
df.to_csv("./data/sample_utf8_with_bom.csv", index=False, encoding="utf_8_sig")
この方法で保存したCSVファイルをExcelで開いても、日本語が文字化けせずに表示されます。Excelでファイルを編集して保存し、プログラムからファイルを読み込んでも、文字コードがUTF8なので、文字化けを気にせずに読み込めます。
まとめ
PythonとExcelを連携させる際には、文字コードの扱いが重要となります。特に、日本語が含まれるデータを扱う場合、UTF-8のBOM付を利用することで、PythonとExcelの間でスムーズにデータのやり取りを行うことができます。.