March 26, 2022

Перемешивание и случайная выборка строк в Pandas датафрейме

Рассмотрим, как, используя встроенные в Pandas возможности, перемешать строки таблицы или осуществить их случайную выборку. Для наглядности будем использовать следующий датафрейм:

import numpy as np
import pandas as pd
np.random.seed(0)

df = pd.DataFrame([[1, 20, 5, 1], [2, 23, 10, 0], [3, 28, 4, 0], [4, 100, 0, 0], [5, 1, 4, 1],
                  [6, 6, 6, 1], [7, 34, 2, 0], [8, 45, 4, 0], [9, 33, 23, 0], [10, 35,3, 0]], 
                  columns=['id', 'revenue', 'balance', 'target'])
df

Если ваша задача - просто перемешать таблицу, то вызовите метод sample с параметром frac=1:

# df.sample(frac=1).reset_index(drop=True)
df.sample(frac=1)

Если сохранение индекса не важно, то сразу воспользуйтесь методом reset_index(drop=True) (как в закомментированной строке выше).

Метод sample также поможет, если вам интересно выбрать только несколько строк. При этом для задания доли используйте параметр frac, а конкретного числа - n. Например, выберем случайно 3 строки или 20%:

df.sample(n=3)
df.sample(frac=0.2)

С параметром replace=True можно осуществлять выборку с возвращением:

df.sample(n=11, replace=True)

Как можно заметить, в итоговой таблице есть повторы.