配列の初期化方法はいろいろありますが、ここではNumPyを使う方法をご紹介します。NumPyのzeros, ones, full関数を覚えておけば便利です。これらの関数をpandas.Seriesの初期化するために使うことができ、さらにpandas.DataFrameに初期化された列を追加するときにも使えます。この記事ではその例をご紹介します。
zeros, ones, full関数
まず、zeros, ones, fullの出力結果です。
print(np.zeros(3)) print(np.ones(3)) print(np.full(3, False)) # [0. 0. 0.] # [1. 1. 1.] # [False False False]
pandas.Seriesの初期化
pandas.Seriesの初期化にzeros, ones, full関数を使う例をお見せします。0と1以外で初期化するときはfull関数を使います。full関数を使えば空文字で初期化することもできます。
# 0で初期化する。 s = pd.Series(np.zeros(3), name='zero') print(s) # 0 0.0 # 1 0.0 # 2 0.0 # Name: zero, dtype: float64 # 1で初期化する。 s = pd.Series(np.ones(3), name='one') print(s) # 0 1.0 # 1 1.0 # 2 1.0 # Name: one, dtype: float64 # 2値で初期化する。 s = pd.Series(np.full(3, False), name='binary') print(s) # 0 False # 1 False # 2 False # Name: binary, dtype: bool # 空文字で初期化する。 s = pd.Series(np.full(3, ''), name='kara-moji') print(s) # 0 # 1 # 2 # Name: kara-moji, dtype: object
pandas.DataFrameに初期化した列を追加する
DataFrameにゼロ初期化された列を追加したり、その他の値で初期化された列を追加する方法です。このとき、zeros, ones, fullの要素数を示す引数(shapeパラメータ)にlen(df)を使うことと、indexにdf.indexを代入することに気をつければ、SeriesのサイズやIndexは自動で設定できます。
# 元のDataFrameを作成する。 df = pd.DataFrame( data=['a', 'b', 'c'], columns=['item'], ) print(df) # item # 0 a # 1 b # 2 c s = pd.Series(np.zeros(len(df)), index=df.index, name='zero') df = pd.concat([df, s], axis='columns') print(df) # item zero # 0 a 0.0 # 1 b 0.0 # 2 c 0.0 s = pd.Series(np.ones(len(df)), index=df.index, name='one') df = pd.concat([df, s], axis='columns') print(df) # item zero one # 0 a 0.0 1.0 # 1 b 0.0 1.0 # 2 c 0.0 1.0 s = pd.Series(np.full(len(df), False), index=df.index, name='binary') df = pd.concat([df, s], axis='columns') print(df) # item zero one binary # 0 a 0.0 1.0 False # 1 b 0.0 1.0 False # 2 c 0.0 1.0 False
DataFrameに初期化した列を追加することができました。ついでに、一部の値を変更する例も載せておきます。
df.iloc[1, df.columns.get_loc('binary')] = True print(df) # item zero one binary # 0 a 0.0 1.0 False # 1 b 0.0 1.0 True # 2 c 0.0 1.0 False