pandas

【Pandas】日本語が含まれるファイルの読み込みと保存

MAX

日本語の含まれるファイルを読み書きする場合、文字コードに気を付ける必要がある。

特に、ファイルの読み書きがコンピュータだけでなく、人間がExcelなどを使ってファイル編集する場合などは、注意が必要となる。

ファイルを扱うのがコンピュータのみの場合は、基本的に文字コードをUTF-8にしておけば問題ない。

しかし、人がExcelでファイルを編集する可能性がある場合、文字コードがUTF-8だと日本語が文字化けして正常に表示されない。

BOM付のUTF-8にしてやることで、Excelでも日本語が文字化けせず、かつコンピュータでもUTF-8として認識可能となる。

なお本記事でのファイル読み書きはpandasでCSVを扱うことを前提とする。

スポンサーリンク

Pythonの標準エンコーディングの種類

Python標準エンコーディング

UTF-8やShift_SJIS、cp932などの使える文字コード名が掲載されている。

表に記載されている通り、各文字コードの指定方法は1種類ではなく、別名も定義されているため、大体それっぽく書けば、エラーになることは少ない(と思う)。

UTF-8 BOM付でファイルを保存する

文字コードをUTF-8BOM付に指定するだけ。

1import pandas as pd
2
3data1 = ["あ", "い", "う", "え", "お"]
4data2 = ["a", "b", "c", "d", "e"]
5data3 = [1, 2, 3, 4, 5]
6
7df = pd.DataFrame(data={"列A": data1,
8                        "列B": data2,
9                        "列C": data3})
10print(df)
11
12#   列A 列B  列C
13# 0  あ   a   1
14# 1  い   b   2
15# 2  う   c   3
16# 3  え   d   4
17# 4  お   e   5
1# UTF-8 BOM付でCSV保存
2df.to_csv("./data/sample_utf8_with_bom.csv", index=False, encoding="utf_8_sig")

encodingに「utf_8_sig」を指定することでBOM付のUTF-8で保存できる。

この方法で保存したCSVファイルをExcelで開いても、日本語が文字化けせずに表示される。

Excelでファイルを編集して保存し、プログラムからファイルを読み込んでも、文字コードがUTF8なので、文字化けを気にせずに読み込める。

UTF-8 BOM付ファイルの読み込み

ファイル読み込み時のデフォルトの文字コードがUTF8なので、ファイル読み込み時は特に文字コードを指定しなくても、読み込める。

1# 文字コード指定なし
2df2 = pd.read_csv("./data/sample_utf8_with_bom.csv")
3
4# 文字コードにUTF-8を指定
5df3 = pd.read_csv("./data/sample_utf8_with_bom.csv", encoding="utf8")
6
7# 文字コードにUTF-8BOM付を指定
8df4 = pd.read_csv("./data/sample_utf8_with_bom.csv", encoding="utf_8_sig")
9
10print(df2)
11print(df3)
12print(df4)
13
14#   列A 列B  列C
15# 0  あ   a   1
16# 1  い   b   2
17# 2  う   c   3
18# 3  え   d   4
19# 4  お   e   5

どの方法で読み込んでも正常に読み込める。

まとめ

1import pandas as pd
2
3# UTF-8 BOM付で保存
4df.to_csv("./sample.csv", encoding="utf_8_sig")
5
6# UTF-8 BOM付ファイルの読み込み
7# 文字コードの指定は不要
8df = pd.read_csv("./sample.csv")
スポンサーリンク
ABOUT ME
MAX
MAX
ITエンジニア、データサイエンティスト
新卒でSIerに入社し、フリーランスになってWEB系へ転向。
その後AIの世界へ足を踏み入れ、正社員に戻る。 テーブルデータの分析がメイン。
スポンサーリンク
記事URLをコピーしました