Заменить значения в кадре данных Pandas с помощью регулярного выражения

Опубликовано: 27 Марта, 2022

При работе с большими наборами данных он часто содержит текстовые данные, и во многих случаях эти тексты совсем некрасивы. Часто это очень запутанная форма, и нам нужно очистить эти данные, прежде чем мы сможем сделать что-нибудь значимое с этими текстовыми данными. В основном текстовый корпус настолько велик, что мы не можем вручную перечислить все тексты, которые мы хотим заменить. Поэтому в этих случаях мы используем регулярные выражения для работы с такими данными, имеющими в себе некоторый шаблон.

В предыдущей статье мы уже обсуждали, как заменить некоторые известные строковые значения в фрейме данных. В этом посте мы будем использовать регулярные выражения для замены строк, которые имеют некоторый шаблон.

Проблема №1: вам предоставляется фрейм данных, который содержит подробную информацию о различных событиях в разных городах. Для тех городов, которые начинаются с ключевого слова «Новый» или «новый», измените его на «Новый_».

Solution : We are going to use regular expression to detect such names and then we will use Dataframe.replace() function to replace those names.

# 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)

Выход :

Now we will write the regular expression to match the string and then we will use Dataframe.replace() function to replace those names.

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

Выход :

Как видно из выходных данных, старые строки были успешно заменены новыми.

Проблема № 2: Вам предоставляется фрейм данных, который содержит подробную информацию о различных событиях в разных городах. Названия некоторых городов содержат некоторые дополнительные детали, заключенные в скобки. Найдите такие имена и удалите лишние детали.

Solution : For this task, we will write our own customized function using regular expression to identify and update the names of those cities. Additionally, We will use Dataframe.apply() function to apply our customized function on each values the column.

# 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)

Выход :

Now we will write our own customized function to match the description in the names of the cities.

# 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)

Выход :

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.