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.
Librerías de manipulación de datos con Python
¿Por qué NumPy y Pandas?
NumPy
NumPy Array
Tipos de datos
Dimensiones
Creando arrays
Shape y Reshape
Funciones principales de NumPy
Copy
Condiciones
Operaciones
Quiz: NumPy
Pandas
Series y DataFrames en Pandas
Leer archivos CSV y JSON con Pandas
Filtrado con loc y iloc
Agregar o eliminar datos con Pandas
Manejo de datos nulos
Filtrado por condiciones
Funciones principales de Pandas
groupby
Combinando DataFrames
Merge y Concat
Join
Pivot y Melt
Apply
Quiz: Pandas
Cierre
Posibilidades con Pandas y NumPy
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Apply
Es un comando muy poderoso que nos deja aplicar funciones a nuestro DataFrame
import pandas as pd
df_books = pd.read_csv('/work/DataFrames/bestsellers-with-categories.csv')
df_books.head(2)
def two_times(value):
return value * 2
User Rating
df_books['User Rating'].apply(two_times)
---> Se multiplica por 2 todos los valores de la columna
df_books['User Rating2'] =df_books['User Rating'].apply(two_times)
df_books['User Rating2'] =df_books['User Rating'].apply(lambda x: x* 3)
---> Multiplica todos los valores por 3
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
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.
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:
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
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 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.
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
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.
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.
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
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()
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?