pandasでのSeries
作成方法について解説します。
Contents
pandasのSeriesの作成方法
pandasのSeries
は、インデックス付きの1次元配列で、pandasの中心的なデータ型の一つです。Numpy配列 (ndarray
)と同様にインデックスでアクセスできますが、Seriesは文字列のインデックスにも対応しており、Pythonの辞書のように扱えます。また、辞書よりも処理が高速です。
この記事では、Series
作成方法について紹介します。
リストやNumPy配列 (ndarray
) から作成する
リストやNumpy配列 (ndarray
)から簡単にSeries
を作成することができます。
import pandas as pd # リストからSeriesを作成する # int data = pd.Series([1, 5, 2, 4, 5]) print(data, "\n") # float data = pd.Series([1.0, 1.5, 2.0, 4.0, 5.0]) print(data)
【実行結果】 0 1 1 5 2 2 3 4 4 5 dtype: int64 0 1.0 1 1.5 2 2.0 3 4.0 4 5.0 dtype: float64
Series
では、実行結果の左側がインデックス、右側が値となっています。また、dtype
は値の型を示します。
リスト同様にNumPyの配列(ndarray
)からも以下のようにSeries
を作成できます。
import numpy as np import pandas as pd # NumPy配列(ndarray)からSeriesを作成する # int arr = np.array([1, 5, 2, 4, 5]) data = pd.Series(arr) print(data, "\n") # float arr = np.array([1.0, 1.5, 2.0, 4.0, 5.0]) data = pd.Series(arr) print(data)
【実行結果】 0 1 1 5 2 2 3 4 4 5 dtype: int32 0 1.0 1 1.5 2 2.0 3 4.0 4 5.0 dtype: float64
NumPy配列 (ndarray
)が作成されたときの型がint32
であったので、作成されたpandasのSeries
もint32
となっています。int64
で作成したい場合は、以下のように書き換えることで対応できます。
data = pd.Series(arr, dtype="int64")
なお、NumPy配列 (ndarray
)のデータタイプは実行環境に依存するため、int32
とint64
のどちらかになるかは環境に依存します。
任意のインデックスを指定して作成する
数値や文字列をインデックスとして指定してSeries
を作成することができます。インデックスの指定には、index
引数を使用します。
import pandas as pd # リストからSeriesを作成する # 任意の数値を指定する data = pd.Series([1, 5, 2, 4, 5], index=[100, 300, 200, 500, 400]) print(data, "\n") # 文字列を指定することも可能 data = pd.Series([1, 5, 2, 4, 5], index=["a", "c", "d", "e", "z"]) print(data)
【実行結果】 100 1 300 5 200 2 500 4 400 5 dtype: int64 a 1 c 5 d 2 e 4 z 5 dtype: int64
辞書から作成する
辞書からもSeries
を作成することができます。作成した辞書をSeries
の引数に渡してインスタンス化します。
import pandas as pd # 辞書からSeriesを作成する dic = {"a": 10, "z": 5, "c": 20, "f": 100} data = pd.Series(dic) print(data, "\n") # 辞書の中から一部だけを抽出してSeriesを作成する data = pd.Series(dic, index=["a", "f", "z"]) print(data)
【実行結果】 a 10 z 5 c 20 f 100 dtype: int64 a 10 f 100 z 5 dtype: int64
元の辞書のデータの一部を使ってSeries
を作成したい場合には、以下のようにindex
引数で一部インデックスを指定することでデータを抽出しつつSeries
の作成ができます。
# 辞書の中から一部だけを抽出してSeriesを作成する data = pd.Series(dic, index=["a", "f", "z"])
Series
からNumPy配列 (ndarray
) に変換する
Series
はvalues
プロパティを使用することでNumPy配列 (ndarray
) に変換することができます。
import pandas as pd # Seriesを作成する data = pd.Series([1, 5, 2, 4, 5]) print(data, "\n") # SeriesからNumPy ndarrayへ変換する arr_tmp = data.values print(arr_tmp, type(arr_tmp))
【実行結果】 0 1 1 5 2 2 3 4 4 5 dtype: int32 [1 5 2 4 5] <class 'numpy.ndarray'>
NumPyとpandasの使い分け
NumPyは大量データの数値計算に適しており高速です。一方、pandasはデータ操作が簡便で、前処理に向いています。通常、データ前処理にpandasを使い、数値計算にはNumPyを使うのが一般的なワークフローです。
まとめ
pandasでのSeries
作成方法について解説しました。
Seriesは、Numpy配列 (ndarray
) と同様にインデックスでアクセスできますが、文字列インデックスにも対応しており、Pythonの辞書のように扱えます。また、処理も辞書より高速です。
pandasの中心的なデータ型の一つですので、作成方法の基本をしっかり理解してもらえたらと思います。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。