1
0

Pandasのread_csv()で小数点がつく要因と対応策

Posted at

はじめに

本記事では、Pandasライブラリの関数read_csv()で数値データを読み込んだ時、「.0」のように少数点がついてしまう要因とその対応策について記載します。

要因について

数値と空を含むデータを読み込んだ時、発生します。

サンプルデータ

No 名前 都道府県 注文ID
1 名前1 埼玉県
2 名前2 栃木県 3002
3 名前3 岡山県 7601
4 名前4 大阪府
5 名前5 富山県 3507

read_csv()実行後のデータ

No 名前 都道府県 注文ID
1 名前1 埼玉県 NaN
2 名前2 栃木県 3002.0
3 名前3 岡山県 7601.0
4 名前4 大阪府 NaN
5 名前5 富山県 3507.0

上記のように「.0」が入ったデータが出力されてしまいます。
数値データだけの場合、int型で出力されますが、数値と空を含む場合、float型で出力されてしまい、「.0」がついてしまいます。
(int型にはNaNを含むことができないため、自動でNaNを入れることのできるfloat型になる)

対応策について

read_csv()の引数にdtype="object"をつけて、float型ではなくobject型で出力されるようにします。

import pandas as pd

df = pd.read_csv("サンプルデータ.csv", index_col=0, dtype="object")

dtype="object"を付けて実行すると、サンプルデータは以下のように「.0」無しで出力されます。

No 名前 都道府県 注文ID
1 名前1 埼玉県 NaN
2 名前2 栃木県 3002
3 名前3 岡山県 7601
4 名前4 大阪府 NaN
5 名前5 富山県 3507

終わりに

今回はread_csv()で数値データを読み込んだ時、少数点がついてしまう要因とその対応策を記載しました。ID等に「.0」が入ってしまうと、意味合いが変わってしまったり、DBに更新をかける時にエラーが発生してしまう可能性があったりするため、この仕様は覚えておこうと思いました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0