values index from data python partitioning pandas

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]