Random row selection in Pandas dataframe
有没有办法从熊猫的数据帧中选择随机行?
在r中,使用car包,有一个有用的函数
我还查看了切片文档,似乎没有类似的内容。
更新现在使用版本20。有一个示例方法。
大熊猫版本的
1 2 3 4 5 6 7 8 9 | 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) |
对于上述任何一种方法,您都可以通过执行以下操作来获取其余行:
1 | df_rest = df.loc[~df.index.isin(df_percent.index)] |
。
像这样?
1 2 3 4 | import random def some(x, n): return x.ix[random.sample(x.index, n)] |
注:在pandas v0.20.0版本中,不推荐使用
江户十一〔七〕号
从v0.20.0开始,您可以使用
1 2 | df = df.sample(n=k) # k rows df = df.sample(frac=k) # int(len(df.index) * k) rows |
为了重现性,可以指定一个整数
1 | df = df.sample(n=k, random_state=0) |
。
最好的方法是使用随机模块中的样本函数,
1 2 3 4 5 6 7 8 9 10 11 | 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] |
号
实际上,这会给你重复指数
下面的一行将从数据帧df中随机选择n行,而不进行替换。
埃多克斯1〔6〕