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

Python Pandas CategoricalIndex – 辞書のような対応関係を使って値をマップする方法

辞書(dict)のような対応関係を使用して値をマップするには、PandasのCategoricalIndex.map()メソッドを使用します。このメソッドに辞書を渡すと、カテゴリの値が対応する値へと変換されます。

CategoricalIndex.map()メソッドの基本的な使い方

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

import pandas as pd

次に、「categories」パラメータでカテゴリカルデータのカテゴリを設定し、「ordered」パラメータを指定して順序付きのカテゴリカルとして扱います。

catIndex = pd.CategoricalIndex(["P", "Q", "R", "S","P", "Q", "R", "S"], ordered=True, categories=["P", "Q", "R", "S"])

作成したCategoricalIndexを表示します。

print("CategoricalIndex...\n",catIndex)

辞書を使ってカテゴリをマップします。ここでは「P」を5、「Q」を10、「R」を15、「S」を20に変換しています。

print("\nCategoricalIndex after mapping...\n",catIndex.map({'P': 5, 'Q': 10, 'R': 15, 'S': 20}))

サンプルコード

以下に完全なコード例を示します。

import pandas as pd

# 「categories」パラメータでカテゴリを設定
# 「ordered」パラメータで順序付きとして扱う
catIndex = pd.CategoricalIndex(["P", "Q", "R", "S","P", "Q", "R", "S"], ordered=True, categories=["P", "Q", "R", "S"])

# CategoricalIndexを表示
print("CategoricalIndex...\n",catIndex)

# カテゴリを取得して表示
print("\nDisplayingCategories from CategoricalIndex...\n",catIndex.categories)

# 辞書を使ってカテゴリをマップ
print("\nCategoricalIndex after mapping...\n",catIndex.map({'P': 5, 'Q': 10, 'R': 15, 'S': 20}))

実行結果

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

CategoricalIndex...
CategoricalIndex(['P', 'Q', 'R', 'S', 'P', 'Q', 'R', 'S'], categories=['P', 'Q', 'R', 'S'], ordered=True, dtype='category')

DisplayingCategories from CategoricalIndex...
Index(['P', 'Q', 'R', 'S'], dtype='object')

CategoricalIndex after mapping...
CategoricalIndex([5, 10, 15, 20, 5, 10, 15, 20], categories=[5, 10, 15, 20], ordered=True, dtype='category')

解説

実行結果からわかるように、map()メソッドに辞書を渡すことで、元のカテゴリ「P」「Q」「R」「S」がそれぞれ数値の「5」「10」「15」「20」に置き換えられています。マップ後もCategoricalIndexの構造は維持され、新しいカテゴリ(5、10、15、20)と順序情報(ordered=True)が引き継がれている点に注目してください。

なお、map()メソッドには辞書以外にも関数やSeriesを渡すことができ、柔軟な値の変換が可能です。マッピング対象に存在しないキーを持つ要素はNaNになりますので、事前にカテゴリの内容を確認しておくことをおすすめします。

  1. Python Pandasのnotnull()メソッドでNULL値(NaN)を確認する方法

    Pandasのnotnull()メソッドは、ブール値(True / False)を返すメソッドです。DataFrameにNULL値(NaN)が含まれている場合はFalseを返し、NULL値でない場合はTrueを返します。ここでは、NaN(NULL値)をいくつか含む次のCSVファイルを例にして説明します。CSVファイルの読み込みまず、read_csv()を使ってCSVファイルを読み込みます。dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\CarRecords.csv")NULL値以外(有効なデータ)の確認notnull(

  2. Python Pandas入門:interpolate()メソッドでNaN値を補間して埋める方法

    はじめにPandasでは、interpolate()メソッドを使うことで、DataFrame内の欠損値(NaN)を補間によって効率的に埋めることができます。このメソッドは、前後の値をもとに線形補間を行い、データの流れを保ちながら自然な形で欠損値を推定します。ここでは、Microsoft Excelで開いた以下のようなCSVファイルを例に説明します。このデータには一部NaN値が含まれています。1. CSVファイルからデータを読み込むまず、read_csv()関数を使って、CSVファイルのデータをPandas DataFrameに読み込みます。dataFrame = pd.read_csv(C:\