2017-05-04 28 views
2

私は多くの列でソートされたパンダのデータフレームを持っています。今私はいくつかのセグメントを抽出して名前を付けるために、定義済みのパーセンテージでデータフレームを分割したいと思います。定義済みの割合でパンダでDataFrameを分割する方法は?

たとえば、最初のセグメントを作成するために最初の20%の行を、次に2番目のセグメントの次の30%を残り、残りの50%を3番目のセグメントに残したいとします。

どうすれば達成できますか?

+0

:https://stackoverflow.com/questions/38250710/how-to-split-data-into-3-sets- train-validation-and-testは '.sample'または' random'のステップを削除します。これは同じ解決法です – EdChum

答えて

0

使用numpy.split

a, b, c = np.split(df, [int(.2*len(df)), int(.5*len(df))]) 

サンプル:関連

np.random.seed(100) 
df = pd.DataFrame(np.random.random((20,5)), columns=list('ABCDE')) 
#print (df) 

a, b, c = np.split(df, [int(.2*len(df)), int(.5*len(df))]) 
print (a) 
      A   B   C   D   E 
0 0.543405 0.278369 0.424518 0.844776 0.004719 
1 0.121569 0.670749 0.825853 0.136707 0.575093 
2 0.891322 0.209202 0.185328 0.108377 0.219697 
3 0.978624 0.811683 0.171941 0.816225 0.274074 

print (b) 
      A   B   C   D   E 
4 0.431704 0.940030 0.817649 0.336112 0.175410 
5 0.372832 0.005689 0.252426 0.795663 0.015255 
6 0.598843 0.603805 0.105148 0.381943 0.036476 
7 0.890412 0.980921 0.059942 0.890546 0.576901 
8 0.742480 0.630184 0.581842 0.020439 0.210027 
9 0.544685 0.769115 0.250695 0.285896 0.852395 

print (c) 
      A   B   C   D   E 
10 0.975006 0.884853 0.359508 0.598859 0.354796 
11 0.340190 0.178081 0.237694 0.044862 0.505431 
12 0.376252 0.592805 0.629942 0.142600 0.933841 
13 0.946380 0.602297 0.387766 0.363188 0.204345 
14 0.276765 0.246536 0.173608 0.966610 0.957013 
15 0.597974 0.731301 0.340385 0.092056 0.463498 
16 0.508699 0.088460 0.528035 0.992158 0.395036 
17 0.335596 0.805451 0.754349 0.313066 0.634037 
18 0.540405 0.296794 0.110788 0.312640 0.456979 
19 0.658940 0.254258 0.641101 0.200124 0.657625 
+0

なぜこの質問はこれの欺瞞ではありません:https://stackoverflow.com/questions/38250710/how-to-列車妥当性検証試験に3分割データを分割する? – EdChum

+0

ランダム化があるので、この解決策はありません。しかし、似ています。 – jezrael

+0

私はまだこれは確かに関連した房であると言いたいのですが、ランダム化の除去は簡単ですIMO – EdChum

関連する問題