¿Pandas iloc vs corte directo?

He leído mucha discusión sobre iloc vs loc y comprendo la diferencia, pero lo que no entiendo es cuál es la diferencia entre:

indexed_data['var'][0:10] 

vs

 indexed_data['var'].iloc[0:10] 

Estos parecen ser lo mismo y dan la misma salida.

¿Me estoy perdiendo de algo? ¡Gracias!

En las últimas versiones de pandas esto fue trabajo para la función ix .

Pero a partir de pandas 0.20+ ix el indexador está en desuso .

Entonces use get_loc para la posición de la columna var y seleccione solo con iloc :

 indexed_data.iloc[0:10, df.columns.get_loc('var')] 

En mi opinión la diferencia entre:

 indexed_data['var'][0:10] 

y:

 indexed_data['var'].iloc[0:10] 

Se encuentra principalmente en ][ . Creo que lo mejor es evitarlo porque es posible la chaining indexing .


Los pandas modernos de Tom Augspurger (pandas dev) obtienen consejos :

La regla aproximada es que cada vez que vea corchetes consecutivos, ] [ , está pidiendo problemas. Reemplace eso con un .loc[..., ...] y estará listo.

Así que lo mejor es usar la función de pandas nativa como loc , iloc aquí.

Luego intente comparar las funciones llamadas para cada método, pero después de 40 minutos lo detengo (en realidad se llama una gran cantidad de funciones).

Reviso los horarios y son diferentes para cada función:

 indexed_data = pd.DataFrame(np.random.randint(3, size=(2000000,1)), columns=['var']) In [151]: %timeit indexed_data['var'].iloc[0:100000] 10000 loops, best of 3: 62.1 µs per loop In [152]: %timeit indexed_data['var'][0:100000] 10000 loops, best of 3: 82.3 µs per loop In [153]: %timeit indexed_data.iloc[0:100000, indexed_data.columns.get_loc('var')] 10000 loops, best of 3: 155 µs per loop In [154]: %timeit indexed_data.loc[indexed_data.index[0:100000], 'var'] 100 loops, best of 3: 7.36 ms per loop #numpy approach - output is array In [155]: %timeit indexed_data['var'].values[0:100000] 100000 loops, best of 3: 5.35 µs per loop 

solución alternativa:

 indexed_data.loc[indexed_data.index[0:10], 'var'] 

Lea la documentación de Pandas sobre “Diferentes opciones para la indexación” ; le ayudará a decidir qué indexador usar para diferentes casos …