Home » Python » pandasの使い方 » pandasでTSV(タブ区切りテキスト)ファイルを読み込むときの挙動

pandasでTSV(タブ区切りテキスト)ファイルを読み込むときの挙動

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

桁区切りカンマを含むダブルクォーテーションで括られた数字が一部存在するときに、pandasはその列を文字列として読み込むことを確認しました。

区切り文字が「,」(カンマ)ではなくタブの場合に、ダブルクォーテーションで括られていない桁区切りカンマを含む数字があったときにどうなるのかが気になります。

[スポンサードリンク]

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

以下のようなTSVファイルを準備しました。

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

3列目のscoreは、基本的には数値データですが、一部に、桁区切りカンマの入った数字が存在します。

CSVの場合はこういったデータのときにダブルクォーテーション等で括る必要がありますが、TSVですからダブルクォーテーションで括られていません。

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

スクリプトは以下のとおりです。

import pandas

df = pandas.read_csv(
    'C:\\temp\\tsv_sample_cp932.txt',
    encoding='cp932',
    sep='\t')

for row in df.values:
    print(row)

pandasにはTSVを読み込むためのread_table()関数が存在しますけれど、

Deprecated since version 0.24.0.
Use pandas.read_csv() instead, passing sep='\t' if necessary.

とのことですから指示どおりread_csv()関数の引数sepに「\t」を指定しています。

桁区切りカンマを含むと文字列として読み込まれる

結果、ダブルクォーテーションで括られた桁区切りカンマの入った数字の存在するCSVファイルを読み込んだときと同じく、

桁区切りカンマのある数字を含む3列目は、全レコードが文字列として読み込まれます。

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

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

import csv

f = open('C:\\temp\\csv_sample_cp932.csv', encoding='cp932')
tsv_reader = csv.reader(f, delimiter='\t')

for row in tsv_reader:
    print(row)

勿論すべてのデータが文字列として読み込まれます。

最終更新日時:2023-07-24 14:47

[スポンサードリンク]

Home » Python » pandasの使い方 » pandasでTSV(タブ区切りテキスト)ファイルを読み込むときの挙動

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

検索


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

.