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('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('C:\\temp\\csv_sample_cp932.csv', encoding='cp932')
csv_reader = csv.reader(f)
for row in csv_reader:
    print(row)

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

公式ドキュメントのcsv.readerに、


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

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

最終更新日時:2019-06-21 19:59

[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

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

検索


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

.