本記事では、PythonライブラリPandasのデータフレームにおける列の型を変換する方法を紹介します。
データサイエンスの現場において、データフレーム列の型を変換するシチュエーションとして、数値データだと思っていた列が実は文字列になっていた場合や、time列を時系列データとして取り扱うための変換(本記事の解説対象外)などがあります。
列同士の計算を行いたいときに、列の型が文字列だと、それが数値の文字列でも文字列の結合が行われ、数字の計算は行われません。それを解消する方法として列の型の変換があります。他には、文字列データか数値列のデータか曖昧な場合(もしくはどちらも両方入ってくる可能性がある場合)その後の処理を統一するために型の変換を行うことがあります。
それでは早速中身を見ていきましょう。
該当コード
まずは準備から
import pandas as pd
df = pd.read_csv('data.csv')
データフレーム全体に対する型変換
df_all = df.astype('float64')
特定の列に対する型変換
df_indivi = df.astype({'column1':int})
複数の列に対する型変換
df_indivis = df.astype({'column1':int, 'column2':str})
解説
上記紹介した処理についてそれぞれ以下で解説します。
- データフレーム全体に対する型変換
列全体に対する型変換は、データフレームオブジェクトの後に「.astype(“型”)」とすればできます。とはいえ、これを必要とする処理やデータはちょっとよくわかりません。なかなか統一的に処理できるデータフレームも稀でしょう。なので「これもできる」と、引き出しにしまっておくことのが良いでしょう。
- 特定の列に対する型変換
これが最も使う可能性の高い処理です。特定のの型を変換する処理です。こちらは、冒頭でも記載した通り、中身は数字のデータでしかないにも関わらず、データ型としては文字列になっているデータの変換などの場合に使用する可能性があります。
そのほか、逆のパターンとして、数字を数字ではなく文字列として扱いたい場合などにも使用することがあります。
- 複数の列に対する型変換
これは直前の処理の複数版です。複数の列を一つの処理の中で一気に処理するときの方法です。astypeの中には辞書型の内容で型を変換しますので、いくらでも変換することが可能です。
参照サイト
公式ドキュメント
安定のnkmk
まとめ
以上がPythonのPandasデータフレームの列の型変換になります。
列の型を変換するメリットとしては、その後の処理を扱いやすく、特に列同士の処理が必要な場合にその前段として行うことがほとんどです。
そしてPythonでデータフレームを取り扱う場合、その全貌がはじめから想定の通りになっていることは稀です。数字のデータが入っているのに、型としては文字列になっていることは頻繁に起こります。そんな時にこの列の型変換が有効な手段です。
データサイエンスの前処理の現場では、当たり前のように使われている処理ですので、ぜひマスターしてみてください。
コメント