スポンサーリンク

[Pandas]データの型を変更する

pandasでデータの型を確認したり変更する方法を解説します。

データの型を変更する

データセット

import pandas as pd
from sklearn.datasets import load_diabetes
data = load_diabetes()
df = pd.DataFrame(
    data = data.data,
    columns = data.feature_names,
)
df["target"] = data.target
df

load_diabetesのデータセットを使います。

型の確認

df.dtypes

# ===== output =====
# age	float64
# sex	float64
# bmi	float64
# bp	float64
# s1	float64
# s2	float64
# s3	float64
# s4	float64
# s5	float64
# s6	float64
# target	float64

dtypesで型を確認できます。

型の変更

print(df["target"].values[0])
df["target"] = df["target"].astype(int)
print(df["target"].values[0])
print(df["target"].dtype)

# ===== output =====
# 151.0
# 151
# int64

astypeで変更したい型を入力すると変わります。上記では整数に変えました。
151.0 -> 151に変わっていますね。

import numpy as np
df["target"] = df["target"].astype(np.int32)
print(df["target"].values[0])
print(df["target"].dtype)

# ===== output =====
# 151
# int32

numpyを使えば、整数型や浮動小数型のビット数を指定できます。
上記コードで、もともとint64のデータをint32に変更しました。

型を変更するメリット

そもそもデータの型を変更するメリットが何かというと、メモリを節約できることです。

例えば”151″という数値を整数の”151″のまま扱うか、それとも”151.0″として扱うかで、”.0″の情報を余計に持っていることからデータ量の差が生まれます。

また、前章のコードにある”int64″->”int32″の変更により、64ビットのデータから32ビットのデータに変わっており、より少ないメモリ量で扱うことが可能です。

注意点

print(df["target"].max())
df["target"] = df["target"].astype(np.int8)
print(df["target"].max())

# ===== output =====
# 346
# 127

メモリを節約したいがために、ビット数が小さすぎる型を指定すると、データが壊れてしまうことがあります。
上記コードでは、”target”の最大が346だったところ、int8型にすると最大が127になってしまいました。

要するに、int8型では128以上の数値を表現できないということです。
例えば0か1しかないラベル列の場合はint8でも問題ありません。

まとめ

今回はデータの型を変更する方法を解説しました。
データが壊れないように注意しながら、できるだけメモリ消費が小さくなるように設定しましょう。

コメント

タイトルとURLをコピーしました