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)

より詳細な情報が必要な場合は、以下を参照できます:Pandas 公式ドキュメント。

その他の拡張