今回は、Pythonのastype()メソッドを使って、DataFrameのカラムのデータ型変換について詳しく説明します。
Python astype() 関数を理解する
Pythonのastype()メソッドによるデータ型変換の概念を深く理解する前に、まず次のようなシナリオを考えてみましょう。
データサイエンスや機械学習の分野では、しばしばデータの前処理や変換が必要な場面に出くわすことがあります。
正確には、データ値の変換はモデリングに向けた重要なステップです。
このとき、データ列の変換が登場します。
Pythonのastype()メソッドは、データセットやデータフレーム内の既存のデータ列のデータ型を設定したり変換したりすることができます。
これにより、astype()関数を使用して、データ値や単一または複数の列のデータ型を全く別の形式に変更または変換することができます。
次のセクションでは、astype()関数の構文について詳しく見ていきましょう。
この記事もチェック:PythonでPandasデータフレームの列の順序を変更する4つの方法
構文 – astype() 関数
以下の構文を見てください。
DataFrame.astype(dtype, copy=True, errors=’raise’)
|
- dtype: データフレーム全体に適用したいデータ型。
- copy: True に設定すると、データセットに変更を加えた別のコピーを作成します。
- エラー。raise’ にセットすることで、関数が例外を発生させることを許可します。そうでない場合は、’ignore’に設定します。
関数の構文を理解したところで、次はその実装に焦点を当てましょう。
1. Python astype()とDataFrameの組み合わせ
この例では、pandas.DataFrame() メソッドを用いて、以下のように辞書からDataFrameを作成しました。
例えば、以下の様になります。
import pandas as pd
data = {"Gender":['M','F','F','M','F','F','F'], "NAME":['John','Camili','Rheana','Joseph','Amanti','Alexa','Siri']}
block = pd.DataFrame(data)
print("Original Data frame:)
print(block)
block.dtypes |
結果は以下の通りです。
キーの元のデータ型を見てみましょう。
Original Data frame: Gender NAME
0 M John
1 F Camili
2 F Rheana
3 M Joseph
4 F Amanti
5 F Alexa
6 F Siri
Gender object
NAME object
dtype: object
|
ここで、’Gender’ カラムに astype() メソッドを適用し、データ型を ‘category’ に変更しました。
block['Gender'] = block['Gender'].astype('category')
block.dtypes |
結果は以下の通りです。
Gender categoryNAME object
dtype: object
|
この記事もチェック:Pandas DataFrameの単一カラムの名前を変更する
2. データセットによるPython astype()の実装
ここでは、pandas.read_csv()関数を用いてデータセットをインポートしています。
データセットはこちらで確認できます。
例えば、以下の様になります。
import pandas
BIKE = pandas.read_csv("Bike.csv")
BIKE.dtypes |
カラムの元のデータ型は
temp float64hum float64windspeed float64cnt int64season_1 int64season_2 int64season_3 int64season_4 int64yr_0 int64yr_1 int64mnth_1 int64mnth_2 int64mnth_3 int64mnth_4 int64mnth_5 int64mnth_6 int64mnth_7 int64mnth_8 int64mnth_9 int64mnth_10 int64mnth_11 int64mnth_12 int64weathersit_1 int64weathersit_2 int64weathersit_3 int64holiday_0 int64holiday_1 int64dtype: object
|
ここで、変数’season_1’と’temp’のデータ型を変更することにしました。
このように、astype()関数を使えば、複数のカラムのデータ型を一度に変更することができますね。
BIKE = BIKE.astype({"season_1":'category', "temp":'int64'})
BIKE.dtypes |
出力してみましょう。
temp int64hum float64windspeed float64cnt int64season_1 categoryseason_2 int64season_3 int64season_4 int64yr_0 int64yr_1 int64mnth_1 int64mnth_2 int64mnth_3 int64mnth_4 int64mnth_5 int64mnth_6 int64mnth_7 int64mnth_8 int64mnth_9 int64mnth_10 int64mnth_11 int64mnth_12 int64weathersit_1 int64weathersit_2 int64weathersit_3 int64holiday_0 int64holiday_1 int64dtype: object
|
まとめ
ここまでで、このトピックは終了です。
もし何か疑問があれば、お気軽にコメントください。
Pythonに関連するこのような記事のために、ご期待ください、そして、それまで、幸せな学習!