• Автор записи:
  • Рубрика записи:Pandas
  • Время чтения:3 минут чтения
  • Комментарии к записи:0 комментариев

Нечисловые символы — это все, кроме цифр, например буквы, знаки препинания, символы или пробелы. Удаление нечисловых символов в Pandas может оказаться полезным при очистке данных и подготовке данных для дополнительной обработки или анализа в Python.

Мы можем использовать основные методы Python, такие как replace(), Extract(), лямбда-функция, регулярное выражение и т. д., чтобы удалить все нечисловые символы из столбца фрейма данных в Python Pandas.

Содержание

Используя метод series.str.extract()

Метод series.str.extract() используется для извлечения подстрок из серии в библиотеке Python Pandas.

Здесь мы создаем фрейм данных в Python и хотим удалить нечисловые символы в Pandas. Мы можем использовать метод str.extract(), предоставив шаблон регулярного выражения.

Пример:

import pandas as pd 
 
Cities = { 
    'Name': ['New York', 'California', 'Texas', 'Florida', 'Illinois'], 
    'Zipcode': ['NY10001', 'CA90210', 'TX77001', 'FL33101', 'IL60601'] 
} 
Cities_df = pd.DataFrame(Cities) 
Cities_df['Zipcode'] = Cities_df['Zipcode'].str.extract('(\d+)') 
print(Cities_df)

Здесь мы извлекаем числовые символы из столбца кадра данных Python Pandas.

\d — это класс сокращенных символов, используемый только для сопоставления чисел. Это то же самое, что мы используем регулярное выражение как [0-9] в Python, а + позволяет нам сопоставлять одно или несколько указанных выражений в Python.

Cities_df['Zipcode'].str.extract('(\d+)')

Выход:

         Name Zipcode 
0    New York   10001 
1  California   90210 
2       Texas   77001 
3     Florida   33101 
4    Illinois   60601

После выполнения кода в Pycharm результат отображается на снимке экрана ниже.

Используя метод series.str.extract()

Примечание. Мы можем использовать astype() для приведения объекта Pandas к указанному типу данных, чтобы мы могли преобразовать тип столбца после удаления нечисловых символов в int в Python.

С помощью метода re.sub() и apply()

Мы можем использовать функцию re.sub() из модуля re и метод apply() для удаления нечисловых символов из Pandas в Python.

Функция re.sub() извлекает цифры из столбца набора данных Pandas.

Пример:

import pandas as pd 
import re 
def remove_non_numberics(s): 
    return re.sub('[^0-9]+', '', s) 
 
Employee = { 
    'Name': ['Chandler', 'Monica', 'Rachel', 'Joey', 'Ross'], 
    'Zipcode': ['NY10001', 'CA90210', 'TX77001', 'FL33101', 'IL60601'] 
} 
Employee_df = pd.DataFrame(Employee) 
Employee_df['Zipcode'] = Employee_df['Zipcode'].apply(remove_non_numberics) 
print(Employee_df)

Вывод: функция re.sub() в Python принимает три аргумента: первый — это шаблон, который нужно заменить, второй — строка, которой он будет заменен, а третий — строка, в которой был использован re.sub().

re.sub('[^0-9]+', '', s)
       Name Zipcode 
0  Chandler   10001 
1    Monica   90210 
2    Rachel   77001 
3      Joey   33101 
4      Ross   60601

На снимке экрана ниже представлен вывод после успешной реализации кода в редакторе Pycharm.

С помощью метода re.sub() и apply()

С помощью лямбда-функции

Лямбда-функция — это однострочная функция в Python, которую мы можем комбинировать с различными функциями.

В Python мы можем использовать оператор if с методом isdigit(), чтобы проверить, является ли символ цифрой. Мы можем объединить символы, если они являются цифрами, используя метод .join().

Мы будем использовать метод map() для сопоставления новых значений, возвращаемых лямбда-функцией, со старыми значениями столбца в кадре данных.

Вот пример удаления всех нечисловых символов в Pandas:

import pandas as pd 
 
Employee = { 
    'Name': ['Chandler', 'Monica', 'Rachel'], 
    'Phone_number': ['(123) 456-7890', '(555) 987-6543', '(111) 222-3333'] 
} 
Employee_df = pd.DataFrame(Employee) 
Employee_df['Phone_number'] = Employee_df['Phone_number'].map(lambda i: ''.join([x for x in i if x.isdigit()])) 
print(Employee_df)

Выход:

       Name Phone_number 
0  Chandler   1234567890 
1    Monica   5559876543 
2    Rachel   1112223333

На снимке экрана ниже показан вывод после выполнения кода редактора Pycharm.

С помощью лямбда-функции

С помощью функции pd.to_numeric

Функция pd.to_numeric из Python Pandas может преобразовывать данные строкового типа или типа объекта в числовые типы, возвращая NaN, если преобразование невозможно. Затем мы можем использовать метод dropna для фильтрации строк, содержащих NaN.

Вот пример удаления нечисловых символов из столбца в кадре данных Pandas в Python:

import pandas as pd 
 
Sales_report = pd.DataFrame({ 
    "Products": ["Kitkat", "Bounty", "Twix", "Mars", "Lindit"], 
    "sales": ["150.00", "5000", "-", "1000", "10%"] 
}) 
Sales_report["sales"] = pd.to_numeric(Sales_report["sales"], errors="coerce") 
Sales_report.dropna(subset=["sales"], inplace=True) 
print(Sales_report)

Выход:

  Products   sales 
0   Kitkat   150.0 
1   Bounty  5000.0 
3     Mars  1000.0

На снимке экрана ниже показан вывод после реализации кода в редакторе Pycharm.

С помощью функции pd.to_numeric

Заключение

Каждый из упомянутых выше методов, например series.str.extract(), re.sub() с функцией Apply, лямбда-функцией и функцией pd.to_numeric() для удаления всех нечисловых символов в кадре данных Pandas в Python.

Добавить комментарий