pandas利用上のエラーと
その対策 ver. 1.1
主に文字列のエラーを扱います。
厳密には異なる部分もあると思いますが、鉞を投げないで下さい。
なお、特に断りがなければ、Windows 10, Office 2016の環境です。
2017-07-19
森下功啓
更新履歴
• 2017-07-11 ver. 1.0 公開開始
• 2017-07-19 ver. 1.1 解決策を追加
PCにおける日本語の処理
~日本語の辛い現実~
コンピュータの中の日本語
• 文字をコンピュータで扱うには文字コードセットが利用される
• 数値と文字を紐づけることで文字を表示している
• ASCIIコードが有名
• 日本語は、Windowsではshift-jisが使われている
• Macや他のOSではUTF-8が標準的
• 影響はファイルの中身だけでなく、ファイル名にも及ぶ
UTF-8とShift-jis
同じ文面でも、文字コードが異なると数値の配列が変わる。
Sublime textで編集した日本
語を含むテキストファイル
(UTF-8)
↑のファイルをFCCheckerを
使って文字コードをShift-jis
に変換したテキストファイル
( Shift-jis )
Stirling(バイナリエディタ)で閲覧したテキストファイル
Stirling(バイナリエディタ)で閲覧したテキストファイル
ソフトウェアとデフォルトの文字コード
• ソフトウェアによって、標準的な文字コードが異なる
• Sublime textはUTF-8が標準
• WindowsのExcelは、csvを作成するときはShift-jisが標準
Win Excelを使って作った
csvファイル( Shift-jis )
Sublime textでは
文字化け
Sublime textを使って作った
csvファイル(UTF-8)
Excelでは
文字化け
ExcelにUTF-8のcsvファイルを読み込ませる
• Sublime textで作ったテキストファイルはBOM無のUTF-8
• BOMは文字コードを区別する3byteのバイナリデータ
• Win版ExcelはBOM付きUTF-8を読み込むことができる
KanjiTranslatorなどを使って
BOM付きに変換する Excelでファイルを開いても
文字化けしていない
Sublime textを使って作った
csvファイル(UTF-8)
Pythonのpandasを使っている
ときのエラーと対処方法
以降のスライドでは、右のよう
なプログラムで起きるエラーと
対策を示します
なお、右のプログラムは、読み
込むファイルが英名かつ文字
コードがasciiまたはUTF-8で
あればほぼ正常に動作します
症状:下記のエラーメッセージが出る
原因:ファイル名に日本語が入っている
解決策:csvファイル名に日本語を使うのを止める
*pandasでもExcelファイル(xlsx)から読み込む場合は
ファイル名に日本語を含んでいても良い
Excelを使って列名を日本語にしてみた
@Win10
Sublime textでは文字化けしている
とあるデータ
列名が英語である。
症状:‘utf-8’ codec can‘t decode byte・・・略
↓utf-8のcodecがデータをデコード
できなかったと訴えています。
実行してみると
原因:ファイル内のテキストに日本語が入っている。正確には、UTF-8以外の文
字コードがファイルに含まれている。
解決策:テキストに日本語を使うのを止めるか、文字コードをUTF-8とする。
Sublime textで編集して日本語を入力
読み込めたことをprintを使って確認した。
print(data)の結果、正常に読めたことが分かる。
少なくとも、読み込み時点でエラーは出ない
前のページで解決しないとき
原因:文字コードをUTF-8に変換しても、pandasの処理できないデータが混
じってしまうことが在る。
解決策:下記のプログラムを使って、Pythonの処理できる文字のみを保存した
ファイルを作成する。
Download:
https://gist.github.com/Katsuhiro
Morishita/aa0869b8564f869dc56
b57386f551fa4
症状:下記のエラーメッセージが出る。「入力にNaN(非値)を含ん
でおり、云々(float32型で表現できない)」とのこと。
原因:値の入っていないレ
コードがある
解決策:値を補間(他の値
から予想するか、平均値で
埋める)するか、レコード
ごと削除する
欠損をExcelでちまちま消
してもいいが、、、
欠損のあるレコードを削除するために、dropna()を使う

Pandas利用上のエラーとその対策