【Python】Pandas Seriesのデータ参照と更新(インデックス・属性アクセス)

Pandasの Series は、リストと辞書の両方の性質を併せ持ったデータ構造です。そのため、定義したインデックス(ラベル)を使用して直感的に個別のデータにアクセスしたり、値を書き換えたりすることが可能です。

本記事では、インデックス指定によるデータの取得方法と、属性(ドット)記法を用いたアクセス、およびそれらを使用したデータの更新方法について解説します。

目次

データの参照と更新方法

Series内の要素へのアクセスには、主に以下の2つの方法があります。

  1. ブラケット記法 []: 辞書のようにキー(インデックス)を指定する方法。最も安全で一般的です。
  2. ドット記法 . : オブジェクトの属性としてインデックス名を指定する方法。コードが簡潔になりますが、インデックス名が予約語やスペースを含む場合は使用できません。

以下に、週間気温データを例にした実装コードを示します。

import pandas as pd

def manage_temperature_data():
    """
    Pandas Seriesにおけるデータの参照と更新を実演する関数
    """
    # 週間天気予報の最高気温データを作成
    # indexに曜日を指定
    temperatures = [24.5, 25.0, 23.8, 26.1]
    days = ["Monday", "Tuesday", "Wednesday", "Thursday"]
    
    series_temp = pd.Series(temperatures, index=days, name="Temperature")
    
    print("--- 初期データ ---")
    print(series_temp)
    print("\n")


    # 1. データの参照
    print("=== データの参照 ===")
    
    # ブラケット記法によるアクセス (辞書形式)
    # 文字列のインデックスをキーとして値を指定
    temp_mon = series_temp["Monday"]
    print(f"Mondayの気温 (ブラケット参照): {temp_mon}")

    # ドット記法によるアクセス (属性形式)
    # インデックス名をそのままプロパティのように記述
    temp_tue = series_temp.Tuesday
    print(f"Tuesdayの気温 (ドット参照)  : {temp_tue}")
    print("\n")


    # 2. データの更新
    print("=== データの更新 ===")
    
    # ブラケット記法で値を上書き
    # Wednesdayの気温を修正
    series_temp["Wednesday"] = 28.5
    print(f"Wednesdayを更新しました: {series_temp['Wednesday']}")

    # ドット記法で値を上書き
    # Thursdayの気温を修正
    series_temp.Thursday = 27.0
    print(f"Thursdayを更新しました : {series_temp.Thursday}")

    print("\n--- 更新後のデータ ---")
    print(series_temp)

if __name__ == "__main__":
    manage_temperature_data()

実行結果

--- 初期データ ---
Monday       24.5
Tuesday      25.0
Wednesday    23.8
Thursday     26.1
Name: Temperature, dtype: float64


=== データの参照 ===
Mondayの気温 (ブラケット参照): 24.5
Tuesdayの気温 (ドット参照)  : 25.0


=== データの更新 ===
Wednesdayを更新しました: 28.5
Thursdayを更新しました : 27.0

--- 更新後のデータ ---
Monday       24.5
Tuesday      25.0
Wednesday    28.5
Thursday     27.0
Name: Temperature, dtype: float64

注意点:ドット記法の制限

ドット記法(series.label)は記述が簡単で可読性が高いですが、万能ではありません。以下のケースでは必ずブラケット記法(series["label"])を使用する必要があります。

  • インデックス名が有効なPython識別子でない場合: スペースが含まれている(例: "New York")、数字で始まっている(例: "1st_Day")など。
  • Seriesのメソッド名と重複する場合: sum, max, index, values などの名前がインデックスに使われている場合、ドット記法を使うとデータではなくメソッド自体が参照されてしまいます。

基本的にはブラケット記法を使用し、対話的な分析など手軽さが必要な場面でドット記法を活用するのが一般的です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次