【Python】データフレームの列の型を変換する方法(Pandas.DataFrame.astype)

Python

本記事では、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の中には辞書型の内容で型を変換しますので、いくらでも変換することが可能です。

参照サイト

公式ドキュメント

pandas.DataFrame.astype — pandas 2.2.0 documentation

安定のnkmk

pandasのデータ型dtype一覧とastypeによる変換(キャスト) | note.nkmk.me
pandas.Seriesは一つのデータ型dtype、pandas.DataFrameは列ごとにそれぞれデータ型dtypeを保持している。dtypeは、コンストラクタで新たにオブジェクトを生成する際やCSVファイルなどから読み込む際に指定できる。また、astype()メソッドで型変換(キャスト)することも可能。pand...

まとめ

以上がPythonのPandasデータフレームの列の型変換になります。

列の型を変換するメリットとしては、その後の処理を扱いやすく、特に列同士の処理が必要な場合にその前段として行うことがほとんどです。
そしてPythonでデータフレームを取り扱う場合、その全貌がはじめから想定の通りになっていることは稀です。数字のデータが入っているのに、型としては文字列になっていることは頻繁に起こります。そんな時にこの列の型変換が有効な手段です。

データサイエンスの前処理の現場では、当たり前のように使われている処理ですので、ぜひマスターしてみてください。

サイト内関連記事

【Python】高効率でデータフレームをローカルに保存する(Pandas.DataFrame.to_parquet)
先日YouTubeでPandasデータフレームのto_csvメソッドは最遅方法であることを解説してくれた動画を拝見しました。自分でも実行してみたら、まさにその通りでびっくりでしたので、記事にまとめます。データの前処理を一時保存したり、処理の...
【Python】データフレームで文字を指定して列を分割する(pd.DataFrame / str.split)
本記事は、PythonのライブラリPandasのデータフレームの列の分割について解説した記事になります。データフレームの1列を分割するようなシチュエーションは、だいたい前処理の過程でしょう。例えばメールアドレスからドメイン数を集計したかった...
データサイエンティストの書評ブログ
趣味が読書くらいしかない駆け出しデータサイエンティストの書評ブログです。日々の勉強のアウトプットや趣味の読書のおすすめをしていきます。

転職・スキルアップはこちらからどうぞ

オススメ転職はこちらからどうぞ
オススメのスキルアップはこちらからどうぞ

コメント