Los dataframes son estructuras tabulares de datos orientadas a columnas, con etiquetas tanto en filas como en columnas:
Aunque veremos en una sección posterior cómo crear dataframes con detalle, puede apreciarse en la imagen anterior que hemos pasado al constructor pd.DataFrame un diccionario y una lista: las claves del diccionario serán los nombres de las columnas, sus valores, los valores de las columnas, y los valores de la lista se convertirán las etiquetas de filas.
Una columna solo puede contener un tipo de datos, pero cada columna del dataframe puede contener un tipo de datos diferente. Podemos acceder a los tipos de las columnas con el atributo dtypes:
Las etiquetas de filas y de columnas -los índices- son accesibles a través de los atributos index y columns, respectivamente:
La nomenclatura usada por pandas puede resultar un tanto confusa en lo que se refiere a los índices: tanto la estructura que contiene las etiquetas de filas como la que contiene las etiquetas de columnas son objetos de tipo Index ("índice", en español), pero, como se ha comentado, el índice de filas se denomina también index (aunque en minúsculas), y el de columna, columns.
Además, el nombre de "indice" se aplica normalmente a la referencia de un dato en una estructura según su posición. Por ejemplo, en la lista m = ["a", "b"], el índice del primer elemento es el número o valor que, añadido entre corchetes tras el nombre de la lista, nos permite acceder al elemento. Así, el índice del elemento "a" en la lista mencionada es 0, y el índice del elemento "b" es 1, lo que no es del todo coherente con el concepto de "índice" de una estructura pandas cuando lo especificamos explícitamente.
Para evitar esta confusión, a lo largo de esta documentación hablaremos normalmente de "índices" (en plural) para referirnos a estas dos estructuras (de filas y columnas), de "índice" (en singular) para referirnos al índice de etiquetas del eje vertical, y de "índice de columnas" y de "índice de filas" siempre que sea necesario remarcar a cuál estamos refiriéndonos.
El eje 0 es el correspondiente al índice de filas (eje vertical) y el eje 1 al índice de columnas (eje horizontal). Como puede verse en las imágenes anteriores, salidas Out[12] y Out[13], ambos índices son de tipo "objeto" (ya se ha comentado que, concretamente, son objetos de tipo Index).
El atributo axes devuelve una lista con los ejes de la estructura (dos, al tratarse de una estructura bidimensional):
Al igual que ocurría con las series, los índices de filas y columnas son inmutables. Esto significa que, aunque podemos asignar un nuevo conjunto de datos (etiquetas) a ambas estructuras (index o columns), intentar modificar un único valor devolverá un error.
Tanto el índice de filas como el de columnas poseen el atributo name. Una vez fijado, se muestra al imprimir la estructura:
De forma semejante a como ocurría con las series, el atributo values de un dataframe nos permite acceder a los valores del dataframe, con formato array NumPy 2d:
Este array tendrá un tipo u otro en función de los tipos de las columnas del dataframe, acomodándose de forma que englobe a todos ellos.
Y un dataframe también tiene un atributo shape que nos informa de su dimensionalidad y del número de elementos en cada dimensión. Podemos ver en la siguiente imagen que el dataframe ventas tiene 4 filas y 5 columnas:
Tenemos información adicional sobre los dataframes en esta página de la documentación oficial de pandas.