前回ご説明したとおり、Seriesはシーケンスオブジェクトにindexと呼ばれるラベルをつけることができ、DataFrameの一部として扱うことができます。
読者がコピペしやすいように記述していますが、スクリプトを毎回書くのは手間がかかるためipythonを使用することをおすすめします。
生成
まずはSeriesを生成してみましょう。
ラベル無しで生成する
基本的な生成方法です。シーケンスオブジェクトをコンストラクタの引数に指定します。リストである必要はなくnumpy.array等でもかまいません。
import pandas as pd s = pd.Series([10, 20, 30]) print(s)
以下のように出力されます。
0 10 1 20 2 30 dtype: int64
まず、左側の0〜2がindexと呼ばれる行の名前です。特に指定しない場合は0始まりの整数が付与されます。
indexにラベルをつける
indexは独自にラベルを指定することも可能です。
import pandas as pd s = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) print(s)
以下のように出力されます。
a 1 b 2 c 3 d 4 dtype: int64
indexがa、b、、、となっていることが確認できます。
辞書から生成する
以下の通り辞書から生成することも可能です。
import pandas as pd s = pd.Series({'a': 1, 'b': 2, 'c': 3})
Seriesにアクセスする
indexを指定して要素を取得することができます。[]を使用した添字で指定する方法と、.で指定する方法の2種類あります。
import pandas as pd s = pd.Series({'a': 1, 'b': 2, 'c': 3}) print(s['a']) # 1が出力 print(s.a) # 1が出力
また、デフォルトのindexを使用している場合はスライスを使用して部分を切り出すことができます。
import pandas as pd s = pd.Series([10, 20, 30, 40]) print(s[0:2]) # 0 10 # 1 20 # dtype: int64
Seriesの更新
要素を更新する際は代入します。例えば0番目を更新する際は以下のようにします。
s = pd.Series([10, 20, 30, 40]) s[0] = 100 # 0 100 # 1 20 # 2 30 # 3 40 # dtype: int64
また、スライスを使用して部分的に更新することも可能です。
s = pd.Series([10, 20, 30, 40]) s[0:2] = pd.Series([100, 200]) # 代入はlistでも可 # 0 100 # 1 200 # 2 30 # 3 40 # dtype: int64
pythonのlist型に変換
シーケンス型ですので以下でlistメソッドで変換することができます。
list(s)