Pythonでデータを扱う際、pandas
ライブラリのDataFrame
は非常に便利なデータ構造です。
データを効率的に処理・分析するためには、「データ型(dtype)」の理解が欠かせません。
本記事では、pandasのデータ型の基本から実践的な型変換方法、型エラーの対処法までを丁寧に解説します。
Contents
データフレームの「型」とは?
pandasでは、各列が1つのデータ型(dtype)を持ちます。
これはNumPyの型をベースにしており、以下のような型があります。
型名 | 説明 | 例 |
---|---|---|
int64 | 整数 | 1, 2, 3 |
float64 | 浮動小数点 | 1.0, 3.14 |
object | 文字列や混合型 | “apple”, “123abc” |
bool | 真偽値 | True, False |
datetime64[ns] | 日時 | 2025-01-01 |
category | カテゴリ型(メモリ効率が高い) | “A”, “B”, “C” |
型を確認する方法
dtypes
属性
import pandas as pd
df = pd.DataFrame({
'id': [1, 2, 3],
'price': [100.5, 200.0, 150.25],
'product': ['apple', 'banana', 'cherry']
})
print(df.dtypes)
出力例
id int64
price float64
product object
dtype: object
info()
メソッド
データ量や欠損値も含めた概要が見られます。
df.info()
型変換(キャスト)の方法
astype()
による変換
df['id'] = df['id'].astype(str) # int → str
df['price'] = df['price'].astype('int') # float → int(小数点切り捨て)
変換できないデータがあるとエラーになります。
失敗を無視したい場合は、errors='ignore'
やerrors='coerce'
を使います。
よくある型変換とその活用例
日付型に変換(文字列 → datetime)
df['order_date'] = pd.to_datetime(df['order_date'], errors='coerce')
errors='coerce'
を指定すると、変換できない値はNaT
(欠損扱い)になります。
カテゴリ型に変換
df['category'] = df['category'].astype('category')
大量の重複データがある場合、メモリ削減・処理速度の向上に効果あり。
型エラーとその対処法
例:文字列を数値に変換しようとして失敗
df['value'] = pd.to_numeric(df['value'], errors='coerce')
文字列や記号が混ざっている場合、errors='coerce'
でNaNに変換できます。
データ型の自動推定に注意!
CSVなどを読み込んだとき、自動的にobject
型になるケースが多いです。
df = pd.read_csv('data.csv')
print(df.dtypes)
必要に応じて、読み込み時にdtype
引数を明示的に指定することが重要です。
型の一括変換・複数列への適用
df = df.astype({'id': 'int64', 'price': 'float64'})
ループで処理も可能です。
for col in ['col1', 'col2']:
df[col] = df[col].astype('float')
型とパフォーマンスの関係
- 不要に
object
型を使うとメモリを多く消費します。 - 分析対象が決まっている列は、
category
型にすることで集計が高速になります。
まとめ
操作 | 方法 |
---|---|
型を確認 | df.dtypes , df.info() |
型を変換 | astype() , to_datetime() , to_numeric() |
型変換エラーの対処 | errors='coerce' , category 型の活用 |
型の明示 | CSV読み込み時のdtype 指定 |
データ型は地味ですが、データ分析の基盤です。
型を正しく扱うことで、エラー回避・処理の高速化・メモリ節約が可能になります。