【pandas】Seriesの作成方法

pandasでのSeries作成方法について解説します。
目次
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にて公開しています。参考にしていただければと思います。







の扱いと処理方法-_-isnull-notnull-dropna-fillna-_.jpg)