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」が抽出される。
【参照】