from - python pandas dataframe index
Pandas: muestreo de un DataFrame (5)
¿Qué versión de pandas estás usando? Para mí tu código funciona bien (estoy en Git Master).
Otro enfoque podría ser:
In [117]: import pandas
In [118]: import random
In [119]: df = pandas.DataFrame(np.random.randn(100, 4), columns=list(''ABCD''))
In [120]: rows = random.sample(df.index, 10)
In [121]: df_10 = df.ix[rows]
In [122]: df_90 = df.drop(rows)
La versión más nueva (desde 0.16.1 en adelante) lo admite directamente: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sample.html
Esta pregunta ya tiene una respuesta aquí:
Intento leer un archivo CSV bastante grande con Pandas y dividirlo en dos fragmentos aleatorios, uno de los cuales es el 10% de los datos y el otro el 90%.
Aquí está mi intento actual:
rows = data.index
row_count = len(rows)
random.shuffle(list(rows))
data.reindex(rows)
training_data = data[row_count // 10:]
testing_data = data[:row_count // 10]
Por algún motivo, sklearn
arroja este error cuando intento utilizar uno de estos objetos DataFrame resultantes dentro de un clasificador SVM:
IndexError: each subindex must be either a slice, an integer, Ellipsis, or newaxis
Creo que lo estoy haciendo mal ¿Hay una mejor manera de hacer esto?
Descubrí que np.random.choice()
new en NumPy 1.7.0 funciona bastante bien para esto.
Por ejemplo, puede pasar los valores de índice de un DataFrame y el entero 10 para seleccionar 10 filas muestreadas uniformemente al azar.
rows = np.random.choice(df.index.values, 10)
sampled_df = df.ix[rows]
Nuevo en la versión 0.16.1:
sample_dataframe = your_dataframe.sample(n=how_many_rows_you_want)
doc aquí: http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.sample.html
Pandas 0.16.1 tiene un método de http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sample.html para eso.
Si está utilizando pandas.read_csv, puede muestrear directamente al cargar los datos, utilizando el parámetro skiprows. Aquí hay un breve artículo que he escrito sobre este tema: https://nikolaygrozev.wordpress.com/2015/06/16/fast-and-simple-sampling-in-pandas-when-loading-data-from-files/