Aprenda lo básico para trabajar con pandas DataFrames: la estructura de datos básica de pandas, una potente biblioteca de manipulación de datos.
Si desea iniciarse en el análisis de datos en Python, pandas es una de las primeras bibliotecas con las que debería aprender a trabajar. Desde importar datos de múltiples fuentes, como archivos CSV y bases de datos, hasta manejar datos que faltan y analizarlos para obtener información – pandas le permite, hacer todo lo anterior.
Para empezar a analizar datos con pandas, debe comprender la estructura de datos fundamental en pandas: los marcos de datos.
En este tutorial, aprenderá los fundamentos de los marcos de datos de pandas y los métodos comunes para crear marcos de datos. A continuación, aprenderá a seleccionar filas y columnas del marco de datos para recuperar subconjuntos de datos.
Por todo esto y más, empecemos.
Instalación e importación de pandas
Como pandas es una biblioteca de análisis de datos de terceros, primero debe instalarla. Se recomienda instalar paquetes externos en un entorno virtual para su proyecto.
Si utiliza la distribución Anaconda de Python, puede utilizar conda
para la gestión de paquetes.
conda install pandas
También puede instalar pandas utilizando pip:
pip install pandas
⚙ La biblioteca pandas requiere NumPy como dependencia. Así que si NumPy no está ya instalado, también se instalará durante el proceso de instalación.
Después de instalar pandas, puede importarlo a su entorno de trabajo. En general, pandas se importa bajo el alias pd
:
import pandas as pd
¿Qué es un DataFrame en Pandas?
La estructura de datos fundamental en pandas es el marco de datos. Un marco de datos es un array bidimensional de datos con índices etiquetados y columnas con nombre. Cada columna del marco de datos, llamada serie pandas, comparte un índice común.
He aquí un marco de datos de ejemplo que crearemos desde cero en los próximos minutos. Este marco de datos contiene datos sobre cuánto gastan seis estudiantes en cuatro semanas.
Los nombres de los estudiantes son las etiquetas de las filas. Y las columnas se denominan de ‘Semana1’ a ‘Semana4’. Observe que todas las columnas comparten el mismo conjunto de etiquetas de fila, también llamado índice.
Cómo crear un Pandas DataFrame
Hay varias formas de crear un marco de datos de pandas. En este tutorial, discutiremos los siguientes métodos:
- Creación de un marco de datos a partir de matrices NumPy
- Creación de un marco de datos a partir de un diccionario Python
- Creación de un marco de datos mediante la lectura de archivos CSV
A partir de matrices NumPy
Creemos un marco de datos a partir de una matriz NumPy.
Creemos la matriz de datos de forma (6,4) suponiendo que en una semana cualquiera, cada estudiante gasta entre 0 y 100 dólares. La función randint()
del módulo aleatorio
de NumPy devuelve una matriz de enteros aleatorios en un intervalo dado, [bajo,alto)
.
importar numpy como np
np.random.seed(42)
datos = np.random.randint(0,101,(6,4))
print(datos)
array([[51, 92, 14, 71],
[60, 20, 82, 86],
[74, 74, 87, 99],
[23, 2, 21, 52],
[ 1, 87, 29, 37],
[ 1, 63, 59, 20]])
Para crear un marco de datos pandas, puede utilizar el constructor DataFrame
y pasar el array NumPy como argumento de datos
, como se muestra:
estudiantes_df = pd.DataFrame(datos=datos)
Ahora podemos llamar a la función incorporada type()
para comprobar el tipo de students_df
. Vemos que se trata de un objeto DataFrame
.
type(estudiantes_df)
# pandas.core.frame.DataFrame
print(estudiantes_df)
Vemos que, por defecto, tenemos una indexación por rangos que va de 0 a numRows
– 1, y las etiquetas de las columnas son 0, 1, 2, …, numCols
-1. Sin embargo, esto reduce la legibilidad. Será útil añadir nombres descriptivos de columnas y etiquetas de filas al marco de datos.
Creemos dos listas: una para almacenar los nombres de los estudiantes y otra para almacenar las etiquetas de las columnas.
estudiantes = ['Amy','Bob','Chris','Dave','Evelyn','Fanny']
cols = ['Semana1','Semana2','Semana3','Semana4']
Al llamar al constructor del DataFrame
, puede establecer el índice
y las columnas
a las listas de etiquetas de fila y etiquetas de columna a utilizar, respectivamente.
estudiantes_df = pd.DataFrame(datos = datos,índice = estudiantes,columnas = cols)
Ahora tenemos el marco de datos estudiantes_df
con etiquetas descriptivas de filas y columnas.
print(estudiantes_df)
Para obtener información básica sobre el marco de datos, como los valores que faltan y los tipos de datos, puede llamar al método info()
del objeto marco de datos.
estudiantes_df.info()
Desde un diccionario Python
También puede crear un marco de datos pandas a partir de un diccionario Python.
Aquí, diccionario_datos
es el diccionario que contiene los datos de los estudiantes:
- Los nombres de los estudiantes son las claves.
- Cada valor es una lista de cuánto gasta cada estudiante de la semana uno a la cuatro.
diccionario_datos = {}
estudiantes = ['Amy','Bob','Chris','Dave','Evelyn','Fanny']
para estudiante,datos_estudiante en zip(estudiantes,datos):
diccionario_datos[estudiante] = datos_estudiante
Para crear un marco de datos a partir de un diccionario Python, utilice from_dict
, como se muestra a continuación. El primer argumento corresponde al diccionario que contiene los datos(data_dict
). Por defecto, las claves se utilizan como los nombres de las columnas del marco de datos. Como queremos establecer las claves como las etiquetas de las filas, establezca orient= 'index'
.
estudiantes_df = pd.DataFrame.from_dict(datos_dict,orient='indice')
print(estudiantes_df)
Para cambiar los nombres de las columnas por el número de semana, establecemos columnas en la lista cols
:
estudiantes_df = pd.DataFrame.from_dict(datos_dict,orient='indice',columnas=cols)
print(estudiantes_df)
Leer un archivo CSV en un Pandas DataFrame
Supongamos que los datos de los estudiantes están disponibles en un archivo CSV. Puede utilizar la función read_csv()
para leer los datos del archivo en un marco de datos de pandas. pd.read_csv('file-path')
es la sintaxis general, donde file-path
es la ruta al archivo CSV. Podemos establecer el parámetro names
a la lista de nombres de columnas a utilizar.
estudiantes_df = pd.read_csv('/contenido/estudiantes.csv',nombres=cols)
Ahora que sabemos cómo crear un marco de datos, aprendamos a seleccionar filas y columnas.
Seleccionar columnas de un marco de datos Pandas
Existen varios métodos incorporados que puede utilizar para seleccionar filas y columnas de un marco de datos. Este tutorial repasará las formas más comunes de seleccionar columnas, filas, y tanto filas como columnas de un marco de datos.
Seleccionar una sola columna
Para seleccionar una sola columna, puede utilizar df_name<x>[col_name]</x>
donde col_name
es la cadena que denota el nombre de la columna.
Aquí, seleccionamos sólo la columna ‘Semana1’.
semana1_df = estudiantes_df['Semana1']
print(semana1_df)
Selección de varias columnas
Para seleccionar múltiples columnas del marco de datos, pase la lista de todos los nombres de columnas a seleccionar.
semanas_impares = estudiantes_df[['Semana1','Semana3']]
print(semanas_impares)
Además de este método, también puede utilizar los métodos iloc()
y loc()
para seleccionar columnas. Más adelante codificaremos un ejemplo.
Seleccionar filas de un marco de datos de Pandas
Utilizando el método .iloc()
Para seleccionar filas utilizando el método iloc()
, pase los índices correspondientes a todas las filas como una lista.
En este ejemplo, seleccionamos las filas en el índice impar.
filas_índice_impar = estudiantes_df.iloc[[1,3,5]]
print(filas_de_índice_impar)
A continuación, seleccionamos un subconjunto del marco de datos que contenga las filas en los índices 0 a 2, el punto final 3 se excluye por defecto.
slice1 = estudiantes_df.iloc[0:3]
print(slice1)
Utilización del método .loc()
Para seleccionar las filas de un marco de datos utilizando el método loc()
, debe especificar las etiquetas correspondientes a las filas que desea seleccionar.
algunas_filas = estudiantes_df.loc[['Bob','Dave','Fanny']]
print(algunas_filas)
Si las filas del marco de datos están indexadas utilizando el rango por defecto 0, 1, 2, hasta
numRows
-1, entonces utilizariloc()
yloc()
son ambos equivalentes.
Seleccionar filas y columnas de un marco de datos Pandas
Hasta ahora, ha aprendido cómo seleccionar filas o columnas de un marco de datos de pandas. Sin embargo, a veces puede necesitar seleccionar un subconjunto tanto de filas como de columnas. Entonces, ¿cómo hacerlo? Puede utilizar los métodos iloc()
y loc()
de los que hemos hablado.
Por ejemplo, en el fragmento de código siguiente, seleccionamos todas las filas y columnas en los índices 2 y 3.
subconjunto_df1 = estudiantes_df.iloc[:,[2,3]]
print(subconjunto_df1)
El uso de inicio:parada
crea un corte desde el inicio
hasta la parada
, pero sin incluirla. De este modo, al ignorar los valores de inicio
y parada
, la rebanada comienza al principio y se extiende hasta el final del marco de datos, seleccionando todas las filas.
Cuando utilice el método loc()
, tendrá que pasar las etiquetas de las filas y las columnas que desee seleccionar, como se muestra:
subconjunto_df2 = estudiantes_df.loc[['Amy','Evelyn'],['Semana1','Semana3']]
print(subconjunto_df2)
Aquí, el marco de datos subset_df2
contiene el registro de Amy y Evelyn para la Semana1 y la Semana3.
Conclusión
He aquí un rápido repaso de lo que ha aprendido en este tutorial:
- Después de instalar pandas, puede importarlo bajo el alias
pd
. Para crear un objeto de marco de datos pandas, puede utilizar el constructorpd.DataFrame(data)
, dondedata
se refiere al array N-dimensional o a un iterable que contiene los datos. Puede especificar la fila y el índice, y las etiquetas de las columnas estableciendo los parámetros opcionales índice y columnas, respectivamente. - Si utiliza
pd.read_csv(ruta-al-archivo)
leerá el contenido del archivo en un marco de datos. - Puede llamar al método
info()
en el objeto marco de datos para obtener información sobre las columnas, el número de valores perdidos, los tipos de datos y el tamaño del marco de datos. - Para seleccionar una sola columna, utilice
df_name
<x>[col_name]</x>
, y para seleccionar varias columnas, columna particular,df_name[[col1,col2,...,coln]]
. - También puede seleccionar columnas y filas utilizando los métodos
loc()
eiloc()
. - Mientras que el método
iloc
(
) toma el índice (o trozo de índice) de las filas y columnas a seleccionar, el métodoloc()
toma las etiquetas de fila y columna.
Puede encontrar los ejemplos utilizados en este tutorial en este cuaderno Colab.
A continuación, consulte este artículo sobre cuadernos colaborativos de ciencia de datos.