pandas を使うと、Excel 上のデータからランダムにレコードを抽出する処理を簡単に行えます。
この記事では、Python in Excel を使って DataFrame 全体・特定の列・条件付きデータからランダムサンプルを取得する方法を確認します。
もし、Python in Excelの概要を知りたい方は下リンクをご参照ください。
Python in Excelにおけるpandas DataFrameの基本 – Lean Data Office
今回使用するのは、Excel のテーブル形式で管理されているバンドデータです。
各行にはバンド名、ジャンル、結成年度が含まれており、ランダム抽出用のサンプルデータとして扱います。

別シートの Python セルで、次のように記述します。
bands = xl("BandsData[#すべて]", headers=True)
これにより、Excel 上のテーブル全体が pandas の DataFrame として読み込まれます。
以降の操作は、この DataFrame を対象に行います。

1件だけランダムに抽出する
DataFrame に対して sample() を実行すると、
全データの中から 1行だけランダムに選択されます。
bands.sample()
実行するたびに、異なるバンドが選ばれる点が特徴です。
同じコードでも毎回結果が変わることが確認できます。


再実行することで別のグループが抽出されていることがわかる。

複数件をランダムに抽出する
抽出件数を指定したい場合は、引数に数値を渡します。
bands.sample(10)
これにより、バンド名・ジャンル・結成年を含む
10 件分のランダムなデータが取得されます。


特定の列をランダムに抽出する
DataFrame 全体ではなく、特定の列のみを対象にすることもできます。
bands["Group"].sample(10)
このように記述すると、
バンド名(Group 列)だけを対象にランダム抽出が行われます。


条件で絞り込んだうえでランダム抽出する
さらに、query() を使ってデータを絞り込むこともできます。
bands_filt = bands.query(
"Genre == 'Rock' or Genre == 'Alternative rock'"
)
この処理で、ジャンルが Rock または Alternative rock に限定された
新しい DataFrame が作成されます。

絞り込んだ DataFrame に対して sample() を適用します。
bands = bands_filt.sample(5)
この結果、指定したジャンルに属するバンドの中から
5 件だけランダムに選ばれたデータが取得されます。


まとめ
sample() を使えば、DataFrame から手軽にランダムなデータを取得できます。
さらに query() と組み合わせることで、条件を絞ったランダム抽出も可能になり、Python in Excel 上でも柔軟なデータ分析や検証が行えます。