Categories: CienciaNoticias

Transformación de datos maestros en Pandas con estas tres técnicas útiles

Una inmersión en el filtrado, la manipulación y el funcionamiento

Foto de Milad Fakurian en UnsplashPiense en la última vez que trabajó con un conjunto de datos bien formateado. Columnas bien nombradas, valores faltantes mínimos y organización adecuada. Es una sensación agradable, casi liberadora, ser bendecido con datos que no necesita limpiar y transformar. Bueno, es agradable hasta que sale de su ensoñación y continúa jugando con el desorden sin esperanza de filas rotas y etiquetas sin sentido en frente a ti. No existen los datos limpios (en su forma original). Si eres un científico de datos, lo sabes. Si recién está comenzando, debe aceptar esto. Necesitará transformar sus datos para poder trabajar con ellos de manera efectiva. Hablemos de tres formas de hacerlo.

Filtrado, pero explicado correctamente

Hablemos de filtrado, pero un poco más profundo de lo que puede estar acostumbrado. Como una de las operaciones de transformación de datos más comunes y útiles, el filtrado efectivo es una habilidad imprescindible para cualquier científico de datos. Si conoce Pandas, es probable que sea una de las primeras operaciones que aprendió a hacer. Repasemos, usando mi ejemplo favorito y extrañamente versátil: un marco de datos de calificaciones de los estudiantes, acertadamente llamado calificaciones:Image By AuthorVamos a filtrar cualquier puntaje por debajo de 90, porque en este día hemos decidido ser educadores mal capacitados que solo atienden a los mejores estudiantes (por favor, nunca hagas esto). La línea de código estándar para lograr esto es la siguiente: calificaciones[grades[‘Score’] >= 90]Image By Author Eso nos deja con Jack y Hermione. Enfriar. Pero, ¿qué pasó exactamente aquí? ¿Por qué funciona la línea de código anterior? Profundicemos un poco más mirando el resultado de la expresión dentro de los corchetes exteriores arriba: calificaciones[‘Score’] >= 90Imagen por autorAh, está bien. Eso tiene sentido. Parece que esta línea de código devuelve un objeto de la serie Pandas que contiene valores booleanos (verdadero/falso) determinados por lo que >= 90 devolvió para cada fila individual. Este es el paso intermedio clave. Luego, es esta serie de valores booleanos la que se pasa a los corchetes exteriores y filtra todas las filas en consecuencia. Para completar, también mencionaré que se puede lograr el mismo comportamiento usando la palabra clave loc: calificaciones.loc[grades[‘Score’] >= 90]Image By AuthorHay una serie de razones por las que podríamos elegir usar loc (una de las cuales es que en realidad nos permite filtrar filas y columnas a través de una sola operación), pero eso abre las operaciones de la Caja de Pandas de Pandora que es mejor dejar para otro artículo. Por ahora, el objetivo de aprendizaje importante es este: cuando filtramos en Pandas, la sintaxis confusa no es una especie de magia extraña. Simplemente necesitamos dividirlo en sus dos pasos componentes: 1) obtener una serie booleana de las filas que satisfacen nuestra condición, y 2) usar la serie para filtrar todo el marco de datos. ¿Por qué es útil? Bueno, en términos generales, es probable que genere errores confusos si solo usa operaciones sin comprender cómo funcionan realmente. El filtrado es una operación útil e increíblemente común, y ahora sabe cómo funciona. Sigamos adelante.

La belleza de las funciones Lambda

A veces, sus datos requieren transformaciones que simplemente no están integradas en la funcionalidad de Pandas. Por mucho que lo intente, ninguna cantidad de desbordamiento de pila o exploración diligente de la documentación de Pandas revela una solución a su problema. Ingrese las funciones lambda, una función de lenguaje útil que se integra a la perfección con Pandas. Como revisión rápida, así es como funcionan las lambdas:>> > añadir_función = lambda x, y: x + y
>>> añadir_funcion(2, 3)
5Las funciones lambda no son diferentes a las funciones regulares, excepto por el hecho de que tienen una sintaxis más concisa: El nombre de la función a la izquierda del signo igual La palabra clave lambda a la derecha del signo igual (similar a la palabra clave def en una definición de función tradicional de Python , esto le permite a Python saber que estamos definiendo una función). Parámetro(s) después de la palabra clave lambda, a la izquierda de los dos puntos. Valor de retorno a la derecha de los dos puntos. Ahora bien, apliquemos funciones lambda a una situación realista. Los conjuntos de datos a menudo tienen sus propias peculiaridades de formato, específicas de las variaciones en la entrada y recopilación de datos. Como resultado, los datos con los que está trabajando pueden tener problemas específicos extraños que debe abordar. Por ejemplo, considere el conjunto de datos simple a continuación, que almacena los nombres de las personas y sus ingresos. Llamémoslo dinero.Imagen de AuthorNow, como Altezas de los Datos Maestros de esta empresa, se nos ha proporcionado información ultrasecreta: todos los miembros de esta empresa recibirán un aumento del 10% más $1000 adicionales. Este es probablemente un cálculo demasiado específico para encontrar un método específico, pero lo suficientemente sencillo con una función lambda: update_income = lambda num: num + (num * .10) + 1000Luego, todo lo que tenemos que hacer es usar esta función con el Pandas apply function, que nos permite aplicar una función a cada elemento de la serie seleccionada: dinero[‘New Income’] = dinero[‘Income’].apply(actualizar_ingresos)
dineroImagen por autor¡Y hemos terminado! Un nuevo y brillante DataFrame que consta exactamente de la información que necesitábamos, todo en dos líneas de código. Para hacerlo aún más conciso, incluso podríamos haber definido la función lambda dentro de apply directamente: un consejo interesante que vale la pena tener en cuenta. Mantendré el punto aquí simple. Las lambdas son extremadamente útiles y, por lo tanto, debe usarlas. ¡Disfrutar!

Funciones de manipulación de cadenas en serie

En la sección anterior, hablamos sobre la versatilidad de las funciones lambda y todas las cosas geniales que pueden ayudarlo a lograr con sus datos. Esto es excelente, pero debe tener cuidado de no dejarse llevar. Es increíblemente común quedar tan atrapado en una forma familiar de hacer las cosas que te pierdas los atajos más simples con los que Python ha bendecido a los programadores. Esto se aplica a más que solo lambdas, por supuesto, pero nos quedaremos con eso por el momento. Por ejemplo, digamos que tenemos el siguiente DataFrame llamado nombres que almacena los nombres y apellidos de las personas:Image By AuthorNow, debido a limitaciones de espacio en nuestra base de datos, decidimos que en lugar de almacenar el apellido completo de una persona, es más eficiente simplemente almacenar su última inicial. Por lo tanto, debemos transformar la columna ‘Apellido’ en consecuencia. Con lambdas, nuestro intento de hacerlo podría parecerse a lo siguiente: nombres[‘Last Name’] = nombres[‘Last Name’].apply(lambda s: s[:1])
nombresImage By AuthorEsto claramente funciona, pero es un poco torpe y, por lo tanto, no es tan pitónico como podría ser. Afortunadamente, con la belleza de las funciones de manipulación de cadenas en Pandas, hay otra forma más elegante (a los efectos de la siguiente línea de código, siga adelante y asuma que aún no hemos modificado la columna ‘Apellido’ con el anterior código): nombres[‘Last Name’] = nombres[‘Last Name’].str[:1]
nombresImagen por autorTa-da! La propiedad .str de una Serie Pandas nos permite empalmar cada cadena de la serie con una operación de cadena específica, como si estuviéramos trabajando con cada cadena individualmente. Pero espera, se pone mejor. Dado que .str nos permite acceder efectivamente a la funcionalidad normal de una cadena a través de la serie, ¡también podemos aplicar una variedad de funciones de cadena para ayudar a procesar nuestros datos rápidamente! Por ejemplo, digamos que decidimos convertir ambas columnas a minúsculas. El siguiente código hace el trabajo: nombres[‘First Name’] = nombres[‘First Name’].str.inferior()
nombres[‘Last Name’] = nombres[‘Last Name’].str.inferior()
nombresImagen del autor Mucho más sencillo que pasar por la molestia de definir sus propias funciones lambda y llamar a las funciones de cadena dentro de ellas. No es que no me encanten las lambdas, pero todo tiene su lugar, y la simplicidad siempre debe tener prioridad en Python. Solo he cubierto algunos ejemplos aquí, pero hay una gran colección de funciones de cadena a su disposición. [1]Úselos liberalmente. son excelentes

Pensamientos finales y resumen

Aquí hay una pequeña hoja de trucos de transformación de datos para usted:Filtra como lo dices en serio. Aprende lo que realmente está pasando para que sepas lo que estás haciendo.Amo tus lambdas. Pueden ayudarlo a manipular datos de maneras sorprendentes.Pandas ama las cuerdas tanto como tú. Hay una gran cantidad de funciones integradas; también puede usarlas. Este es un último consejo: no existe una forma “correcta” de filtrar un conjunto de datos. Depende de los datos disponibles, así como del problema único que busca resolver. Sin embargo, aunque no hay un método establecido que pueda seguir cada vez, hay una colección útil de herramientas que vale la pena tener a su disposición. En este artículo, hablé de tres de ellos. Te animo a que salgas y encuentres algunos más.

Referencias

[ 1] https://www.aboutdatablog.com/post/10-most-util-string-functions-in-pandas

aliintizar71

Recent Posts

Máquina de mano Lean, Green, Raspberry Pi

Los días felices de la PDA y Blackberry han quedado definitivamente atrás, pero el factor…

1 year ago

Cómo pronosticar series de tiempo usando autorregresión

Tutorial sobre cómo pronosticar usando un modelo autorregresivo en PythonFoto de Aron Visuals en UnsplashForecasting…

1 year ago

Aquí están todas las formas en que puede cargar su AirPods Pro

Si tienes un iPhone, los AirPods Pro son la opción obvia para escuchar música, ¡aunque…

1 year ago

Las principales noticias tecnológicas del lunes: la prohibición de clientes de terceros de Twitter parece no ser un accidente

Ilustración de Alex Castro / The Verge Plus nuevos rumores sobre el quinto Galaxy Fold.…

1 year ago

AirPods Max 2: aquí están las características más solicitadas

Se rumorea que los auriculares premium de próxima generación de Apple, los AirPods Max 2,…

1 year ago

El remake de Dead Space continúa luciendo terriblemente genial en el nuevo tráiler de la historia

El desarrollador Motive Studio y el editor EA han lanzado un nuevo tráiler de la…

1 year ago