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