Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python PandasのMultiIndexでコード(各ラベルの位置)を取得する方法

PandasのMultiIndexでコード(各ラベルの位置情報)を取得するには、MultiIndex.codesプロパティを使用します。この記事では、実際のコード例を通じて、MultiIndexの作成からcodesプロパティによるラベル位置の取得までをわかりやすく解説します。

MultiIndexとは

MultiIndexは、Pandasオブジェクトに対して使用できる多次元(階層的)なインデックスオブジェクトです。複数のレベルを持つインデックスにより、より複雑なデータ構造を表現できます。

まず、必要なライブラリをインポートします。

import pandas as pd

MultiIndexの作成手順

1. 配列を作成する

インデックスのもととなる配列を作成します。ここでは、順位と学生名の2つの配列を用意します。

arrays = [[1, 2, 3, 4, 5], ['John', 'Tim', 'Jacob', 'Chris', 'Keiron']]

2. from_arrays()でMultiIndexを生成する

「names」パラメータを使用すると、各インデックスレベルに名前を設定できます。from_arrays()メソッドを使って、配列からMultiIndexを作成します。

multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

3. codesプロパティで各ラベルの位置を取得する

MultiIndex内の各ラベルの位置(コード)は、以下のように取得できます。

print("\nMultiIndex内の各ラベルの位置...\n", multiIndex.codes)

完全なサンプルコード

以下が実行可能なコード全体です。

import pandas as pd

# MultiIndexは、Pandasオブジェクト用の多階層インデックスオブジェクト
# 配列を作成
arrays = [[1, 2, 3, 4, 5], ['John', 'Tim', 'Jacob', 'Chris', 'Keiron']]

# 「names」パラメータで各インデックスレベルに名前を設定
# from_arrays()でMultiIndexを作成
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

# MultiIndexを表示
print("MultiIndex...\n", multiIndex)

# MultiIndexのレベルを取得
print("\nMultiIndexのレベル...\n", multiIndex.levels)

# MultiIndex内の各ラベルの位置を取得
print("\nMultiIndex内の各ラベルの位置...\n", multiIndex.codes)

実行結果

上記のコードを実行すると、次のような出力が得られます。

MultiIndex...
MultiIndex([(1,   'John'),
            (2,    'Tim'),
            (3,  'Jacob'),
            (4,  'Chris'),
            (5, 'Keiron')],
           names=['ranks', 'student'])

MultiIndexのレベル...
   [[1, 2, 3, 4, 5], ['Chris', 'Jacob', 'John', 'Keiron', 'Tim']]

MultiIndex内の各ラベルの位置...
   [[0, 1, 2, 3, 4], [2, 4, 1, 0, 3]]

出力結果のポイント

注目すべき点として、levelsでは各レベルの値がソートされた状態で表示されていることがわかります。例えば、学生名のレベルは「Chris」「Jacob」「John」「Keiron」「Tim」とアルファベット順になっています。

一方、codesは各ラベルがlevels内のどの位置に対応するかを示す整数値です。例えば、最初の行「(1, 'John')」では、ranksレベルの「1」は位置0、studentレベルの「John」は位置2にあるため、codesは[0, ..., 2]のように表現されます。

  1. Python Pandas CategoricalIndex – カテゴリコードを取得する方法

    Pandas の CategoricalIndex からカテゴリコードを取得するには、codes プロパティを使用します。codes プロパティは、実際の値が categories 配列の中でどの位置にあるかを示す整数値の配列を返します。必要なライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pdCategoricalIndex の作成CategoricalIndex は、限られた(通常は固定された)数の取り得る値、つまり「カテゴリ」のみを持つことができます。categories パラメータを使ってカテゴリを設定し、ordered パラメータを使

  2. Python Pandas - 期間(Period)の秒コンポーネントを取得する方法

    PandasのPeriodオブジェクトから「秒」のコンポーネントを取得するには、period.secondプロパティを使用します。この記事では、具体的なコード例とともに、その使い方をわかりやすく解説します。必要なライブラリのインポートまず、pandasをインポートします。import pandas as pdPeriodオブジェクトとはpandas.Periodは、特定の期間(時点)を表すオブジェクトです。日付や時刻の情報を保持し、頻度(freq)を指定することで、年・月・日・時・分・秒などの単位で期間を扱うことができます。ここでは、2つのPeriodオブジェクトを作成してみましょう。1つ目は