Open In Colab

Series#

Seriesはインデックスと呼ばれるラベルを持った同一のデータ型を持つ1次元のデータです。 Series オブジェクトを生成するには Series クラスの引数に次のようなデータを渡します。

  • array-likeオブジェクト

    • リスト

    • タプル

    • numpy.ndarray

  • 辞書

  • イテラブルオブジェクト

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html

Seriesの生成#

次のコードでは Series オブジェクトを生成しています。

import numpy as np
import pandas as pd

ser = pd.Series([3, 5, 2])  # list
ser = pd.Series((3, 5, 2))  # tuple
ser = pd.Series(np.array((3, 5, 2)))  # ndarray

type() を実行すると、 Series 型であることが確認できます。

type(ser)
pandas.core.series.Series

標準出力やREPLにはデータのインデックス(ラベル)と値が表示されます。デフォルトではインデックスは自動で0からの自然数が割り当てられます。

print(ser)
0    3
1    5
2    2
dtype: int64
ser
0    3
1    5
2    2
dtype: int64

次のコードではコンストラクタに辞書を渡してSeriesを生成しています。この場合、辞書のキーがインデックス(ラベル)となります。

ser_dict = pd.Series({"a": 10, "b": 20, "c": 30})
ser_dict
a    10
b    20
c    30
dtype: int64

次のコードではコンストラクタにイテラブルオブジェクトである range オブジェクトを渡してSeriesを生成しています。

pd.Series(range(2, 5))
0    2
1    3
2    4
dtype: int64

練習問題1#

タプル型のデータを渡して Series オブジェクトを作成してください。

# 解答セル

値とインデックス#

Seriesから値を取得するには values 属性にアクセスします。値は numpy.ndarray 型で管理されます。

ser.values
array([3, 5, 2])
type(ser.values)
numpy.ndarray

Seriesからインデックス(ラベル)を取得するには index 属性にアクセスします。

ser.index
RangeIndex(start=0, stop=3, step=1)

インデックスの作成、変更#

Series生成時にインデックス(ラベル)を割り当てる場合はコンストラクタの引数 index にarray-likeオブジェクトを渡します。

pd.Series([1, 2], index=["a", "b"])
a    1
b    2
dtype: int64

生成したSeriesからインデックスを変更するには index 属性に array-likeオブジェクトを代入します。

ser
0    3
1    5
2    2
dtype: int64
ser.index = ["a", "b", "c"]
ser
a    3
b    5
c    2
dtype: int64

データ型の確認、変換#

Seriesのデータ型を確認するには dtype 属性にアクセスします。

ser.dtype
dtype('int64')

Seriesのデータ型を変換するには astype メソッドの引数にデータ型を渡します。データ型はNumPyまたはpandasのデータ型を指定します。

import numpy as np

ser.astype(np.int32)
a    3
b    5
c    2
dtype: int32
ser.astype(pd.Int16Dtype())
a    3
b    5
c    2
dtype: Int16

クラスの代わりに引数にクラス名に該当する文字列を渡せます。

ser.astype("float32")
a    3.0
b    5.0
c    2.0
dtype: float32

練習問題2#

ser オブジェクトのデータ型を int8 に変換してください。

# 解答セル