Pandas Index オブジェクト
Pandas の Index オブジェクトは軸ラベルを識別するための基底クラスであり、データのインデックスを表現・管理するための豊富な機能を提供します。
以下は、Index オブジェクトの主な特徴と用途です:
- 一意の識別:
Indexオブジェクトはデータに一意の識別子を提供します。これはデータの選択と操作にとって重要です。 - ラベルベース:Python リストのインデックスのような位置ベースのインデックスとは異なり、
Indexラベルベースのインデックスを可能にし、データ操作をより直感的で柔軟にします。 - データ型のサポート:
Index整数、浮動小数点数、文字列、日時など、さまざまな型のデータを格納できます。
Pandas は、さまざまなシナリオに応じていくつかの異なる Index タイプを提供します:
- RangeIndex:メモリ効率の良い整数値インデックスオブジェクトで、Python の
rangeオブジェクト。 - Index:最も基本的なインデックスタイプで、あらゆる型のデータを含めることができます。
- MultiIndex:複数のインデックスレベルを持てるマルチレベルインデックスで、データフレームの複数の列に似ています。
- DatetimeIndex:日時データに最適化されたインデックスで、日時関連の機能を提供します。
- PeriodIndex:年や四半期などの期間に基づくインデックスです。
- TimedeltaIndex:時間差(Δt)に基づくインデックスです。
Index コンストラクタ
| クラス/メソッド | 説明 |
|---|---|
pd.Index(data, dtype, name) |
Index オブジェクトを作成します。カスタムデータ、データ型、名前をサポートします。 |
Index 属性
| 属性 | 説明 |
|---|---|
Index.values |
Index のデータ部分(numpy 配列)を返します。 |
Index.dtype |
Index のデータ型を返します。 |
Index.name |
Index の名前を返すか設定します。 |
Index.shape |
Index の形状(タプル形式)を返します。 |
Index.size |
Index 内の要素の数を返します。 |
Index.nlevels |
Index の階層数を返します(MultiIndex の場合)。 |
Index.is_unique |
Index 内の値が一意かどうかを確認します。 |
Index.is_monotonic |
Index が単調増加かどうかを確認します。 |
Index.is_monotonic_decreasing |
Index が単調減少かどうかを確認します。 |
Index.has_duplicates |
Index に重複する値があるかどうかを確認します。 |
Index.empty |
Index が空かどうかを確認します。 |
Index メソッド
データ操作
| メソッド | 説明 |
|---|---|
Index.append(other) |
現在の Index に別の Index を追加します。 |
Index.drop(labels) |
指定したラベルを削除します。 |
Index.insert(loc, item) |
指定した位置に要素を挿入します。 |
Index.unique() |
Index 内の一意の値を返します。 |
Index.drop_duplicates() |
重複する値を削除します。 |
Index.sort_values() |
値でソートします。 |
Index.sort_values(ascending=False) |
値で降順にソートします。 |
Index.tolist() |
Index をリストに変換します。 |
Index.to_numpy() |
Index を numpy 配列に変換します。 |
Index.to_frame() |
Index を DataFrame に変換します。 |
Index.astype(dtype) |
Index を指定のデータ型に変換します。 |
Index.map(func) |
Index 内の各要素に関数を適用します。 |
Index.where(cond, other) |
条件に基づいて値を置換します。 |
Index.mask(cond, other) |
条件に基づいて値を置換します(whereとは反対)。 |
インデックス操作
| メソッド | 説明 |
|---|---|
Index.get_loc(key) |
指定したラベルの位置を返します。 |
Index.get_indexer(target) |
現在の Index 内での、対象の Index の位置を返します。 |
Index.slice_locs(start, end) |
指定した範囲のスライス位置を返します。 |
Index.intersection(other) |
2 つの Index の共通部分(交差)を返します。 |
Index.union(other) |
2 つの Index の和集合を返します。 |
Index.difference(other) |
2 つの Index の差集合を返します。 |
Index.symmetric_difference(other) |
2 つの Index の対称差集合を返します。 |
Index.isin(values) |
Index 内の値が指定したリストに含まれているかどうかを確認します。 |
Index.reindex(target) |
対象の Index に基づいて再インデックスします。 |
Index.reindex_like(other) |
別の Index に基づいて再インデックスします。 |
統計計算
| メソッド | 説明 |
|---|---|
Index.min() |
Index 内の最小値を返します。 |
Index.max() |
Index 内の最大値を返します。 |
Index.argmin() |
最小値のインデックス位置を返します。 |
Index.argmax() |
最大値のインデックス位置を返します。 |
Index.value_counts() |
Index 内の各値の頻度を返します。 |
MultiIndex メソッド
| メソッド | 説明 |
|---|---|
pd.MultiIndex.from_arrays() |
配列から MultiIndex を作成します。 |
pd.MultiIndex.from_tuples() |
タプルから MultiIndex を作成します。 |
pd.MultiIndex.from_product() |
デカルト積から MultiIndex を作成します。 |
MultiIndex.levels |
MultiIndex の階層(レベル)を返します。 |
MultiIndex.codes |
MultiIndex のコード(codes)を返します。 |
MultiIndex.swaplevel(i, j) |
2 つの階層(レベル)の位置を交換します。 |
MultiIndex.droplevel(level) |
指定した階層(レベル)を削除します。 |
MultiIndex.set_levels(levels) |
MultiIndex の階層(レベル)を設定します。 |
MultiIndex.set_codes(codes) |
MultiIndex のコード(codes)を設定します。 |
例
例
import pandas as pd
# Index を作成
idx = pd.Index([1, 2, 3], name='MyIndex')
# 属性を確認
print(idx.values) # データ部分を出力
print(idx.name) # 名前を出力
# データ操作
idx_new = idx.append(pd.Index([4, 5]))
print(idx_new) # 追加後の Index を出力
# インデックス操作
print(idx.get_loc(2)) # ラベル 2 の位置を出力
# MultiIndex 操作
arrays = [[1, 1, 2, 2], ['A', 'B', 'A', 'B']]
multi_idx = pd.MultiIndex.from_arrays(arrays, names=('Num', 'Letter'))
print(multi_idx)
# Index を作成
idx = pd.Index([1, 2, 3], name='MyIndex')
# 属性を確認
print(idx.values) # データ部分を出力
print(idx.name) # 名前を出力
# データ操作
idx_new = idx.append(pd.Index([4, 5]))
print(idx_new) # 追加後の Index を出力
# インデックス操作
print(idx.get_loc(2)) # ラベル 2 の位置を出力
# MultiIndex 操作
arrays = [[1, 1, 2, 2], ['A', 'B', 'A', 'B']]
multi_idx = pd.MultiIndex.from_arrays(arrays, names=('Num', 'Letter'))
print(multi_idx)
より詳細な情報が必要な場合は、以下を参照できます:Pandas 公式ドキュメント。
その他の拡張