Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
49
Help us understand the problem. What is going on with this article?
@recomemos

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

More than 3 years have passed since last update.

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/

49
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
49
Help us understand the problem. What is going on with this article?