Python:从pandas数据帧中获取随机的十个值

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个集群的平均值进行初始化?


使用numpy.random.choice

1
df.iloc[np.random.choice(np.arange(len(df)), 10, False)]

numpy.random.permutation

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

我想你需要DataFrame.sample

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