まずは蝋の翼から。

学んだことを書きながら確認・整理するためのメモブログ。こういうことなのかな?といったことをふわっと書いたりしていますが、理解が浅いゆえに的はずれなことも多々あると思うのでツッコミ歓迎

pythonで動的にオブジェクトを作成する

目的

pythonで動的にオブジェクトを変えたい。

ユースケース

乱数を変えたランダムサンプリングデータを複数個作りたいときや、絞り込みを変えたデータを作成したいときなど。

execでのやり方

execを使うと文字列でコードを書けるので利用する。

docs.python.org

# ランダムサンプリング
for i in range(4):
    exec(f'data_sample{i} = data.sample(n=100)')
# => data_sample1, data_sample2, data_sample3, data_sample4ができあがる

# 絞り込みを変えたデータを作成
j_list = ['hoge', 'fuga', 'piyo']
for j in j_list:
    exec(f'df_{j} = df.query("type == '{j}'")')
# => df_hoge, df_fuga, df_piyoができあがる

dictを使ったやり方

execはまぁ直感的だからわかりやすい。ただし、変数名が明示的ではなかったり、スコープがよくわからんことになるので他の方法で実現できる方法の方がベスト。

# ランダムサンプリング
d = dict()

for i in range(3):
    d[i] = df.sample(n=100)

# => d[0]などでアクセス可能

# 絞り込みを変えたデータを作成
d2 = dict()

j_list = ['hoge', 'fuga', 'piyo']

for j in j_list:
    d2[j] = df.query("type == '{j}'")

# => d2['hoge']などでアクセス可能

参考

qiita.com

www.haya-programming.com