Python Code Notes

Information by python engineer

pandas Series型オブジェクトの基本 Python

f:id:vigilantPotato:20190618225252p:plain

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"ではエラーが発生します。