Manipulando DataFrames - Analiza tus datos con Pandas en Python parte 2

Ahora que sabemos como cargar nuestros archivos, es hora de usarlos. Comencemos configurando nuestro DataFrame inicial.

💡
Este artículo es parte de nuestro curso sobre Pandas. Revisa el curso completo e inscríbete aquí. Revisa la parte 1 de esta guía aquí.
import pandas as pd
df_excel = pd.read_excel("https://docs.google.com/uc?export=download&id=1RjyFp3seXXSwjJMVwT6FBs3lNniDxsNN", index_col="ID_Producto")
Encuentra todo el código asociado a este post en este notebook de Google Colab

Despliega los primeros o últimos datos

Para mostrar una parte del DataFrame usarás el método head(n) o tail(n), donde 'n' son los primeros o últimos n datos.

df_excel.head(5) # muestra los primeros 5 datos
df_excel.tail(5 # muestra los últimos 5 datos

Muestra un resumen de los datos

Con describe() puedes obtener rápidamente algunas estadísticas descriptivas sobre tus datos

Ejemplo de como luce una consulta de df.describe()

Más funciones de estadistica descriptiva

# Promedio
df_excel.Precio.mean()

# Tambien funciona asi:
df_excel["Precio"].mean()
# Minimo
df_excel.Precio.min()

# Tambien funciona asi:
df_excel["Precio"].min()
# Maximo
df_excel.Precio.max()

# Tambien funciona asi:
df_excel["Precio"].max()
# Sumatoria
df_excel.Cantidad.sum()

# Tambien funciona asi:
df_excel["Cantidad"].sum()
# Contar por tipo
df_excel.Producto.value_counts()

# Tambien funciona asi:
df_excel["Producto"].value_counts()
# Contar total columna
df_excel.Producto.count()

# Tambien funciona asi:
df_excel["Producto"].count()

Filtra DataFrames

Puedes seleccionar un set de datos que cumplen una condición utilizando esta estructura df[condicion]. Por ejemplo

df_excel[df_excel["Cantidad"] > 100]

Estas condiciones pueden ser complejas a través de usar indicadores &(AND) y | (OR)

# Tienen que cumplirse dos condiciones al mismo tiempo
df_excel[(df_excel["Cantidad"] > 100) & (df_excel["Precio"] < 200000)]
# Tiene que cumplirse al menos una condición
df_excel[(df_excel["Cantidad"] > 100) | (df_excel["Precio"] < 200000)]

Para filtrar por aquellos que contienen un texto determinado, puedes usar .str.contains(). Nótese que es sensible a mayúsculas y tildes.

# Filtra los productos que contienen la palabra "Cámara"
df_excel[(df_excel["Producto"].str.contains("Cámara"))]

Ordena DataFrames

Para ordenar los datos en tu DataFrame puedes usar la siguiente estructura
df.sort_values(by=nombre_columna, ascending=True/False)

El argumento ascending es True cuando los datos van de menor a mayor, y es False en el caso contrario.

Puedes combinarlo con el método head() y así desplegar un top 5, top 10, o similar. Por ejemplo así puedes ver el top 5 productos por precio.

df_excel.sort_values(by="Precio", ascending=False).head(5)

Gestión de datos vacios

Un problema común la hora de gestionar datos es que hay columnas que no tienen todos los datos. Miremos este ejemplo:

df_artistas = pd.read_excel("https://docs.google.com/uc?export=download&id=1bqVTtpAF50QSlrtB6DjfeHx1w9UKT7O3")
df_artistas
En el ejemplo, el Artista Feid no tiene dato asociado

Identificando datos vacios

En un DataFrame pequeño, como el que acabamos de crear, es fácil ver donde y cuántos NaN hay. Pero cuando manipulamos grandes volúmenes de datos es mejor llamar el siguiente tipo de código para obtener un resumen de este problema.

df_artistas.isna().sum()

"""
Output:

Artista                       0
Spotify streams (millones)    1
dtype: int64
"""

Puedes ver que en la columna Spotify streams (millones) tenemos 1 dato con NaN, mientras que en las otras columnas no tenemos.

Eliminando datos vacíos

La fila de Feid no tiene ningún dato, por lo que podría ser recomendable sacarlo del DataFrame, así podemos manipular los otros datos.

df_artistas_filtrado = df_artistas.dropna()
df_artistas_filtrado

Advertencia: el método dropna() elimina toda la fila si es que alguna columna es NaN.

Nota: Tienes que crear otro DataFrame con la información filtrada. Esto es una protección para evitar que elimines fácilmente los datos.

Llenando datos vacios

Otra manera de gestionar estos datos es llenando el vacio que dejó. Vamos a reemplazar el NaN en este caso por 7900, que fue el número asociado a Feid para este año, usando fillna

df_artistas_llenado = df_artistas.fillna(7900)
df_artistas_llenado

Si queremos ser super específicos con como vamos a completar los datos, vamos a usar el método loc para específicamente localizar ese dato.

df_artistas.loc[5, "Spotify streams (millones)"] = 7900
df_artistas

Creando una columna usando una formula

Puede añadir una nueva columna en base a cálculos.

En el siguiente ejemplo tenemos un DataFrame con la cantidad y precio de cada producto.

df_excel.head(3)

Suponga que quiere saber cuáles son los productos que representan más valor en su inventario. Para ello le pide que cree una nueva columna llamada "ValorInventario" que contenga el valor de la cantidad multiplicada por el precio de cada producto.

# Generamos la columna
df_excel["ValorInventario"] = df_excel.Cantidad * df_excel.Precio

# Desplegamos el cambio, con solo los 3 primeros productos
df_excel.head(3)

Borrando una columna

Para borrar una columna debe usar drop, y especificar axis=1, que es el indicador de columnas. En pandas axis=0 referencia a las filas.

df_productos_borrado = df_excel.drop("ValorInventario", axis=1)

# Desplegamos el cambio, con solo los 3 primeros productos
df_productos_borrado.head(3)

Nota: Tienes que crear otro DataFrame con la información borrada. Esto es una protección para evitar que elimines fácilmente los datos y no puedas recuperarlos.


Accede a nuestro curso

Este artículo es parte de nuestro curso sobre Pandas. Revisa el curso completo e inscríbete aquí.

Continua con la siguiente parte de estas guías: Graficar y Exportar Datos