Pandasのデータ型(dtypes)は、データ分析をするうえで非常に重要な要素です。
なぜなら、データ型の違いによって演算方法、メモリ使用量、処理速度が変わるからです。
ここでは、Pandasで扱う代表的なデータ型を詳しく解説していきます。
目次
Pandasのデータ型の基本
Pandasでは、各列(Series)ごとにdtype(データ型)を持ちます。
これはNumPyのデータ型に基づいており、表形式データを効率的に処理できるように設計されています。
よく使われる基本的な型は以下の通りです。
- 数値型
int64
: 整数(例: 1, 2, -5)float64
: 浮動小数点数(例: 3.14, -0.001)
- 文字列型
object
: 汎用オブジェクト型(通常は文字列が格納される)string
: 新しい文字列専用dtype(Pandas 1.0以降)
- ブール型
bool
: True / False
- 日付・時間型
datetime64[ns]
: 日付や日時(例: 2025-08-26 12:00:00)timedelta64[ns]
: 日時の差分
- カテゴリ型
category
: カテゴリカルデータ(値の種類が少ないときに効率的)
データ型の確認・変換
確認方法
import pandas as pd
df = pd.DataFrame({
"id": [1, 2, 3],
"name": ["Alice", "Bob", "Charlie"],
"score": [95.5, 88.0, 72.5],
"passed": [True, True, False],
"date": pd.to_datetime(["2023-01-01", "2023-01-02", "2023-01-03"])
})
print(df.dtypes)
代表的なデータ型の特徴と用途
数値型(int, float)
int64
:整数演算に最適float64
:小数を扱う計算に必要- 用途:売上金額、点数、センサー値など
文字列型(object, string)
object
は従来から使われてきた型で、文字列以外も混在可能string
は文字列専用でメソッドが安定している- 用途:名前、住所、商品コードなど
ブール型(bool)
True
/False
を保持- フィルタリングや条件分岐でよく使用
- 用途:合格判定、フラグ列
日付・時間型(datetime64, timedelta64)
datetime64[ns]
は日付/時刻を効率的に保持timedelta64[ns]
は時間差を保持- 用途:イベントのタイムスタンプ、セッションの長さ
カテゴリ型(category)
- 値の種類が少ない場合にメモリ効率が良い
- 用途:性別(男/女)、都道府県、商品カテゴリなど
データ型による処理の違い
- 数値型なら統計量 (
mean
,sum
) が計算できる - 文字列型なら文字列メソッド (
str.lower
,str.contains
) が使える - 日付型なら日時演算 (
dt.year
,dt.month
) が使える - カテゴリ型なら高速なグルーピング (
groupby
) が可能
データ型選択のベストプラクティス
- 文字列はできるだけ
string
dtype を使う- 一貫性があり、今後のPandas開発の方向性に沿っている
- カテゴリ型を活用する
- 値が少ない列は
category
にするとメモリ削減+処理高速化
- 値が少ない列は
- 数値は精度に応じて選択
- ID列なら
int32
で十分な場合もある - 金額や点数は
int64
やfloat64
を利用
- ID列なら
- 日付データは必ず
datetime64
に変換- 文字列のままでは日付演算ができない
まとめ
Pandasのデータ型を正しく理解・設定することは、メモリ効率を高め、処理速度を上げ、分析を正確にするための第一歩です。
特にcategory
やdatetime64
を積極的に活用することで、大規模データでも快適に扱えるようになります。
以上、PythonのPandasのデータ型についてでした。
最後までお読みいただき、ありがとうございました。