No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Apply

23/24
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 25

Preguntas 6

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Algo que puede resultar 煤til al 鈥渟eleccionar鈥 una columna:

Normalmente lo hacemos as铆:

df['Name']

Pero podemos, por practicidad 鈥渟eleccionarla鈥 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 鈥榓pply鈥, 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 鈥楿ser Rating鈥

axis{0 or 鈥榠ndex鈥, 1 or 鈥榗olumns鈥檥, default 0

Axis along which the function is applied:

    0 or 鈥榠ndex鈥: apply function to each column.

    1 or 鈥榗olumns鈥: 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

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()