Python : get random ten values from a pandas dataframe
本问题已经有最佳答案,请猛点这里访问。
我正在尝试建立一个算法来查找集群的数量。我需要从数据集中分配随机点作为初始手段。
我首先尝试了以下代码:
1 | mu=random.sample(df,10) |
它给出了索引超出范围的错误。
我把它转换成一个麻木的数组,然后
1 | mu=random.sample(np.array(df).tolist(),10) |
号
不是给出10个值作为平均值,而是给出10个值数组。
如何从数据帧中获取10个集群的平均值进行初始化?
使用
1 | df.iloc[np.random.choice(np.arange(len(df)), 10, False)] |
。
或
1 2 3 4 5 6 7 8 9 10 11 12 13 | df.loc[np.random.permutation(df.index)[:10]] a b c 11 2 9 9 1 7 7 0 16 5 1 8 15 0 8 2 17 1 5 4 19 5 0 9 10 7 7 0 8 4 4 3 6 6 2 4 14 7 6 2 |
我想你需要
1 | mu = df.sample(10) |
样品:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | np.random.seed(100) df = pd.DataFrame(np.random.randint(10, size=(20,3)), columns=list('abc')) print (df) a b c 0 8 8 3 1 7 7 0 2 4 2 5 3 2 2 2 4 1 0 8 5 4 0 9 6 6 2 4 7 1 5 3 8 4 4 3 9 7 1 1 10 7 7 0 11 2 9 9 12 3 2 5 13 8 1 0 14 7 6 2 15 0 8 2 16 5 1 8 17 1 5 4 18 2 8 3 19 5 0 9 |
号
1 2 3 4 5 6 7 8 9 10 11 12 13 | mu = df.sample(10) print (mu) a b c 11 2 9 9 1 7 7 0 8 4 4 3 5 4 0 9 2 4 2 5 19 5 0 9 13 8 1 0 14 7 6 2 0 8 8 3 9 7 1 1 |