2017-01-17 8 views
-1

クラスタの数を求めるアルゴリズムを構築しようとしています。私は初期の手段としてデータセットからランダムなポイントを割り当てる必要があります。Python:パンダのデータフレームからランダムに10個の値を取得

Iは、第一次のコードを試みた:それは範囲エラーのうち指標を与え

mu=random.sample(df,10) 

を。

Iはnumpyの配列にそれを変換して

mu=random.sample(np.array(df).tolist(),10) 

代わりに、それは私の値の10の配列を与えている意味として10の値を与えるをしました。

データフレームから10個のクラスタの平均値として初期値を取得するにはどうすればよいですか?

答えて

2

使用numpy.random.choice

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

またはnumpy.random.permutation

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 
2

私はあなたがDataFrame.sampleが必要だと思う:

mu = df.sample(10) 

サンプル:

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 
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 
関連する問題