Una inmersión en el filtrado, la manipulación y el funcionamiento.
Piense 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 bendecida con datos que no es necesario limpiar ni transformar.
Bueno, es agradable hasta que sales de tu ensoñación y continúas jugueteando con el caos desesperado de filas rotas y etiquetas sin sentido que tienes delante.
No existen datos limpios (en su forma original). Si eres un científico de datos, lo sabes. Si estás empezando, deberías 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 profundamente de lo que estás acostumbrado a hacer. Como una de las operaciones de transformación de datos más comunes y útiles, el filtrado eficaz es una habilidad imprescindible para cualquier científico de datos. Si conoces Pandas, probablemente sea una de las primeras operaciones que aprendiste a realizar.
Repasemos, usando mi ejemplo favorito, extrañamente versátil: un DataFrame de calificaciones de estudiantes, acertadamente llamado grades
:
Vamos 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[calificaciones['Puntuación'] >= 90]
Eso nos deja con Jack y Hermione. Fresco. ¿Pero qué pasó exactamente aquí? ¿Por qué ¿Funciona la línea de código anterior? Profundicemos un poco más al observar el resultado de la expresión dentro de los corchetes exteriores de arriba:
calificaciones['Puntuación'] >= 90
Ah bien. Eso tiene sentido. Parece que esta línea de código devuelve un objeto de la serie Pandas que contiene valores booleanos ( True
/ False
) valores determinados por lo que >= 90
devuelto para cada fila individual. Este es el paso intermedio clave. Luego, es esta Serie de booleanos la que pasa a los corchetes externos y filtra todas las filas en consecuencia.
Para finalizar, también mencionaré que se puede lograr el mismo comportamiento usando el loc
palabra clave:
calificaciones.loc[calificaciones['Puntuación'] >= 90]
Hay una serie de razones por las que podríamos optar por utilizar 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 una Caja de Pandora de operaciones Pandas 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 los dos pasos que lo componen: 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 esto útil?, te preguntarás. Bueno, en términos generales, es probable que se produzcan errores confusos si simplemente utilizas operaciones sin entender cómo funcionan realmente. El filtrado es una operación útil e increíblemente común y ahora sabes cómo funciona.
Vamonos.
La belleza de las funciones Lambda
A veces, sus datos requieren transformaciones que simplemente no están integradas en la funcionalidad de Pandas. Por más que lo intentes, ninguna cantidad de búsqueda en Stack Overflow o exploración diligente de la documentación de Pandas revela una solución a tu problema.
Ingrese a las funciones lambda: una característica de lenguaje útil que se integra perfectamente con Pandas.
Como repaso rápido, así es como funcionan las lambdas:
>>> agregar_función = lambda x, y: x + y
>>> agregar_función(2, 3)
5
Las funciones Lambda no son diferentes de las funciones regulares, excepto que tienen una sintaxis más concisa:
- Nombre de la función a la izquierda del signo igual
- El
lambda
palabra clave a la derecha del signo igual (de manera similar a ladef
palabra clave 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 del
lambda
palabra clave, a la izquierda de los dos puntos. - Valor de retorno a la derecha de los dos puntos.
Ahora bien, apliquemos las funciones lambda a una situación realista.
Los conjuntos de datos suelen tener 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 extrañamente específicos que deba abordar. Por ejemplo, considere el conjunto de datos simple que aparece a continuación, que almacena los nombres de las personas y sus ingresos. llamémoslo monies
.
Ahora, como Altezas de los Datos Maestros de esta compañía, se nos ha dado información ultrasecreta: todos en esta compañía recibirán un aumento del 10% más $1000 adicionales. Probablemente este sea un cálculo demasiado específico para encontrar un método específico, pero es bastante sencillo con una función lambda:
actualización_ingreso = lambda núm: núm + (núm * .10) + 1000
Entonces, todo lo que tenemos que hacer es usar esta función con Pandas apply
función, que nos permite aplicar una función a cada elemento de la Serie seleccionada:
dinero['Nuevos Ingresos'] = dinero['Ingresos'].apply(update_ Income)
dinero
¡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, debes 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 interesantes que pueden ayudarle a lograr con sus datos. Esto es excelente, pero debes tener cuidado de no dejarte llevar. Es increíblemente común quedar tan atrapado en una forma familiar de hacer las cosas que se pierden atajos más simples con los que Python ha bendecido a los programadores. Por supuesto, esto se aplica a más que solo lambdas, pero nos limitaremos a eso por el momento.
Por ejemplo, digamos que tenemos el siguiente DataFrame llamado names
que almacena los nombres y apellidos de las personas:
Ahora, 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, necesitamos transformar la 'Last Name'
columna en consecuencia. Con lambdas, nuestro intento de hacerlo podría verse así:
nombres['Apellido'] = nombres['Apellido'].apply(lambda s: s[:1])
nombres
Esto 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, existe otra forma más elegante (para el propósito de la siguiente línea de código, siga adelante y suponga que aún no hemos alterado la 'Last Name'
columna con el código anterior):
nombres['Apellido'] = nombres['Apellido'].str[:1]
nombres
¡Ta-da! El .str
La propiedad de una serie Pandas nos permite unir 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. Desde .str
efectivamente nos permite acceder 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['Nombre'] = nombres['Nombre'].str.lower()
nombres['Apellido'] = nombres['Apellido'].str.lower()
nombres
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 gusten las lambdas, pero todo tiene su lugar y la simplicidad siempre debe tener prioridad en Python.
Sólo he cubierto algunos ejemplos aquí, pero una gran colección de funciones de cadena está a su disposición [1].
Úselos generosamente. Son excelentes.
Pensamientos finales y resumen
Aquí tienes una pequeña hoja de referencia sobre transformación de datos:
- Filtra como lo dices en serio. Aprenda lo que realmente está pasando para saber lo que está haciendo.
- Amo tus lambdas. Pueden ayudarle a manipular datos de formas sorprendentes.
- A los pandas les encantan las cuerdas tanto como a ti. Hay muchas funciones integradas; también puedes usarlas.
Aquí hay un último consejo: no existe una forma "correcta" de filtrar un conjunto de datos. Depende de los datos disponibles y del problema único que desee resolver. Sin embargo, si bien no existe un método establecido que puedas seguir cada vez, existe una colección útil de herramientas que vale la pena tener a tu 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-useful-string-functions-in-pandas
Transformación de datos maestros en Pandas con estas tres técnicas útiles Republicado desde la fuente https://towardsdatascience.com/master-data-transformation-in-pandas-with-these-tres-useful-techniques-20699f03e51d?source=rss—-7f60cf5620c9— 4 a través de https://towardsdatascience.com/feed
<!–
->
- Bitcoin
- bizbuildermike
- blockchain
- cumplimiento de blockchain
- conferencia de la cadena de bloque
- Consultores Blockchain
- coinbase
- Coingenius
- Consenso
- conferencia criptográfica
- minería criptográfica
- criptomoneda
- Descentralizado
- DeFi
- Acciones digitales
- Etereum
- máquina de aprendizaje
- token no fungible
- Platón
- platón ai
- Inteligencia de datos de Platón
- platoblockchain
- PlatónDatos
- juego de platos
- Polígono
- prueba de participación
- W3
- zephyrnet