pandasのread_csvで日本語を含むCSVファイルを使用する時の注意点

Python

結論

  • 日本語を含むcsvファイルを読み込む時は、オプションにencoding=’shift_jis’を指定する。
  • encoding=’shit_jis’を指定した際、読み込みエラーとなることがある。
  • 読み込みエラーになるのは、csvファイル内に拡張文字が含まれているのが原因。
  • 拡張文字が含まれている場合は、encoding=’cp932’を指定する。

経緯

不動産取引価格情報検索から機械学習用データを取得した。

  • 取得したデータ:2020年の東京都千代田区の不動産取引価格情報
  • CSVファイル名:13101_20201_20204.csv

下記のコードでCSVファイルを読み込んでみた。

import pandas as pd
df = pd.read_csv('./13101_20201_20204.csv')
print(df.head())

実行結果

 No ��� �n�� ... ������_ ���� ����̎��
0 1 ���Ã}���V������ NaN ... 2020�N��S�l���� ������ NaN
1 2 ���Ã}���V������ NaN ... 2020�N��S�l���� ������ NaN
2 3 ���Ã}���V������ NaN ... 2020�N��S�l���� ������ NaN
3 4 ���Ã}���V������ NaN ... 2020�N��R�l���� ������ NaN
4 5 ���Ã}���V������ NaN ... 2020�N��Q�l���� NaN NaN

日本語は文字化けしている。
read_csvの引数を調査する。

Pandasのread_csv関数でCSVファイルを読み込む方法
CSV形式のデータは多くの人が扱えることもあり、データ分析でもよく使われます。本記事では、PandasでCSVを読み込む関数であるread_csv関数でよく使われる利用方法について解説しました。

上記のWebサイトで、文字コードを指定するオプションとしてencodingがあることを確認した。
encodingを指定した下記のコードでCSVファイルを読み込む。

import pandas as pd
df = pd.read_csv('./13101_20201_20204.csv', encoding='shift_jis')
print(df.head())

実行結果

UnicodeDecodeError: 'shift_jis' codec can't decode byte 0x87 in position 151: illegal multibyte sequence/* Your code... */

CSVファイルを読み込む時にエラーが発生した。

CSVファイル内に拡張文字に該当する文字を使用していると、shift_jisでは読み込めない。拡張文字が含まれている場合は、cp932を指定する必要がある。

下記のコードでCSVVファイルを読み込む

import pandas as pd
df = pd.read_csv('./13101_20201_20204.csv', encoding='cp932')
print(df.head())

実行結果

 No 種類 地域 市区町村コード 都道府県名 ... 建ぺい率(%) 容積率(%) 取引時点 改装 取引の事情等
0 1 中古マンション等 NaN 13101 東京都 ... 80.0 500.0 2020年第4四半期 未改装 NaN
1 2 中古マンション等 NaN 13101 東京都 ... 80.0 500.0 2020年第4四半期 未改装 NaN
2 3 中古マンション等 NaN 13101 東京都 ... 80.0 500.0 2020年第4四半期 改装済 NaN
3 4 中古マンション等 NaN 13101 東京都 ... 80.0 500.0 2020年第3四半期 未改装 NaN
4 5 中古マンション等 NaN 13101 東京都 ... 80.0 700.0 2020年第2四半期 NaN NaN

 

コメント

タイトルとURLをコピーしました