Filtrar filas de Pandas DataFrame por Regex

Salman Mehmood 15 febrero 2024
  1. Filtrar filas de Pandas DataFrame en Python
  2. Filtrar filas de Pandas DataFrame por Regex
  3. Filtrar filas de Pandas DataFrame por cadena
Filtrar filas de Pandas DataFrame por Regex

En este artículo, aprenderemos cómo filtrar nuestro marco de datos de Pandas con la ayuda de expresiones regulares y funciones de cadena. También aprenderemos a aplicar la función filter en un dataframe de Pandas en Python.

Filtrar filas de Pandas DataFrame en Python

En nuestro código, primero importamos pandas. Luego, importamos los pokemon_data desde un archivo CSV; los primeros 50 datos originales de Pokémon están aquí.

Vemos diversa información como el Nombre, el Tipo 1, Tipo 2, y los diferentes atributos que tienen, como ataques especiales, velocidad, etc.

import pandas as pd

POK_Data = pd.read_csv("pokemon_data.csv")
POK_Data

Filtro Pandas Dataframe - Salida 1

Hay varias opciones para filtrar el marco de datos, pero queremos filtrar las filas o mantener todos los Pokémon con una instancia. Podríamos hacer esto para un ataque por encima de 80 usando el siguiente código.

PK_Filtered_Data = POK_Data[POK_Data["Attack"] > 80]
PK_Filtered_Data

Para filtrar, usaremos corchetes. Queremos filtrar según la columna; en este caso, nuestra columna sería Ataque.

Al hacer esto, tendremos todos los datos mayores a 80. Si ejecutamos esto, podemos ver que ahora tenemos un marco de datos diferente.

Mirando la columna Ataque, veremos que ahora todos están por encima de 80. Almacenaremos el marco de datos filtrado en otra variable llamada PK_Filtered_Data.

Filtro Pandas Dataframe - Salida 2

Filtrar filas de Pandas DataFrame por Regex

También podemos hacer esto para otras columnas o combinar esto para varias columnas. Supongamos que filtramos los datos superiores a 80 en la columna Ataque y, simultáneamente, filtramos los datos Sp. Atk por encima de 100.

No necesitamos usar los corchetes. Otra opción es filtrar el marco de datos utilizando POK_Data[POK_Data.Attack>80].

También podemos filtrar el dataframe usando la función filter() y aplicar la expresión regular.

Las expresiones regulares pueden filtrar las columnas de un dataframe usando la función filter(). Especificamos las expresiones regulares usando el parámetro regex en esta función.

Pasamos un valor a regex para mantener todas las columnas que terminan con la letra e, y el símbolo del dólar significa que filtramos las columnas cuyos nombres terminan con e. Como estamos en el nivel de una columna, también debemos especificar que el eje es igual a 1.

POK_Data.filter(regex="e$", axis=1)

Devolverá el marco de datos completo, pero solo las columnas que terminan con e.

Filtro Pandas Dataframe - Salida 3

En este caso, filtramos las filas usando un Nombre que comienza con M mientras aplicamos una expresión regular.

POK_Data[POK_Data["Name"].str.contains("^M")]

Filtro Pandas Dataframe - Salida 4

Filtrar filas de Pandas DataFrame por cadena

También podemos filtrar las filas del dataframe usando expresiones regulares. El código anterior no funciona exactamente de esa manera porque necesitaríamos especificar la columna específica. Si queremos filtrar el dataframe, usaremos la función contains().

En este caso, el filtro de marco de datos se aplica en el Nombre, y dentro de la función contiene(), pasamos ur como una cadena. Estamos utilizando la función str() porque contains() es en realidad una función basada en valores de cadena aquí y POK_Data['Name'] en sí mismo es una serie de Pandas.

POK_Data[POK_Data["Name"].str.contains("ur")]

Ahora, si ejecutamos esto, vemos que solo unos pocos Pokémon contienen ur.

Filtro Pandas Dataframe - Salida 5

Código Python completo:

# In[1]:

import pandas as pd

POK_Data = pd.read_csv("pokemon_data.csv")
POK_Data

# In[ ]:

# In[2]:

# PK_Filtered_Data= POK_Data[POK_Data['Attack'] >80]
# PK_Filtered_Data

# In[3]:

# PK_Filtered_Data= POK_Data[POK_Data.Attack>80]
# PK_Filtered_Data

# In[4]:

# POK_Data.filter(regex='e$',axis=1)

# In[5]:

POK_Data[POK_Data["Name"].str.contains("^M")]

# In[6]:

POK_Data[POK_Data["Name"].str.contains("ur")]

Lea más soluciones aquí.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Artículo relacionado - Pandas Filter