Reemplace valores en el marco de datos de Pandas usando expresiones regulares

Mientras trabaja con grandes conjuntos de datos, a menudo contiene datos de texto y, en muchos casos, esos textos no son bonitos en absoluto. A menudo está en una forma muy desordenada y necesitamos limpiar esos datos antes de que podamos hacer algo significativo con esos datos de texto. En general, el corpus de texto es tan grande que no podemos enumerar manualmente todos los textos que queremos reemplazar. Entonces, en esos casos, usamos expresiones regulares para tratar con dichos datos que tienen algún patrón.

Ya hemos discutido en el artículo anterior cómo reemplazar algunos valores de string conocidos en el marco de datos . En esta publicación, usaremos expresiones regulares para reemplazar strings que tienen algún patrón.

Problema n.° 1: recibe un marco de datos que contiene detalles sobre varios eventos en diferentes ciudades. Para aquellas ciudades que comienzan con la palabra clave ‘Nueva’ o ‘nueva’, cámbiela a ‘Nueva_’.

Solución: vamos a usar la expresión regular para detectar dichos nombres y luego usaremos Dataframe.replace()la función para reemplazar esos nombres.

# importing pandas as pd
import pandas as pd
  
# Let's create a Dataframe
df = pd.DataFrame({'City':['New York', 'Parague', 'New Delhi', 'Venice', 'new Orleans'],
                    'Event':['Music', 'Poetry', 'Theatre', 'Comedy', 'Tech_Summit'],
                    'Cost':[10000, 5000, 15000, 2000, 12000]})
  
# Let's create the index
index_ = [pd.Period('02-2018'), pd.Period('04-2018'),
          pd.Period('06-2018'), pd.Period('10-2018'), pd.Period('12-2018')]
  
# Set the index
df.index = index_
  
# Let's print the dataframe
print(df)

Producción :

Ahora escribiremos la expresión regular para que coincida con la string y luego usaremos Dataframe.replace()la función para reemplazar esos nombres.

# replace the matching strings
df_updated = df.replace(to_replace ='[nN]ew', value = 'New_', regex = True)
  
# Print the updated dataframe
print(df_updated)

Salida:

como podemos ver en la salida, las strings antiguas se han reemplazado con las nuevas con éxito.
 
Problema n.º 2: recibe un marco de datos que contiene los detalles sobre varios eventos en diferentes ciudades. Los nombres de ciertas ciudades contienen algunos detalles adicionales encerrados entre paréntesis. Busque dichos nombres y elimine los detalles adicionales.

Solución: para esta tarea, escribiremos nuestra propia función personalizada utilizando expresiones regulares para identificar y actualizar los nombres de esas ciudades. Además, usaremos Dataframe.apply()la función para aplicar nuestra función personalizada en cada valor de la columna.

# importing pandas as pd
import pandas as pd
  
# Let's create a Dataframe
df = pd.DataFrame({'City':['New York (City)', 'Parague', 'New Delhi (Delhi)', 'Venice', 'new Orleans'],
                    'Event':['Music', 'Poetry', 'Theatre', 'Comedy', 'Tech_Summit'],
                    'Cost':[10000, 5000, 15000, 2000, 12000]})
  
  
# Let's create the index
index_ = [pd.Period('02-2018'), pd.Period('04-2018'),
          pd.Period('06-2018'), pd.Period('10-2018'), pd.Period('12-2018')]
  
# Set the index
df.index = index_
  
# Let's print the dataframe
print(df)

Producción :

Ahora escribiremos nuestra propia función personalizada para que coincida con la descripción en los nombres de las ciudades.

# Importing re package for using regular expressions
import re
  
# Function to clean the names
def Clean_names(City_name):
    # Search for opening bracket in the name followed by
    # any characters repeated any number of times
    if re.search('\(.*', City_name):
  
        # Extract the position of beginning of pattern
        pos = re.search('\(.*', City_name).start()
  
        # return the cleaned name
        return City_name[:pos]
  
    else:
        # if clean up needed return the same name
        return City_name
          
# Updated the city columns
df['City'] = df['City'].apply(Clean_names)
  
# Print the updated dataframe
print(df)

Producción :

Publicación traducida automáticamente

Artículo escrito por Shubham__Ranjan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *