桁区切りカンマを含むダブルクォーテーションで括られた数字が一部存在するときに、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を読み込むサンプルスクリプト
スクリプトは以下のとおりです。
df = pandas.read_csv(
'C:\\temp\\tsv_sample_cp932.txt',
encoding='cp932',
sep='\t')
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を使った以下のようなスクリプトなら
f = open('C:\\temp\\csv_sample_cp932.csv', encoding='cp932')
tsv_reader = csv.reader(f, delimiter='\t')
print(row)
勿論すべてのデータが文字列として読み込まれます。
最終更新日時:2023-07-24 14:47
Home » Python » pandasの使い方 » pandasでTSV(タブ区切りテキスト)ファイルを読み込むときの挙動