Home » Python » pandasの使い方 » pandasのread_csv()関数でCSVファイルを読み込むときの挙動

pandasのread_csv()関数でCSVファイルを読み込むときの挙動

動作検証バージョン:Windows 10 + Python 3.7.3 + pandas 0.24.2

できる 仕事がはかどる Python自動処理 全部入り。』のChapter 7で、pandasのread_csv()関数を使ったCSVファイルの読み込みについて書かれています。

桁区切りカンマの入ったデータが、どのような扱いになるのかが気になったのでテストしてみました。

桁区切りカンマの入った数字を含むCSVファイル

具体的には以下のようなCSVファイルです。

id,name,score
1,太郎,900
2,次郎,800
3,三郎,"1,000"
4,四郎,600
5,五郎,500

3列目のscoreは、基本的には数値データですが、一部に、桁区切りカンマの入ったダブルクォーテーションで括られた数字が存在します。

こんなCSVファイルないだろうと思う方はExcelからCSVファイルを作成してみてください。

[スポンサードリンク]

pandasのread_csv()関数でCSVを読み込むサンプルスクリプト

以下のようなスクリプトを作成して実行しました。

import pandas

df = pandas.read_csv(r'C:\temp\csv_sample_cp932.csv', encoding='cp932')

for row in df.values:
    print(row)

結果、下図のとおり3列目のすべてのデータが、「'」(シングルクォーテーション)で括られた文字列として読み込まれます。

ちなみに、3列目のデータが、すべてダブルクォーテーションで括られていたとしても、桁区切りカンマの入ったデータが存在しなければ、
1,太郎,"900"
2,次郎,"800"
3,三郎,"1000"
4,四郎,"600"
5,五郎,"500"
下図のとおり、3列目は数値として読み込まれます。

3列目のデータをダブルクォーテーションで括らない数値にしておいて実行すれば、数値として読み込まれるのは言うまでもありません。

csv.reader()関数でCSVを読み込む場合

なお、標準ライブラリのcsv.reader()関数を使った以下のようなスクリプトなら

import csv

f = open(r'C:\temp\csv_sample_cp932.csv', encoding='cp932')

csv_reader = csv.reader(f)
for row in csv_reader:
    print(row)

下図のとおりすべてのデータが文字列として読み込まれます。

公式ドキュメントに、

csv ファイルから読み込まれた各行は、文字列のリストとして返されます。QUOTE_NONNUMERIC フォーマットオプションが指定された場合を除き、データ型の変換が自動的に行われることはありません

と書かれているとおりです。

最終更新日時:2023-01-18 16:23

[スポンサードリンク]

Home » Python » pandasの使い方 » pandasのread_csv()関数でCSVファイルを読み込むときの挙動

「pandasの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.