Нечисловые символы — это все, кроме цифр, например буквы, знаки препинания, символы или пробелы. Удаление нечисловых символов в Pandas может оказаться полезным при очистке данных и подготовке данных для дополнительной обработки или анализа в Python.
Мы можем использовать основные методы Python, такие как replace(), Extract(), лямбда-функция, регулярное выражение и т. д., чтобы удалить все нечисловые символы из столбца фрейма данных в Python Pandas.
- Используя метод series.str.extract()
- С помощью метода re.sub() и apply()
- С помощью лямбда-функции
- С помощью функции pd.to_numeric
- Заключение
Используя метод 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 результат отображается на снимке экрана ниже.
Примечание. Мы можем использовать 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.
С помощью лямбда-функции
Лямбда-функция — это однострочная функция в 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.
Заключение
Каждый из упомянутых выше методов, например series.str.extract(), re.sub() с функцией Apply, лямбда-функцией и функцией pd.to_numeric() для удаления всех нечисловых символов в кадре данных Pandas в Python.