Случайный выбор строк в кадре данных Pandas
есть ли способ выбрать случайные строки из фрейма данных в панд.
в R, используя пакет автомобиля, есть полезная функция some(x, n) который похож на head, но выбирает в этом примере 10 строк случайным образом из x.
Я также посмотрел на разделочную документацию, и, похоже, нет ничего эквивалентного.
обновление
теперь используется версия 20. Существует примерный метод.
df.sample(n)
5 ответов:
С версией панды
0.16.1и там теперьDataFrame.sampleспособ встроенным:import pandas df = pandas.DataFrame(pandas.np.random.random(100)) # Randomly sample 70% of your dataframe df_percent = df.sample(frac=0.7) # Randomly sample 7 elements from your dataframe df_elements = df.sample(n=7)для любого подхода выше, вы можете получить остальные строки, выполнив:
df_rest = df.loc[~df.index.isin(df_percent.index)]
лучший способ сделать это с помощью функции выборки из случайного модуля,
import numpy as np import pandas as pd from random import sample # given data frame df # create random index rindex = np.array(sample(xrange(len(df)), 10)) # get 10 random rows from df dfr = df.ix[rindex]
на самом деле это даст вам повторяющимся индексам
np.random.random_integers(0, len(df), N)здесьNбольшое количество.
ниже строки будет случайным образом выбрать n количество строк из общего числа существующих номеров строк из фрейма данных df без замены.
df=df.take(np.random.permutation(len(df))[:n])
Comments