Pandas: de cero a héroe
Un artículo completo que puede leer mientras ve su televisión favorita durante el día, pero lo suficientemente bueno como para enseñarle todo lo que necesita saber para hacer el trabajo.
Empezando
Pandas es una biblioteca de análisis y procesamiento de datos en Python. Pandas se usa ampliamente para la ciencia de datos y el aprendizaje automático. Está desarrollado sobre otro paquete de Python llamado NumPy, que se usa para computación científica. Si no sabe mucho sobre NumPy, es posible que desee comprobarlo rápidamente leyendo mi artículo de 5 minutos antes de continuar con Pandas. Esto no es obligatorio, pero lo recomiendo encarecidamente.
Para comenzar, primero asegúrese de tener Python, NumPy y Pandas en su sistema. Cómo lo obtenga depende de su sistema y del IDE de su preferencia, pero recomiendo Anaconda. Con la instalación básica de Anaconda, simplemente puede ir a la terminal y ejecutar "conda install numpy", y luego "conda install pandas" y ¡listo!
Ahora, creemos un archivo ejemplo.py para comenzar a trabajar.
Nota: si tuviéramos que crear un proyecto en lugar de un solo archivo de ejemplo para trabajar, simplemente tendríamos que crear un directorio y un archivo __init__.py dentro de él.
Debe agregar las siguientes líneas en la parte superior del archivo para poder trabajar con Pandas dentro del archivo.
importar numpy como np
importar pandas como pd
Nota: generalmente importamos NumPy como np y Pandas como pd para que no tengamos que escribir numpy & pandas cada vez que llamamos a una función desde las bibliotecas. Tenga en cuenta que, aunque se puede cambiar, np y pd son la convención general.
Después de eso, puede ejecutar el código dentro del archivo de ejemplo simplemente yendo a la terminal y ejecutando el comando:
python ejemplo.py
Serie
Similar a cómo cualquier lenguaje de programación tiene matrices, de manera similar a cómo NumPy tiene matrices, obtenemos series en Pandas. La principal diferencia entre series y matrices/arreglos ordinarios es que los elementos dentro de las series pueden tener un número de índice o claves para acceder a ese valor. Piense en ello como una lista de pares clave-valor como datos JSON.
Dato curioso: Pandas a menudo se expresa como "Excel para ciencia de datos" debido al hecho de que ahorra valor: pares de claves, los muestra visualmente y realiza cálculos en ellos de manera similar a MS Excel.
Puedes crear una serie de Pandas a partir de un diccionario de Python:
miDiccionario = { “Juan”: 35, “Jane”: 40}
pd.Series(myDictionary) // devuelve John 35, Jane 40
Si agregara una matriz en lugar de un diccionario, los elementos dentro de la serie tendrían números enteros como claves:
miArray = [ 35, 40]
pd.Series(myArray) // devuelve 0 35, 1 40
Puede agregar dos matrices juntas y crear una serie a partir de ellas como:
miArray1 = [ 35, 40]
myArray2 = [ “Juan”, “Jane”]
pd.Series(data= myArray1, index=myArray2) // devuelve John 35, Jane 40
Si hay dos series diferentes con las mismas claves, puede realizar operaciones matemáticas sobre ellas como:
serie1 = pd.Serie({ “Juan”: 35, “Jane”: 40})
serie2 = pd. Serie ({ "Juan": 100, "Jane": 50})
seriesSum = series1 + series2 // devuelve John 135, Jane 90
Nota: Al realizar una operación matemática en series con diferentes claves, las claves coincidentes tendrán como valor el resultado de la operación, pero las claves no coincidentes tendrán un valor de NaN ya que no habrá resultado para estas claves.
Marcos de datos
Los marcos de datos se pueden considerar como una Serie pero para matrices. Básicamente, una matriz donde los índices son claves y todo es un par clave-valor se denomina marco de datos.
Puede crear un marco de datos a partir de cualquier arreglo o matriz como:
miMatriz = [ [10, 20, 30], [ 100, 200, 300] ]
dataFrame = pd.DataFrame(myMatrix)
Puede asignar claves de columnas y filas como:
miMatriz = [ [ 1, 2, 3],[10, 20, 30], [ 100, 200, 300] ]
filas = [“Juan”, “Jane”, “Sarah”]
columnas = [ “Tenis”, “Baloncesto”, “Pingpong”]
dataFrame = pd.DataFrame(myMatrix, índice = filas, columnas = columnas)
Puede llamar a una determinada columna desde el marco de datos como:
trama de datos[ "Tenis"]
Sin embargo, si llamara a una fila con la clave como se muestra arriba, generaría un error. Puede llamar a una fila con la clave como:
dataFrame.loc[ “Juan”]
El hecho de que haya claves para llamar a columnas y filas no significa que no haya índices. Al igual que en las matrices, los índices aún existen. Puede, por ejemplo, llamar a la primera fila como:
dataFrame.iloc[1] // devuelve la fila Jane con los valores 2, 20, 200
Puede agregar una nueva columna al marco de datos como:
trama de datos[ "Fútbol" ] = [ 1000, 2000, 3000]
Viceversa, puede eliminar una columna o una fila del marco de datos como:
dataFrame.drop( "Fútbol", axis=1, inPlace=True) // para eliminar una columna, debe establecer el eje en 1
dataFrame.drop(“John”, axis=0, inPlace=True) // para eliminar una fila, debe establecer el eje en 0
Nota: Pandas no quiere que cambie por error una columna o fila completa. ¿Quizás está tratando de crear otro marco de datos y configurar el marco de datos anterior con una columna faltante en lugar de modificar el anterior? Entonces, para asegurarnos de que realmente está cambiando el marco de datos en sí, colocamos el parámetro inPlace=True dentro de las funciones.
Puede llamar a un valor de celda como:
dataFrame.loc[ “Juan”, “Tenis”]
Puede eliminar dentro de los marcos de datos como:
trama de datos[ trama de datos[“Tenis”] > 5]
// eliminará las filas donde el valor de la columna Tennis es menor que 5, por lo tanto, eliminará la fila John
Para cambiar los índices dentro de un marco de datos, primero debe agregar la nueva matriz de índices como una columna al marco de datos anterior. Luego, puede capturarlo por el nombre de la columna y asignar sus valores como los nuevos índices como:
dataFrame.set_indexes(“Nueva columna de índice”, inPlace=True)
Un marco de datos de índice múltiple se ve así en Excel:
Donde hay dos índices para las filas, Frutas y Verduras Y el nombre del producto. También podemos crear índices múltiples como este a través de Pandas. Para hacer eso debes:
- Defina dos listas de índices externos e índices internos, y luego combine estos dos en una lista de tupla uzing y métodos zip.
- Luego use el método MultiIndex.from_tuples() para transformar la tupla en un índice múltiple.
- Luego crea una lista de columnas.
- Después de eso, cree una lista de los datos como una matriz y conviértala en una matriz usando el método np.array().
- Finalmente, use la función DataFrame() de Pandas para crear el marco de datos con índice múltiple.
índicesexternos = [ “Verduras”, “Verduras”, “Frutas”, “Frutas”]
innerIndexes = [ “Tomates”, “Pepinos”, “Naranjas”, “Arándanos”]
índices combinados = lista (zip (índices externos, índices internos))
índicescombinados = pd.MultiIndex.from_tuples(índicescombinados)
listAmountPrice =[ [ 2 USD, 5 libras], [ 1 USD, 3 libras], [ 2 USD, 3 libras], [ 3 USD, 2 libras] ]
numpySeriesAmountPrice = np.array( listAmountPrice )
misColumnas = [ “Precio”, “Cantidad” ]
multiIndexDataFrame = pd.DataFrame( numpySeriesAmountPrice, índice = índices combinados, columnas = misColumnas)
Y luego, puede llamar la cantidad y el precio de los arándanos como:
multiIndexDataFrame.loc[ “Frutas” ].loc[ “Arándanos” ]
También puede dar algunos nombres a las columnas de índices múltiples, como este:
multiIndexDataFrame.index.names = [ "Pasillo", "Nombre del producto" ]
Operaciones
- Para devolver un marco de datos del marco de datos original con las filas que contienen valores NaN eliminados:
- Para devolver un marco de datos del marco de datos original con las columnas que contienen valores NaN eliminados:
- Para devolver un marco de datos del marco de datos original con las filas que contienen más de dos valores NaN eliminados:
- Para devolver un marco de datos del marco de datos original con las celdas que contienen un valor NaN cambiado a un valor determinado, digamos, el número entero 20:
- Para ejecutar operaciones y recopilar datos sobre un marco de datos basado en una columna, debe agrupar el marco de datos en relación con esa columna mediante groupby. Luego puede realizar operaciones para contar los datos dentro, obtener la media de los valores, etc.
group.mean() // obtiene la media de los salarios dentro de la tabla
group.count() // calcula cuántos empleados obtienen un determinado salario por cada salario
group.describe () // trae algunos resultados de análisis estadísticos como la media, los valores máximo y mínimo, etc. para ese marco de datos en relación con la columna agrupada "Salario"
- Si tiene dos o más marcos de datos que tienen las mismas columnas, puede juntarlos (uno debajo de otro) de esta manera:
- Del mismo modo, si tiene dos o más marcos de datos que tienen las mismas filas, puede juntarlos (uno debajo de otro) de esta manera:
- Sin embargo, si está buscando obtener dos o más marcos de datos con diferentes columnas, usaría el método de combinación como se muestra a continuación. Pero tenga en cuenta que, para poder hacer esto, todos los marcos de datos que combine deben tener al menos una columna en común.
- Puede traer solo los valores únicos dentro de una columna en una base de datos como:
- Puede calcular cuántos valores únicos hay dentro de una columna en un marco de datos como:
- Puede definir una función y aplicarla a cada valor dentro de un marco de datos con la función .apply(). Para explicar más en un ejemplo:
return price * 1.33 // función que suma %33 de impuestos al precio original
priceDataFrame[ “Price” ].apply( priceWithTax ) // devuelve una serie con los precios actualizados
Sobresalir con Pandas
A pesar de que trabajamos con marcos de datos y series anteriores, lo más probable es que los datos de la vida real se le entreguen en forma de un archivo de Excel.
Para poder trabajar con un archivo de Excel, asegúrese de guardarlo exactamente en el mismo directorio donde se encuentra su archivo python (el archivo python en el que ejecutará las funciones y operaciones de Pandas). Luego, puede importar su archivo de Excel como:
miMarcoDeDatos = pd.read_excel( “miArchivoExcel.xlsx” )
Los archivos de Excel se importarán como tipo DataFrame de forma predeterminada, ¡así que ya está listo!
Conclusión
Hay muchas otras funciones predefinidas y estructuras fáciles de usar dentro de Pandas que puede necesitar según la tarea, pero esto debería ser suficiente para ayudarlo a realizar el trabajo. Si está buscando una carrera completa en esto o si está interesado en aprender más, puede continuar con cursos de nivel avanzado o investigar a medida que encuentre la necesidad de algo más (¡algo más inteligente!) Mientras trabaja en una tarea. ¡Pandas tiene una solución para casi todo!

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































