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でも問題ありません。
まとめ
今回はデータの型を変更する方法を解説しました。
データが壊れないように注意しながら、できるだけメモリ消費が小さくなるように設定しましょう。
コメント