복붙노트

[PYTHON] Pandas 데이터 프레임의 무작위 행 선택

PYTHON

Pandas 데이터 프레임의 무작위 행 선택

판다의 DataFrame에서 임의의 행을 선택하는 방법이 있습니까?

R에서 car 패키지를 사용하면 head와 비슷하지만이 예제에서 x에서 임의로 10 개의 행을 선택하는 유용한 함수 some (x, n)이 있습니다.

나는 또한 슬라이싱 문서를보고 거기에 상응하는 것으로 보인다.

이제 버전 20을 사용합니다. 샘플 방법이 있습니다.

df.sample (n)

해결법

  1. ==============================

    1.이 같은?

    이 같은?

    import random
    
    def some(x, n):
        return x.ix[random.sample(x.index, n)]
    
  2. ==============================

    2.팬더 버전 0.16.1 이상에서는 DataFrame.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)]
    
  3. ==============================

    3.이를 수행하는 가장 좋은 방법은 임의 모듈의 샘플 함수를 사용하는 것입니다.

    이를 수행하는 가장 좋은 방법은 임의 모듈의 샘플 함수를 사용하는 것입니다.

    import numpy as np
    import pandas as pd
    from random import sample
    
    # given data frame df
    
    # create random index
    rindex =  np.array(sample(xrange(len(df)), 10))
    
    # get 10 random rows from df
    dfr = df.ix[rindex]
    
  4. ==============================

    4.실제로 이것은 반복되는 인덱스 np.random.random_integers (0, len (df), N)을 제공합니다. 여기서 N은 큰 수입니다.

    실제로 이것은 반복되는 인덱스 np.random.random_integers (0, len (df), N)을 제공합니다. 여기서 N은 큰 수입니다.

  5. ==============================

    5.아래 라인은 교체없이 데이터 프레임 df에서 기존의 전체 행 번호 중 n 개의 행을 무작위로 선택합니다.

    아래 라인은 교체없이 데이터 프레임 df에서 기존의 전체 행 번호 중 n 개의 행을 무작위로 선택합니다.

    df = df.take (np.random.permutation (len (df)) [: n])

  6. ==============================

    6.v0.20.0부터 pd.DataFrame.sample을 사용할 수 있습니다. pd.DataFrame.sample은 고정 숫자 행 또는 임의 비율의 임의 샘플을 반환하는 데 사용할 수 있습니다.

    v0.20.0부터 pd.DataFrame.sample을 사용할 수 있습니다. pd.DataFrame.sample은 고정 숫자 행 또는 임의 비율의 임의 샘플을 반환하는 데 사용할 수 있습니다.

    df = df.sample(n=k)     # k rows
    df = df.sample(frac=k)  # int(len(df.index) * k) rows
    

    재현성을 위해 np.ramdom.seed를 사용하는 것과 동일한 정수 random_state를 지정할 수 있습니다. 예를 들어, 설정 대신 np.random.seed = 0 :

    df = df.sample(n=k, rand_state=0)
    
  7. from https://stackoverflow.com/questions/15923826/random-row-selection-in-pandas-dataframe by cc-by-sa and MIT license