NumPyのzeros・ones・fullを使って、pandas.Seriesを初期化する

配列の初期化方法はいろいろありますが、ここでは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