pandasにおけるsample()の使い方

 

【目次】

 

【動作環境】



 

1. sample()について

 
pandasのDataFrameにおいて、ランダムに行を抽出することが可能。

 

2. 挙動テスト

 

サンプルデータ。panda形式のDataFrameを用意する。

df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
                   'num_wings': [2, 0, 0, 0],
                   'num_specimen_seen': [10, 2, 1, 8]},
                  index=['falcon', 'dog', 'spider', 'fish'])
df

 

num_legs num_wings num_specimen_seen falcon
falcon 2 2 10
dog 4 0 2
spider 8 0 1
fish 0 0 8

 

  • 単に2行抽出したい時
df.sample(2)

 

num_legs num_wings num_specimen_seen falcon
spider 8 0 1
fish 0 0 8

実行の度に抽出される行が変わることに注意。
1回目実行時は「spider」と「fish」の2行が抽出されたが、2回目以降は別な2行が再度ランダム選定される。

 

  • 単に2行抽出したい時(random_state指定あり)

データ分析で再現性を確認する時に、データの前提条件が実行単位で変わると不便なので、ランダムで行を抽出しつつも実行単位ではばらつきをなくすようにする。
そこで登場するのがrandom_state object(Numpy)。
ランダムで抽出する際に、実行毎に固定の値を算出。いくつかのパターンを設ける目的で、数値を指定可能(以下は1を指定した時)。

 

numpy.random.RandomState — NumPy v1.15 Manual

 

df.sample(n=2, random_state=1)

 

num_legs num_wings num_specimen_seen falcon
fish 0 0 8
spider 8 0 1

何回実行しても、。「fish」と「dog」が抽出される。

 

  


 

【参照】

pandas.pydata.org