Как случайным образом сэмплировать строки в Pandas (с примерами)


Вы можете использовать следующий базовый синтаксис для случайной выборки строк из кадра данных pandas:

#randomly select one row
df.sample ()

#randomly select *n* rows
df.sample (n= 5 )

#randomly select *n* rows with repeats allowed
df.sample (n= 5 , replace= True ) 

#randomly select a fraction of the total rows
df.sample (frac= 0.3 )

#randomly select *n* rows by group
df.groupby('team', group_keys= False ).apply ( lambda x: x. sample ( 2 ))

В следующих примерах показано, как использовать этот синтаксис на практике со следующими пандами DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
 'points': [25, 12, 15, 14, 19, 23, 25, 29],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame 
df

# team points assists rebounds
#0 A 25 5 11
#1 A 12 7 8
#2 A 15 7 10
#3 A 14 9 6
#4 B 19 12 6
#5 B 23 9 5
#6 B 25 9 9
#7 B 29 4 12

Пример 1: случайный выбор одной строки

Следующий код показывает, как случайным образом выбрать одну строку из DataFrame:

#randomly select one row
df.sample ()

# team points assists rebounds
#5 B 23 9 5

Пример 2: Случайный выбор n строк

В следующем коде показано, как случайным образом выбрать n строк из DataFrame:

#randomly select *n* rows
df.sample (n= 5 )

# team points assists rebounds
#5 B 23 9 5
#2 A 15 7 10
#4 B 19 12 6
#6 B 25 9 9
#1 A 12 7 8

Пример 3. Случайный выбор n строк с разрешенными повторами

В следующем коде показано, как случайным образом выбрать n строк из DataFrame с разрешенными повторяющимися строками:

#randomly select 5 rows with repeats allowed
df.sample (n= 5 , replace= True ) 

# team points assists rebounds
#6 B 25 9 9
#7 B 29 4 12
#5 B 23 9 5
#1 A 12 7 8
#5 B 23 9 5

Пример 4. Случайный выбор части общего количества строк

В следующем коде показано, как случайным образом выбрать часть всех строк из DataFrame.

#randomly select 25% of rows
df.sample (frac= 0.25 ) 

#team points assists rebounds
#2 A 15 7 10
#1 A 12 7 8**

Пример 5: Случайный выбор n строк по группам

В следующем коде показано, как случайным образом выбрать n строк по группам из DataFrame.

#randomly select 2 rows from each team
df.groupby('team', group_keys= False).apply(lambda x: x. sample ( 2 ))

 team points assists rebounds
0 A 25 5 11
2 A 15 7 10
7 B 29 4 12
4 B 19 12 6

Обратите внимание, что 2 строки от команды «А» и 2 строки от команды «Б» были выбраны случайным образом.

Примечание.Вы можете найти полную документацию для функции pandas sample() здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные методы выборки в Pandas:

Как выполнить стратифицированную выборку в Pandas
Как выполнить кластерную выборку в Pandas
Как выполнить стратифицированную выборку в Pandas