No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Recursos

Apply Es un comando muy poderoso que nos deja aplicar funciones a nuestro DataFrame

  • Creamos unos DataFrame habitual
import pandas as pd
df_books = pd.read_csv('/work/DataFrames/bestsellers-with-categories.csv')
df_books.head(2)
  • Creamos nuestra función
def two_times(value):
    return value * 2
  • Lo aplicamos a la columna de User Rating
df_books['User Rating'].apply(two_times)
---> Se multiplica por 2 todos los valores de la columna
  • Podemos guardarlo en una columna nueva
df_books['User Rating2'] =df_books['User Rating'].apply(two_times)
  • Se pueden crear lambda functions
df_books['User Rating2'] =df_books['User Rating'].apply(lambda x: x* 3)
---> Multiplica todos los valores por 3
  • Apply en varias columnas con condiciones, hay que especificar a que los vamos a aplicar (filas o columnas)
df_books.apply(lambda x: x['User Rating'] * 2 if x['Genre'] == 'Fiction' else x['User Rating'], axis = 1)
---> Multiplica por 2 a los datos que cumplan la condición 

Contribución creada por: Edward Giraldo.

Aportes 30

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Algo que puede resultar útil al “seleccionar” una columna:

Normalmente lo hacemos así:

df['Name']

Pero podemos, por practicidad “seleccionarla” así:

df.Name

OJO: Esto solo es posible cuando el nombre de la columna NO tiene espacios.

Map

Dato curioso 🤓, la herramienta .map() es mas eficiente que .apply() o .transform() aplicando la función de two_times:

Les dejo este aporte, son diferentes maneas de aplicar una función en pandas:

https://medium.com/@jassielmg/6-maneras-de-aplicar-una-función-a-una-columna-con-pandas-d0a82463b0e3

Interesante ‘apply’, nos permite usar funciones directamente en el dataframe, hice un ejemplo con fechas para ver los años transcurridos desde su lanzamiento, les comparto:

Funciones con más parámetros


Puedes usar funciones que recibaan más argumentos especificando los demás argumentos en args. Por ejemplo una función que convierta el rating desde cualquier base a caulquier base sería

import pandas as pd
df_best_sellers = pd.read_csv("https://static.platzi.com/media/public/uploads/bestsellers-with-categories_e591527f-ae45-4fa5-b0d1-d50142128fa6.csv")

# Una función con parametros
def convert_rating_base(rating, current_base, new_base):
    # Convert the current rating from the curret base to the new base
    return rating*new_base/current_base

# Apply y se pasan todos los demás argumentos después del primero en args
df_best_sellers["User Rating"].apply(convert_rating_base, args=(5, 7))

Esto si es lo maximo, chao excel!!!

Otro ejemplo

Mis apuntes #24 (Notion)

Me parece interesante la definicion de Axis de la funcion apply, inicialmente pense que ibamos a usar axis=0 pero la documentacion dice lo siguiente.

  • axis = 0 : filas, significa que se aplica a cada columna
  • axis = 1 : columnas , significa que se aplica la funcion a cada fila, en nuestro ejemplo calculo la multiplicacion de cada valor de la fila de ‘User Rating’

axis{0 or ‘index’, 1 or ‘columns’}, default 0

Axis along which the function is applied:

    0 or ‘index’: apply function to each column.

    1 or ‘columns’: apply function to each row.

ver documentacion

Información resumida de esta clase
#EstudiantesDePlatzi

  • Existe una función que me permite aplicar funciones a mi DataFrame y esta función es llamada apply

  • Es recomendable utilizar funciones lambda para realizar alguna función que cambie los datos de mi DataFrame

grupo alguien que pueda ayudar con este error que me arroja.![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-02-26%20a%20las%2018.03.37-c12f390e-3e9b-44cc-87ad-49e64b593cb6.jpg)

Me encanto este recorrido de pandas y numpy. Si que aprendi bastante. Ahora solo falta dominar matplotlib y seaborn y con eso ya tendre la base de data-science.

![](https://static.platzi.com/media/user_upload/image-3d993ebd-d40f-4c40-96df-732770438e47.jpg) Hola, como estan, les recomiendo full este articulo de por que evitar usar esta funcion, a decir verdad puede ser una opcion util, pero en terminos de rendimiento no es lo mejor. <https://towardsdatascience.com/avoiding-apply-ing-yourself-in-pandas-a6ade4569b7f>
![](https://static.platzi.com/media/user_upload/image-3d993ebd-d40f-4c40-96df-732770438e47.jpg)Hola, como estan, les recomiendo full este articulo de porque evitar usar esta funcion, a decir verdad puede ser una opcion util, pero en terminos de rendimiento no es lo mejor. <https://towardsdatascience.com/avoiding-apply-ing-yourself-in-pandas-a6ade4569b7f>

Es la segunda vez que veo esta lección, creo que se me está escapando algo… porque la verdad no me queda muy claro para que es útil…

La verdad que es re util. C L E A N

Con pivot table la logica es la misma de una tabla dimanica en excel, con melt obtienes la estructura o logica cuando modificas la tabal dinamica a tabla dinamica clasica por lo menos en excel, esa fue la logica que use para entender estos conceptos

Apply seria algo así como la funcion map dentro de los DataFrames.

ok, entonces lambda en python seria como arrow function en javascript. Cool

Apply es una función extraordinaria, eficiente, y versátil, ya que de manera rápida permite aplicar una función a un DataFrame.

apply

  • Permite aplicar una funcion, a una columna o df de manera muy eficiente (mucho más que un ciclo)
col.apply(function)
df.apply(lambda x:x['col1'] if cond1 else cond2, axis = 1)
df_books['Rating_2'] = df_books.apply(lambda x :x['User Rating']* 2 if x['Genre']=='Fiction' else x['User Rating'], axis =1)

Pandas es Excel con esteroides 😎

Hay un articulo que me gusta mucho y trata sobre la diferencia entre apply y transform, si bien funcionan de manera similar, tienen algunas caracteristicas importantes que los diferencian

https://towardsdatascience.com/difference-between-apply-and-transform-in-pandas-242e5cf32705

****notas de la clase ****

Apply
Es un comando muy poderoso que nos deja aplicar funciones a nuestro DataFrame
Creamos unos DataFrame habitual
________________________________________
[2]
0 s
import pandas as pd
________________________________________
[3]
1 s
df_books = pd.read_csv("/content/bestsellers-with-categories_.csv")
df_books.head(10)
________________________________________
[5]
0 s
def two_times(value):
  return value * 4
#creamos una duncion de python que nos ayudara a visualizar que queremos 
#hacer con nuestro dataframe 
________________________________________
[6]
df_books["User Rating"].apply(two_times)
#con apply aplicamos funciones a nuetro data frame esta funcion quege 
#la columna selecionada y la aplica la funcion de python que declaramos 

#como podemos notar apply aplico la funcion en este caso a user rating de una manera muy rapida 
# y es muy eficiente mucho más que un for 
0      18.8
1      18.4
2      18.8
3      18.8
4      19.2
       ... 
545    19.6
546    18.8
547    18.8
548    18.8
549    18.8
Name: User Rating, Length: 550, dtype: float64
________________________________________
[8]
df_books["user rating_2"] = df_books ["User Rating"].apply(two_times)
#como notar se crea la nueva columna e hizo la multiplicacion de los datos y la 
#y se ejecuto en cuestion de milisegundos, estas funciones son muy eficientas 
#a la hora de aplicar cualquier función a nuestros data frame 
________________________________________
[9]
0 s
df_books
________________________________________
[10]
0 s
df_books["user rating_2"] = df_books ["User Rating"].apply(lambda x : x * 3)
#cuando hablamos que se puede aplicar cualquier tipo de funcion, hablo tambien 
#inclusive de tipo lamba
________________________________________
[12]
df_books.head()
#como podemos ver sintener que definir inclusive una funcion en memoria 
#puedo utilizar una funcion lambda, cogiendo(x = a cada valor de la columna )
#(y aplicando el siguiente operación  x * 3 a cada valor)

#asi de este modo puedo aplicar distintas funciones matematicas, consulta
#mudificacion de datos entre otras opresiones 
________________________________________
[18]
0 s
df_books.apply(lambda x : x["User Rating"] * 2 if x["Genre"] == "Fiction" else x["User Rating"],axis=1)
#si quiero utilizar distintas columnas para mis operaciones
#como ver aca estamos utilizando cetencias atravez de apply para que ejecute
#cierta operación con sentencias for 
0      4.7
1      9.2
2      4.7
3      9.4
4      4.8
      ... 
545    9.8
546    4.7
547    4.7
548    4.7
549    4.7
Length: 550, dtype: float64
________________________________________
[16]
0 s
df_books["user rating_2"]= df_books.apply(lambda x : x["User Rating"] * 2 if x["Genre"] == "Fiction" else x["User Rating"],axis=1)
 
 
________________________________________
[17]
df_books
#aca se se multiplica fiction por el valor asignado, los non fiction queda igulaes
#todo esto puedo aplicarlo a nivel de cualquier columna en una logica, ya sea en una funcion 
#establesida o lambda para evitar escribir código de mas
#estas funciones las puedo utilizar para calular, llamar un appi, para consultar datos,
#para lo que quiera en nuestro dataframe 
# la gran ventaja es que es mucho mas rapido que hacerlo en un for 
 
 
________________________________________
ya sabemos cómo aplicar funciones específicas a todo mi dataframe o a columnas especificas con apply y es muy eficiente, debido a todo el procesamiento interno que maneja numpy y pandas


Mind blow wooooooooow

¡Excelente clase! De nuevo me solvento muchas dudas que tenía respecto a .apply()