pandas.Series.name のサンプルコード

2025-03-21

pandas ライブラリで、pandas.Series.name は、Series の名前 を取得するための属性です。

Series は、データの 1 次元配列を表しますが、この配列全体に名前を付けることができます。 この名前は name 属性に格納されており、pandas.Series.name を使って参照できます。

Series の名前を設定することもできます。 例えば、次のようなコードで、人口データの Series に "人口" という名前を設定できます。

import pandas as pd

data = [12571000, 12345000, 11533000]
population = pd.Series(data, index=['東京', '大阪', '名古屋'])
population.name = '人口'

print(population)

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

人口
東京    12571000
大阪    12345000
名古屋    11533000
dtype: int64

ご覧のように、Series の先頭に "人口" という名前が表示されています。



pandas で pandas.Series.name を扱う際に発生する可能性のあるエラーと、その解決方法について説明します。

名前が存在しない

Series に最初から名前が設定されていない場合、pandas.Series.name にアクセスしようとすると、属性エラー (AttributeError) が発生します。

解決方法

  • Series を作成する際に、名前を明示的に設定することができます。 例えば、次のように name 引数を使って名前を指定できます。
  • 名前を取得する前に、name 属性が実際に存在するかを確認しましょう。 hasattr(series, 'name') を使ってチェックできます。
import pandas as pd

data = [10, 20, 30]
temperatures = pd.Series(data, index=['東京', '大阪', '名古屋'], name='気温')
print(temperatures.name)  # 出力: 気温

名前が予約語と衝突する

Python の予約語 (keywords) と同じ名前を name に設定しようとすると、エラーは発生しませんが、予期しない動作を引き起こす可能性があります。

解決方法

  • name には、Python の予約語以外の英数字とアンダースコア (_) を使用しましょう。 予約語の一覧は、Python の公式ドキュメントを参照してください。

名前が列名と衝突する

DataFrame に Series を追加する際、Series の名前が既存の列名と衝突すると、予期しない動作やエラーが発生することがあります。

解決方法

  • inplace=True オプションを使って既存の列を上書きする方法もありますが、慎重に操作してください。
  • Series を DataFrame に追加する前に、name 属性を変更するか、DataFrame の既存の列名を変更しましょう。

トラブルシューティングのヒント

  • pandas の公式ドキュメント (pandas.Series.name) を参照しましょう。 使い方や注意点が詳しく記載されています。
  • エラーメッセージをよく読みましょう。 エラーメッセージには、問題の解決に役立つ情報がしばしば含まれています。
  • 同じようなデータを扱う Series には、一貫性のある命名規則を使用しましょう。
  • Series を作成する際に、常に意味のある名前を付けるようにしましょう。 データの内容を反映した名前を付けると、コードの見やすさが向上します。


Series の作成時に名前を設定する

この例では、販売数を表す Series を作成し、"販売数" という名前を設定します。

import pandas as pd

data = [100, 150, 200]
sales = pd.Series(data, index=['商品A', '商品B', '商品C'], name='販売数')

print(sales)
販売数
商品A    100
商品B    150
商品C    200
dtype: int64

Series の名前を取得する

この例では、既存の Series の名前を取得します。

import pandas as pd

# 上記のコード (販売数の Series) を利用

name = sales.name
print(name)  # 出力: 販売数

Series の名前を変更する

この例では、Series の名前を変更します。

import pandas as pd

# 上記のコード (販売数の Series) を利用

sales.name = '売上高'
print(sales)

このコードを実行すると、Series の名前が "販売数" から "売上高" に変更されます。

DataFrame に Series を名前付きで追加する

この例では、Series を DataFrame に追加し、名前を指定します。

import pandas as pd

data = {'商品': ['A', 'B', 'C'], '在庫数': [50, 30, 10]}
df = pd.DataFrame(data)

# 上記のコード (販売数の Series) を利用

df['販売数'] = sales

print(df)

このコードを実行すると、"販売数" という名前の列が DataFrame に追加されます。

Series の名前を使って DataFrame の列名を取得する

この例では、Series の名前を使って DataFrame の列名を取得します。

import pandas as pd

# 上記のコード (販売数の Series と DataFrame) を利用

column_name = df.get_column(sales.name)
print(column_name)  # 出力: 販売数


アクセサー

pandas.Series には、name 属性の代わりにアクセサーと呼ばれるプロパティを使用することができます。 アクセサーは属性と同じように機能しますが、より直感的な名前で操作できます。

import pandas as pd

data = [10, 20, 30]
temperatures = pd.Series(data, index=['東京', '大阪', '名古屋'])
print(temperatures.name)  # 属性を使った方法 (上記と同じ)

# アクセサーを使った方法
print(temperatures.axes[0]) 

このコードでは、axes プロパティを使って Series のラベルを取得しています。 axes はタプルになっており、インデックス (0番目) と列名 (1番目) を保持しています。

DataFrame の列属性

Series を DataFrame の列として追加した場合、その名前は DataFrame の列属性からもアクセスできます。

import pandas as pd

data = {'都市': ['東京', '大阪', '名古屋'], '気温': [10, 20, 30]}
df = pd.DataFrame(data)

print(df['気温'].name)  # 出力: 気温

このコードでは、DataFrame の '気温' 列の name 属性を使って名前を取得しています。

rename メソッド

Series や DataFrame の名前を一括で変更したい場合は、rename メソッドを使用できます。

import pandas as pd

data = [10, 20, 30]
temperatures = pd.Series(data, index=['東京', '大阪', '名古屋'], name='気温')

# 名前を一括変更
temperatures = temperatures.rename('日中最高気温')
print(temperatures.name)  # 出力: 日中最高気温
  • rename メソッドは名前の一括変更に適していますが、元の Series を変更せずに新しい Series を生成するので注意が必要です。
  • アクセサーや DataFrame の列属性は、Series が単独ではなく DataFrame の一部として存在する場合に便利です。