LoginSignup
80
56

More than 5 years have passed since last update.

pandasにexcel出力のcsvを読ませる時に注意する点

Last updated at Posted at 2017-01-19

pythonに読ませるなら、文字形式はutf-8にして欲しいものですが、
データ出力側も色々な事情ありますから、受け側で変換して読み込まなければならないケースも多々あります。

Windows&Excelの環境で出力されるcsvは、シフトJISです。。。
ということで、pandasで、

import pandas as pd
dataset1 = pd.read_csv("hogehoge.csv",encoding="shift_jis")

とやれば、OKだなーと思って油断してると、たまにちゃんと読めないことがあります。

test.csv
山田,1000
佐藤,2000
山本,3000

これは読めますが、

test2.csv
1,山田,1000
2,髙橋,2000
3,黑﨑,3000

もれなく、下記のエラーが出ます。。。

UnicodeDecodeError: 'shift_jis' codec can't decode byte 0xfb in position 0: illegal multibyte sequence

これは、test2.csvに、
・ハシゴダカ ""
・タチサキ ""
等の、windows拡張文字列が混ざっている事に起因します。
このような文字を読むためには、文字コードをcp932としてやる必要があります。

encoding='cp932'

こういう事があるので、windowsだから、shift_jisで読んどけばOKという意識ではなく、
最初から、cp932で読むようにしておけば、無駄なトラブルに悩まされなくて良いというお話でした。

import pandas as pd
dataset1 = pd.read_csv("hogehoge.csv",encoding="cp932")

※下記サイト大変参考になりました。
「Shift_JIS と Windows-31J (MS932) の違いを整理してみよう」
http://weblabo.oscasierra.net/shift_jis-windows31j/

80
56
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
80
56