답변:
이 같은?
import random
def some(x, n):
return x.ix[random.sample(x.index, n)]
참고 : 팬더의 v0.20.0로, ix
사용되지 않습니다 찬성 loc
레이블 기반 인덱싱합니다.
df.ix[np.random.random_integers(0, len(df), 10)]
수 있다고 운동했다.
df.ix[np.random.choice(df.index, 10)]
.
np.random.choice
가 두 배 빠르다고 언급했습니다random.sample
팬더 버전 0.16.1
이상에는 DataFrame.sample
메소드가 내장되어 있습니다 .
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)
위의 방법 중 하나를 수행하면 다음을 수행하여 나머지 행을 얻을 수 있습니다.
df_rest = df.loc[~df.index.isin(df_percent.index)]
df_0.7
유효한 이름이 아닙니다. 또한, 나는 대체 제안 df_rest = df.loc[~df.index.isin(df_0_7.index)]
과 함께 df_rest = df.loc[df.index.difference(df_0_7.index)]
.
difference()
됩니까?
df_percent.index.get_indexer(df.index) == -1
... 훨씬 더 대신 (뿐만 아니라 더 추한) 효율적입니다
sample
v0.20.0부터는 pd.DataFrame.sample
고정 숫자 행의 임의 샘플 또는 행 백분율을 반환하는 데 사용할 수있는을 사용할 수 있습니다.
df = df.sample(n=k) # k rows
df = df.sample(frac=k) # int(len(df.index) * k) rows
재현성 random_state
을 위해 using과 동등한 정수를 지정할 수 있습니다 np.ramdom.seed
. 예를 들어을 설정하는 대신 다음을 수행 np.random.seed = 0
할 수 있습니다.
df = df.sample(n=k, random_state=0)
df.sample(N, replace=True)
. 자세한 내용은 여기를 참조 하십시오 .