panda guide examples python pandas numpy multidimensional-array dataframe

python - guide - Pandas vs. Numpy Dataframes



pandas python (1)

Mira estas pocas líneas de código:

df2 = df.copy() df2[1:] = df[1:]/df[:-1].values -1 df2.ix[0, :] = 0

Nuestro instructor dijo que necesitamos usar el atributo .values para acceder al conjunto numpy subyacente; de ​​lo contrario, nuestro código no funcionaría.

Entiendo que un DataFrame de pandas tiene una representación subyacente como una matriz numpy, pero no entendí por qué no podemos operar directamente en el DataFrame de pandas usando solo slicing.

¿Puedes aclararme sobre eso?


pandas se enfoca en estructuras tabulares de datos y al hacer las operaciones (suma, resta, etc.) mira las etiquetas, no las posiciones.

Considere el siguiente DataFrame:

df = pd.DataFrame(np.random.randn(5, 3), index=list(''abcde''), columns=list(''xyz''))

Aquí, df[1:] es:

df[1:] Out: x y z b 1.003035 0.172960 1.160033 c 0.117608 -1.114294 -0.557413 d -1.312315 1.171520 -1.034012 e -0.380719 -0.422896 1.073535

Y df[:-1] es:

df[:-1] Out: x y z a 1.367916 1.087607 -0.625777 b 1.003035 0.172960 1.160033 c 0.117608 -1.114294 -0.557413 d -1.312315 1.171520 -1.034012

Si haces df[1:] / df[:-1] , dividirá la fila b por la fila b , la fila c por la fila c y la fila d por la fila d . Para las filas a y e , no podrá encontrar las filas correspondientes en el otro DataFrame (ya sea en el primero o en el segundo), por lo que devolverá nan :

df[1:] / df[:-1] Out: x y z a NaN NaN NaN b 1.0 1.0 1.0 c 1.0 1.0 1.0 d 1.0 1.0 1.0 e NaN NaN NaN

Si solo quiere hacer una división de elementos ignorando las etiquetas, acceder a la matriz numpy subyacente por .values para uno de los cuadros es una forma de decirle a los pandas que ignoren las etiquetas. Como las matrices numpy no tienen etiquetas, las pandas solo realizarán operaciones de elemento:

df[1:]/df[:-1].values Out: x y z b 0.733258 0.159028 -1.853749 c 0.117252 -6.442482 -0.480515 d -11.158359 -1.051357 1.855018 e 0.290112 -0.360981 -1.038223