Introducción
¡Bienvenido a la Pandas Basics Lab! En este laboratorio, exploraremos algunos aspectos fundamentales de la biblioteca Pandas: uso de memoria de DataFrame, manejo de declaraciones if/verdad, uso de métodos de funciones definidas por el usuario (UDF), manejo de valores NA, diferencias con NumPy y consideraciones de seguridad en hilos.
Consejos sobre la VM
Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no puede automatizarse debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje su retroalimentación después de la sesión y resolveremos el problema rápidamente para usted.
Comprendiendo el uso de memoria de DataFrame
Pandas proporciona varios métodos para comprender el uso de memoria de un DataFrame. El método .info() se puede utilizar para ver un resumen, incluyendo el uso de memoria.
import pandas as pd
import numpy as np
## Crea un DataFrame
dtypes = ["int64", "float64", "datetime64[ns]", "timedelta64[ns]", "complex128", "object", "bool"]
n = 5000
data = {t: np.random.randint(100, size=n).astype(t) for t in dtypes}
df = pd.DataFrame(data)
df["categorical"] = df["object"].astype("category")
## Muestra la información del DataFrame
df.info()
Usando declaraciones if/verdad con Pandas
Pandas no admite el uso directo de declaraciones if/verdad debido a la ambigüedad. En su lugar, utilice métodos como .any(), .all() o .empty().
## Comprueba si algún valor en la Serie es True
if pd.Series([False, True, False]).any():
print("Al menos un valor True en la Serie")
Mutando con métodos de funciones definidas por el usuario (UDF)
Cuando se utiliza un método de pandas que toma una UDF, evite cambiar el DataFrame dentro de la UDF. En su lugar, haga una copia antes de realizar cambios.
def f(s):
s = s.copy()
s.pop("a")
return s
df = pd.DataFrame({"a": [1, 2, 3], 'b': [4, 5, 6]})
df.apply(f, axis="columns")
Manejo de valores NA
Pandas proporciona tipos de extensión de enteros con valores nulos para representar enteros con posibles valores faltantes.
s_int = pd.Series([1, 2, 3, 4, 5], index=list("abcde"), dtype=pd.Int64Dtype())
s2_int = s_int.reindex(["a", "b", "c", "f", "u"])
Comprendiendo las diferencias con NumPy
Pandas y NumPy tienen ligeras diferencias en cómo calculan la varianza. Es importante tener en cuenta esto al cambiar entre las dos bibliotecas.
## Varianza en pandas
var_pandas = df.var()
## Varianza en NumPy
var_numpy = np.var(df.values)
Considerando la seguridad en hilos en Pandas
Pandas no es 100% seguro en hilos. Tenga precaución al compartir objetos de Pandas entre múltiples hilos.
Manejo de problemas de orden de bytes
Es posible que encuentres problemas de orden de bytes al trabajar con datos creados en una máquina con un orden de bytes diferente. Convierte los datos al orden de bytes nativo del sistema antes de pasarlos a Pandas.
x = np.array(list(range(10)), ">i4") ## big endian
newx = x.byteswap().newbyteorder() ## forzar el orden de bytes nativo
s = pd.Series(newx)
Resumen
En este laboratorio, exploramos algunos aspectos cruciales de la biblioteca Pandas. Comprender estos aspectos lo ayudará a utilizar Pandas de manera más efectiva y evitar los errores comunes.