今回は、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に関連するこのような記事のために、ご期待ください、そして、それまで、幸せな学習!