You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesión a prueba de IA

Antes: $249

Currency
$209
Suscríbete

Termina en:

2 Días
5 Hrs
23 Min
19 Seg

Apply

23/24
Resources

Apply This is a very powerful command that allows us to apply functions to our DataFrame.

  • Let's create a regular DataFrame
import pandas as pd df_books = pd.read_csv('/work/DataFrames/bestsellers-with-categories.csv') df_books.head(2)
  • We create our function
def two_times(value): return value * 2
  • We apply it to the User Rating column
df_books['User Rating'].apply(two_times) ---> It multiplies by 2 all the values of the column.
  • We can save it in a new column
df_books['User Rating2'] =df_books['User Rating'].apply(two_times)
  • You can create lambda functions
df_books['User Rating2'] =df_books['User Rating'].apply(lambda x: x* 3) ---> Multiply all values by 3
  • Apply in several columns with conditions, you have to specify to which we are going to apply them (rows or columns)
df_books.apply(lambda x: x['User Rating'] * 2 if x['Genre'] == 'Fiction' else x['User Rating'], axis = 1) ---> Multiply by 2 to the data that meet the condition

Contribution created by: Edward Giraldo.

Contributions 31

Questions 6

Sort by:

Want to see more contributions, questions and answers from the community?

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

En mi caso use la columna 'Price' para calcular un descuento y luego lo mostré como una lista de precios ```js books['Discount Price'] = books['Price'].apply(lambda x: x*0.95) ``` ```js books[['Name', 'Author', 'User Rating', 'Price', 'Discount Price']] ```El resultado fue: ![](https://static.platzi.com/media/user_upload/image-6db4529f-278f-4b45-89b5-0381c1b0331d.jpg)
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()