No tienes acceso a esta clase

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

Filtrado por condiciones

16/24
Recursos

Funciona por l贸gica booleana y retorna los valores que est谩n en 鈥淭rue鈥. Es muy 煤til porque en ocasiones queremos filtrar o separar datos.

  • Llamamos los datos de un archivo csv para manejarlos
df_books = pd.read_csv('bestsellers-with-categories.csv')
df_books.head(2) ---> #muestra los primeros dos registros del dataFrame 
  • Mostrar datos que sean mayores a cierto valor
mayor2016 = df_books['Year'] > 2016
mayor2016
---> #muestra el dataFrame con valores booleanos. True para libros publicados desde el 2017
  • Filtrar datos en nuestro DataFrame que sean mayores a cierto valor
df_books[mayor2016]
---> #filtra los datos que cumplen con la condicion
  • Tambi茅n se puede colocar la condici贸n directamente como par谩metro
df_books[df_books['Year'] > 2016]
---> #filtra los datos que cumplen con la condicion
  • Mostrar los datos que sean igual a cierto valor
genreFiction = df_books['Genre'] == 'Fiction'
genreFiction ---> #muestra el dataFrame con valores booleanos. True para libros de tipo Fiction
  • Filtrado con varias condiciones
df_books[genreFiction & mayor2016]
---> #Filtra los libros que sean de tipo Fiction y que hayan sido publicado desde 2017
  • Filtrado con negaci贸n
df_books[~mayor2016]
---> #Filtra los libros publicados antes o igual al 2016

Contribuci贸n creada por: Edward Giraldo.

Aportes 41

Preguntas 4

Ordenar por:

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

o inicia sesi贸n.

Aqu铆 dejo un peque帽o aporte, me dio curiosidad por c贸mo podr铆a filtrarse una columa de texto. Comparto la soluci贸n.

Si queremos colocar varias condiciones sin expresarla anteriormente, debemos colocarlas separadas en par茅ntesis:

df_books[(df_books['Year'] > 2016) & (df_books['Genre'] == 'Fiction')]

Wow Carlos esto es muy util, te felicito por el curso va todo excelente hasta el momento, explicas con casos practicos y muy buen contenido, puedo ver muchas veces tus clases y aportan mucho

De los creadores de 鈥渉ice un Delete sin un Where鈥, les presento 鈥渆scrib铆 = en lugar de ==鈥 馃槱鈥嬸煉斺嬸煠b

Estoy empezando a pensar que NumPy y Pandas son Excel con ESTEROIDES

Excelente curso de momento de mis favoritos en el Data Science

Filtrado por condiciones

Llamamos los datos de un archivo csv para manejarlos

import pandas as pd
df_books = pd.read_csv('bestsellers-with-categories.csv', sep=',', header=0)
df_books.head(2) ---> #muestra los primeros dos registros del dataFrame 
  • Mostrar datos que sean mayores a cierto valor
mayor2016 = df_books['Year'] > 2016
mayor2016
---> #muestra el dataFrame con valores booleanos. True para libros publicados desde el 2017
  • Filtrar datos que sean mayores a cierto valor
df_books[mayor2016]
---> #filtra los datos que cumplen con la condicion
  • Tambien se puede colocar la condicion directamente como parametro
df_books[df_books['Year'] > 2016]
---> #filtra los datos que cumplen con la condicion
  • Mostrar los datos que sean igual a cierto valor
genreFiction = df_books['Genre'] == 'Fiction'
genreFiction ---> #muestra el dataFrame con valores booleanos. True para libros de tipo Fiction
  • filtrado con varias condiciones
df_books[genreFiction & mayor2016]
---> #Filtra aquellos libros que sean de tipo Fiction y que hayan sido publicado desde 2017
  • Filtrado con negacion
df_books[~mayor2016]
---> #Filtra aquellos libros publicado antes de 2017

S铆mbolos de condicionales con Pandas y NumPay

La 鈥渧铆rgula鈥 sale con ALT + 126 ~~~~
Paso la data para que no se pasen dos horas googleando 馃槈

Lo del filtrado negativo me parece super 煤til, llevo 1 a帽o en Pandas y NO lo conoc铆a, super pr谩ctico este curso

Para filtrar con m谩s de dos valores num茅ricos en una columna pueden usar:

df_books[df_books['Year'].isin([2016,2017])]

Adem谩s pueden usar filtros en m谩s de una columna:

df_books[df_books['Year'].isin([2016,2017]) & (df_books['User Rating'] > 4.7) & df_books['Name'].str.contains("Harry Potter")]

Mis apuntes #17 (Notion + Notas de Cornell)

Tambi茅n pueden usar esta funcionalidad

Tambi茅n se puede generar un filtrado del dataframe seg煤n las etiquetas de los INDEX por medio del m茅todo FILTER.
Cuando los INDEX son palabras: el m茅todo FILTER nos permite filtrar seg煤n un grupo de caracteres que contiene la palabra INDEX (argumento LIKE) 贸 usar expresiones regulares.
FUENTE: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.filter.html

Lo que veo es que todos los que dan clases est谩n bien chavitos, me recuerdan cuando yo comenc茅 a dar clases y a los 21 me ve铆an y dec铆an: Este chavito que me va a ende帽ar??!! Felicitaciones Carlos, eres un excelente profesor.

Notas:

  • El s铆mbolo que va encima de la 帽 en espa帽ol se llama virgulilla
  • Si nuestro teclado es diferente al espa帽ol o no nos sale la virgulilla presionando las teclas <ALT Gr> + 4, podemos utilizar las siguientes combinaciones de teclas.
  • En Windows (si no es teclado espa帽ol) se hace con la combinaci贸n de las teclas <Alt> + 126
  • En Linux (si no es teclado espa帽ol) se hace con la combinaci贸n de las teclas <Alt> + 帽, si es teclado espa帽ol igual que en windows
  • En Mac (si es teclado espa帽ol) se hace con la combinaci贸n de las teclas <Alt> + 帽, sino se debe colocar manualmente el s铆mbolo, a trav茅s de la paleta de caracteres

Aqui les dejo mi notebook de la clase en mi Github igual pueden checar los de las clases anteriores.

enlace: https://github.com/JairGF05/filtrado_condiciones_pandas/blob/main/filtrado_condiciones_pandas.ipynb

Muy buenos d铆as. Quisiera hacer el aporte para los que est茅n itneresados en c贸mo hacer filtros con m煤ltiples condiciones. Este es el enlace

https://datascienceparichay.com/article/pandas-filter-dataframe-for-multiple-conditions/

Informaci贸n resumida de esta clase
#EstudiantesDePlatzi

  • Pandas tambi茅n nos permite filtrar por condiciones

  • Puedo crear una condici贸n y luego decirle a mi DataFrame que me muestre los datos cumpliendo esta condici贸n

  • Puedo filtrar por dos o m谩s condiciones utilizando este car谩cter &

  • En pandas con este car谩cter ~ puedo negar una condici贸n

La Champions 2022 - Que grande es el maestro Karim

Quise trabajar la tabla de la ultima competici贸n donde se corono con la 14 el RM. Y filtr茅 los equipos que ten铆an mayor cantidad de partidos ganados PG vs partidos perdidos PP

import pandas as pd

todas = pd.read_html('https://es.wikipedia.org/wiki/Liga_de_Campeones_de_la_UEFA_2021-22')
tabla_puntos = todas[57]
condicion1 = tabla_puntos['PG'] > tabla_puntos['PP']
tabla_puntos[condicion1]

Bonus: Tabla de goleadores

tabla_goleadores = todas[52]
tabla_goleadores[:1]

Dejo mi aporte 馃槃
Utilic茅 un DataFrame de Kaggle el cual se ve de esta manera:

Para filtrar el DataFrame por 鈥楶os鈥 == 1 y 鈥楶ts鈥 > 86, Equipos que hayan sido campeones con m谩s de 87 puntos

De la siguiente manera:

Obteniendo lo siguiente:

El resultado fue el esperado, conclu铆mos que 煤nicamente 15 equipos lograron ser campeones de la Premier League con 87 o m谩s puntos desde la temporada 2000-01 hasta la actual.

Utilic茅 iloc para mostrar 煤nicamente las columnas que nos interesaba, posic贸n, nombre del equipo y puntos.

Excelente clase, el profe sabe como darse a entender y fue de mucha importancia este tema

Muy buena clase. Justamente hoy ten铆a la duda de como negar una condici贸n.

16. Filtrado por condiciones

import pandas as pd

df_books = pd.read_csv('/content/bestsellers-with-categories_e591527f-ae45-4fa5-b0d1-d50142128fa6.csv')
df_books.head(2)

m16 = df_books['Year'] > 2016 # Devuelve la condici贸n en una l贸gica booleana

df_books[m16] 

fiction=df_books['Genre'] == 'Fiction'

df_books[fiction & m16]

df_books[~m16] # Niega la condici贸n

Woooowwwww

Tambien se puede filtrar de esta manera:

df_books[mayor_a_2016 | genre_fiction]

Tambi茅n se puede usar .loc(), ya que esta soporta filtrados mas espec铆ficos

menores_2016 = df_books.loc[(df_books['Year'] < 2016) & (df_books['Genre'] == 'Fiction')] 

Les comparto lo que tuve que hacer para poder comparar los n煤meros con el a帽o 2016 y seguir con el video

import pandas as pd

df_books = pd.read_csv('bestsellers-with-categories_e591527f-ae45-4fa5-b0d1-d50142128fa6.csv', sep=',', header=0)
df_books = df_books.dropna()
df_books['Year'] = df_books['Year'].astype('int64')

older_than = df_books['Year'] > 2016
print(older_than)

df_books[(df_books[鈥淵ear鈥漖>2016) & (df_books[鈥淎uthor鈥漖==鈥淛en Sincero鈥)] #Siempre se coloca par茅ntesis en un condition con &

<code> 

Filtrado muy interesante con condicionales que devuelven True o False, y la negaci贸n con ~.

Curioso que en casi todos los lenguajes de programaci贸n es com煤n usar ! para negar un valor booleano y en pandas usamos ~.

Filtrado de condiciones
Pandas nos permite filtrar los datos de manera muy similar a NumPy:

filtered_df = df[condicion]

Nota:

  • Podemos negar una condicion (o m谩scara) con el s铆mbolo ~
import pandas as pd
df_books =pd.read_csv("C:/Users/celio/OneDrive/Escritorio/programar/python/ManipulacionDeDatosPlazy/bestsellers-with-categories_e591527f-ae45-4fa5-b0d1-d50142128fa6.csv",sep=',', header = 0)
df_books.head(2)
mayor_a_2016 = df_books['Year'] > 2016
df_books[df_books['Year'] > 2016]
genre_fiction = df_books['Genre']=='Fiction'
df_books[genre_fiction & mayor_a_2016]
df_books[~mayor_a_2016]

notas clase

Filtrado por condiciones
Funciona por l贸gica booleana y retorna los valores que est谩n en 鈥淭rue鈥. Es muy 煤til porque en ocasiones queremos filtrar o separar datos.
Llamamos los datos de un archivo csv para manejarlos
________________________________________
[1]
0 s
import pandas as pd
________________________________________
[9]
0 s
df_books = pd.read_csv("/content/bestsellers-with-categories_.csv",sep=",",header=0)
df_books.head(10)
________________________________________
[10]
0 s
df_books["Year"] > 2016
#como en numpy me arrojara las condiciones en una logica booliana, si cumple con la 
#condicion o no y asi mismo se trabaja en numpy. Como sabemos pandas esta escrito 
#sobre NumPy 
0      False
1      False
2       True
3       True
4       True
       ...  
545     True
546    False
547     True
548     True
549     True
Name: Year, Length: 550, dtype: bool
________________________________________
[12]
1 s
mayor_a_2016 = df_books["Year"] > 2016
#aca esta evaluando cuales de estas condiciones se cumplen a que sean mayores a 2016
________________________________________
[13]
df_books[mayor_a_2016]
#por dentro esto est谩 manejando una l贸gica booleana 
________________________________________
[14]
df_books[df_books["Year"] > 2016]
#aca lo definimos sin tener que definir una variable  
________________________________________
[17]
0 s
genre_fiction = df_books["Genre"] == "Fiction"
#tambien podemos traer uana logica, boliana solo para un tipo de dato en especifico 
#aca estamos filtrando solo el genero Ficci贸n
________________________________________
[18]
df_books[genre_fiction & mayor_a_2016]
#aca puedo unir dos funciones y me treran los datos especificados en cada una de ellas de mi data frem
________________________________________
[19]
0 s
df_books[~mayor_a_2016]
#en esta funcion estamos filtrando solo los libros mayores a 2016, 
#si quiero los datos con los libros menores o iguales a 2016 no es necesario crear otra funcion
#a esta misma funcion le agregamos el simbolo (~), negara la funcion, y nos traera estos datos 
________________________________________
la condici贸n por filtrado en pandas es muy sencilla, es igual que en NumPy, con la l贸gica booleana dentro del datafrem para que sepa que retornar y que no, los valores que est谩n en true. esto es muy 煤til cuando queremos separar datos espec铆ficos de mi datafrem para las diferentes aplicaciones en la ciencia de datos o quiero ciertas caracter铆sticas especificas


Mi resumen de la clase:

#Filtering by conditions
df_books_csv= pd.read_csv('D:/programming/platzi/codes/bestsellers-with-categories.csv')
print(df_books_csv.head(5))

mayor2016= df_books_csv['Year'] > 2016
print(mayor2016)

#condition as parameter
mayor_a_2016= df_books_csv[df_books_csv['Year'] > 2016]
print(mayor_a_2016)

#condition exactly
genre_fiction= df_books_csv[df_books_csv['Genre'] == 'Fiction']
print(genre_fiction)

#several conditions
several_conditions= df_books_csv[(df_books_csv['Genre'] == 'Fiction') & (df_books_csv['Year'] > 2016)]
print(several_conditions)

#negative condition
menor_a_2016= df_books_csv[~(df_books_csv['Year'] > 2016)]
print(menor_a_2016)

#filtering by columns
data_column= df_books_csv[df_books_csv['Author'].str.contains('Palacio')]
print(data_column)

A mi me gusta practicar directo con los ds de donde trabajo para hacerlo m谩s practico todav铆a. Ah铆, para quien entienda.

df[(df['WERKS'] == 'F077') & (df['AGE_INV'] >=100)]

Tener muy claro lo que hay que filtrar para una buena limpieza de datos

Al igual que los dem谩s compa帽eros, felicitar much铆simo al profesor.
Gran curso sin duda alguna, he aprendido mucho, paso por paso y de forma clara.

Si tienen alg煤n problema al momento de filtrar , pueden cambiar el tipo de dato de las columnas de esta manera:

types = {'user_rating':'float','reviews':'float','price':'int', 'year':'int'}
df_best = df_best.astype(types)

Genial esta clase! Super 煤til!!

Aportes que saque de esta clase 馃挕

馃憞馃徎 Para pasar de los datos booleanos podr铆amos concatenar 2 filtros y nos genera una tabla ya filtrada



鈿 鉃 Si quieren filtrar por negaciones no se usa != 馃槂 se usa 鈥 ~ 鈥

Mi ejemplo