Series
Contents
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
に変換してください。
# 解答セル