pandasのSeries型は、1次元のデータを扱うためのオブジェクトで、1次元データの各データに名前(index)を付けることができます。pandasを使用する際に最も基礎的な要素となるデータ型です。
Series型オブジェクトの生成方法、各データとindexの操作・変更方法についてまとめました。
目次
Series型オブジェクトの生成
Series関数にデータのリストを渡すことで、Series型オブジェクトを生成することができます。
例:Series型オブジェクトを生成
import pandas as pd data = [9, 21, 2] ds = pd.Series(data) print(ds)
出力:
0 9 1 21 2 2 dtype: int64
Series型オブジェクトを生成することができました。右側の列がデータで、左側の列が各データの名前(index)となっています。今回はindexを指定しなかったので、自動的に整数値が割り振られました。
次は、indexを指定してSeries型オブジェクトを生成します。
Series関数の二つ目の引数にindexのリストを渡せば可能ですが、dataのリストとindexのリストは、同じ長さにしておく必要があります。
例:indexを指定してSeries型オブジェクトを生成
import pandas as pd data = [9, 21, 2] index = ["apple", "orange", "grape"] ds = pd.Series(data, index) print(ds)
出力:
apple 9 orange 21 grape 2 dtype: int64
各データにindexを付けることができました。
辞書のキーをindex、バリューをデータとしてSeries型オブジェクトを生成することもできます。
例:辞書型からSeries型オブジェクトを生成
import pandas as pd dict = {"apple":9, "orange":21, "grape":2} ds = pd.Series(dict) print(ds)
出力:
apple 9 orange 21 grape 2 dtype: int64
辞書型からSeries型オブジェクトを生成することができました。
データ、indexの操作
データはvalues属性、indexはindex属性を用いてSeries型から抽出することができます。
例:Series型からデータとindexを抜き取り
import pandas as pd dict = {"apple":9, "orange":21, "grape":2} ds = pd.Series(dict) print(ds.values) print(ds.index)
出力:
[ 9 21 2] Index(['apple', 'orange', 'grape'], dtype='object')
例:インデックス番号でデータとindexを取得
values属性もindex属性も通常のリストとは違った型ですが、リストと同様にインデックス番号を用いて扱うことができます。
import pandas as pd dict = {"apple":9, "orange":21, "grape":2} ds = pd.Series(dict) print(ds.values[1]) print(ds.index[1])
出力:
21 orange
例:indexを指定してデータを取得
indexを指定して、対応するデータを取得することができます。
import pandas as pd dict = {"apple":9, "orange":21, "grape":2} ds = pd.Series(dict) print(ds["orange"])
出力:
21
データ、indexの変更
Series型オブジェクトのデータとindexは、後から変更可能です。
例:Series型オブジェクトのデータを変更
orangeのデータを21→0に変更する。
import pandas as pd dict = {"apple":9, "orange":21, "grape":2} ds = pd.Series(dict) ds.values[1] = 10 print(ds)
出力:
apple 9 orange 10 grape 2 dtype: int64
index:orangeのデータが修正されました。
例:Series型オブジェクトのindexを変更
index:orange→melonに修正する。
import pandas as pd dict = {"apple":9, "orange":21, "grape":2} ds = pd.Series(dict) ds.index=["apple", "melon", "grape"] print(ds)
出力:
apple 9 melon 21 grape 2 dtype: int6
orangeがmelonに変更されました。
ここで、index属性は個別の変更は不可能(イミュータブル)であることに注意してください。 ds.index[1] = "melon"
ではエラーが発生します。