Python Pandas入門:各インデックスレベルに名前を設定したMultiIndexの作成方法
pandasで階層的なインデックス(MultiIndex)を作成するには、pandas.MultiIndex.from_arrays()メソッドを使用します。さらに、各インデックスレベルに名前を付けたい場合は、namesパラメータを指定します。
必要なライブラリのインポート
まず、pandasをインポートします。
import pandas as pd
MultiIndexとは、pandasオブジェクトに対して使用できる多次元(階層型)インデックスオブジェクトのことです。これにより、データを行・列の複数の軸で効率的に分類・集計できるようになります。
配列の作成
次に、MultiIndexのもととなる配列を作成します。ここでは、順位を表す数値のリストと、学生名を表す文字列のリストの2つを用意します。
arrays = [[1, 2, 3, 4, 5], ['John', 'Tim', 'Jacob', 'Chris', 'Keiron']]
namesパラメータで各レベルに名前を付ける
namesパラメータにタプルやリストを渡すことで、各インデックスレベルに任意の名前を設定できます。ここでは「ranks(順位)」と「student(学生)」という名前を付けて、from_arrays()メソッドでMultiIndexを生成します。
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
作成したMultiIndexを表示してみましょう。
print("The Multi-index...\n", multiIndex)
また、names属性にアクセスすることで、MultiIndexの各レベルに設定された名前を確認できます。
print("\nThe names of levels in Multi-index...\n", multiIndex.names)
完全なコード例
以下に、ここまでの手順をまとめた完全なコードを示します。
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("The Multi-index...\n", multiIndex)
# 各レベルの名前を取得して表示
print("\nThe names of levels in Multi-index...\n", multiIndex.names)
実行結果
上記のコードを実行すると、以下のような出力が得られます。
The Multi-index...
MultiIndex([(1, 'John'),
(2, 'Tim'),
(3, 'Jacob'),
(4, 'Chris'),
(5, 'Keiron')],
names=['ranks', 'student'])
The names of levels in Multi-index...
['ranks', 'student']
このように、出力結果から各要素が「ranks」と「student」という2つのレベル名を持つ階層構造になっていることが確認できます。レベル名を付けておくと、後からdf.loc['ranks']のように名前を使ってデータへアクセスできたり、groupbyやpivot操作の際にコードの可読性が大きく向上したりするため、実務でも非常に便利です。
-
Python – レベル名を指定して複数の階層を削除し、インデックスを返す方法
pandasのマルチインデックス(MultiIndex)から、レベル名を指定して複数の階層をまとめて削除したい場合は、multiIndex.droplevel() メソッドを使用します。引数には、削除したいレベルの名前をリスト形式で渡します。必要なライブラリのインポートまず、pandasをインポートします。import pandas as pdマルチインデックスの作成次に、マルチインデックスを作成します。names パラメータを指定すると、インデックスの各階層に名前を付けることができます。multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15,
-
Python Pandas入門:IntervalArrayの各区間の長さを取得してIndexとして返す方法
IntervalArray(区間配列)に含まれる各区間(Interval)の長さを示すエントリを持つ Index を返したい場合は、array.length プロパティを使用します。このプロパティを呼び出すことで、配列内のすべての区間の長さが一括して計算され、Int64型の Index として取得できます。必要なライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pdIntervalオブジェクトの作成次に、2つの Interval オブジェクトを作成します。「closed」パラメータに「both」を指定すると、両端を含む閉区間として設定されます。i