Python in Excel実践:pandasでデータからランダムサンプルを抽出する

pandas python 1

pandas を使うと、Excel 上のデータからランダムにレコードを抽出する処理を簡単に行えます。
この記事では、Python in Excel を使って DataFrame 全体・特定の列・条件付きデータからランダムサンプルを取得する方法を確認します。

もし、Python in Excelの概要を知りたい方は下リンクをご参照ください。

Python in Excelにおけるpandas DataFrameの基本 – Lean Data Office

今回使用するのは、Excel のテーブル形式で管理されているバンドデータです。
各行にはバンド名、ジャンル、結成年度が含まれており、ランダム抽出用のサンプルデータとして扱います。

image

別シートの Python セルで、次のように記述します。

bands = xl("BandsData[#すべて]", headers=True)

これにより、Excel 上のテーブル全体が pandas の DataFrame として読み込まれます。
以降の操作は、この DataFrame を対象に行います。

image

1件だけランダムに抽出する

DataFrame に対して sample() を実行すると、
全データの中から 1行だけランダムに選択されます。

bands.sample()

実行するたびに、異なるバンドが選ばれる点が特徴です。
同じコードでも毎回結果が変わることが確認できます。

image
image

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

image

複数件をランダムに抽出する

抽出件数を指定したい場合は、引数に数値を渡します。

bands.sample(10)

これにより、バンド名・ジャンル・結成年を含む
10 件分のランダムなデータが取得されます。

image
image

特定の列をランダムに抽出する

DataFrame 全体ではなく、特定の列のみを対象にすることもできます。

bands["Group"].sample(10)

このように記述すると、
バンド名(Group 列)だけを対象にランダム抽出が行われます。

image
image

条件で絞り込んだうえでランダム抽出する

さらに、query() を使ってデータを絞り込むこともできます。

bands_filt = bands.query(
    "Genre == 'Rock' or Genre == 'Alternative rock'"
)

この処理で、ジャンルが Rock または Alternative rock に限定された
新しい DataFrame が作成されます。

image

絞り込んだ DataFrame に対して sample() を適用します。

bands = bands_filt.sample(5)

この結果、指定したジャンルに属するバンドの中から
5 件だけランダムに選ばれたデータが取得されます。

image
image

まとめ

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

筋トレとオートメーションが趣味。 モバイルアプリ個人開発者。 データ処理・可視化とレポートにハマり備忘録と情報共有のためにブログ開設し運営している。