はじめに
本記事では、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に更新をかける時にエラーが発生してしまう可能性があったりするため、この仕様は覚えておこうと思いました。