Pandas DataFrame содержит все виды значений, включая значения NaN, и если вы хотите получить правильный вывод, вам необходимо заменить все значения NaN нулями. Интерпретатор иногда не понимает значения NaN и наш конечный выходной эффект с этими значениями NaN, поэтому мы должны преобразовать все значения NaN в нули.
- Шаги по замене nan значения с нулями в DataFrame
- Заменить значения NaN для определенного столбца
- Вывод
- Преобразовать строку Pandas DataFrame в Number
- Вывод
- Pandas df.fillna ()
- Вывод
- Замените значения NaN нулями с помощью df.replace ()
- Вывод
- Заменить значения NaN нулями во всем DataFrame
- Вывод
- Заменить нулями для всего DataFrame
- Вывод
- См. Также
Шаги по замене nan значения с нулями в DataFrame
В зависимости от вашего конкретного сценария вы можете использовать один из следующих четырех методов для замены значений NaN нулями в Pandas DataFrame.
- Заменить значения NaN для определенного столбца с помощью
- Заменить NaN нулями в одном столбце с помощью df.replace ()
- Заменить нулями для всего DataFrame, используя
- Заменить нулями для всего DataFrame с помощью
Заменить значения NaN для определенного столбца
Pandas DataFrame может быть построен из словаря Python. Итак, давайте создадим DataFrame из словаря.
# app.pyimport pandas as pddict = {'price': ['100', 'KDL100', 400, ' ADL100 ']} df = pd.DataFrame (dict) print (df)
Вывод
price0 1001 KDL1002 4003 ADL100
Значения столбца DataFrame в нашем примере — String. Числового формата нет. Кроме того, некоторые значения представляют собой комбинацию типов данных, таких как Numeric + String, например ‘ KDL100′ и ‘ ADL100′ .
Теперь мы будем использовать функцию Pandas DataFrame.to_integer () для преобразования строковых значений в числовые, и если значения похожи на комбинацию String + Number , тогда эти значения будут преобразованы в значения NaN.
Преобразовать строку Pandas DataFrame в Number
Мы можем преобразовать String в числовые значения с помощью функции df.to_integer () .
# app.pyimport pandas as pddict = {'price': ['100', 'KDL100', 400, 'ADL100']} df = pd.DataFrame (dict) df ['price'] = pd.to_numeric (df ['price'], errors = 'coerce') print (df)
Вывод
price0 100.01 NaN2 400.03 NaN
А теперь вы получите значения NaN.
Позже мы увидим, как заменить все NaN значения с нулями в Pan das DataFrame.
Наконец, чтобы заменить значения NaN нулями для столбца с помощью Pandas, вы можете использовать метод df.fillna ().
Pandas df.fillna ()
Функция DataFrame.fillna () заполняет NA/NaN значения в Pandas DataFrame. В нашем примере мы заменим значения NaN нулевыми значениями.
См. Следующий код.
# app. pyimport pandas как pddict = {'price': ['100', 'KDL100', 400, 'ADL100']} df = pd.DataFrame (dict) df ['price'] = pd.to_numeric (df ['цена' ], errors = 'coerce') df ['price'] = df ['price']. fillna (0) print (df)
Вывод
price0 100,01 0,02 400,03 0,0
Теперь вы увидите, что два предыдущих значения NaN превратились в 0.
Замените значения NaN нулями с помощью df.replace ()
Метод replace () Pandas DataFrame выполняет ту же задачу по замене значений NaN нулями с помощью свойства np.nan. Метод DataFrame replace () динамически заменяет другие значения. Это отличается от обновления с использованием .loc или .iloc , которое требует, чтобы вы указали место для обновления с некоторым значением.
Чтобы использовать numpy nan, нам нужно импортировать библиотеку numpy, а затем использовать ее внутри нашей программы.
См. Следующий код.
# app.pyimport pandas as pdimport numpy as npdict = {'price': ['100', 'KDL100', 400, 'ADL100']} df = pd.DataFrame (dict) df ['price'] = pd.to_numeric (df ['цена'] , errors = 'coerce') df ['price'] = df ['price']. replace (np.nan, 0) print (df)
Вывод
price0 100,01 0,02 400,03 0,0
Мы получили тот же результат, что и в методе df.fillna ().
Заменить значения NaN нулями во всем DataFrame
В приведенном выше примере мы создали один столбец в DataFrame. Теперь мы создадим DataFrame с несколькими столбцами и заменим значения NaN нулями в нескольких столбцах.
В приведенных выше примерах мы преобразовали значения String в значения Number для определенного столбца. В этом случае нам нужно преобразовать это для всего DataFrame. Итак, мы будем использовать функцию df.apply () для преобразования всех значений DataFrame.
Затем мы будем использовать функцию df.fillna () для замены нулями.
См. приведенный ниже код.
# app.pyimport pandas as pddict = {'price': ['100', 'KDL100', 400, 'ADL100'], 'Discount': ['50', '50% ', '30%', '20']} df = pd.DataFrame (dict) df = df.apply (pd.to_numeric, errors = 'coerce') df = df.fillna ( 0) print (df)
Вывод
цена скидки 0 100,0 50,01 0,0 0,02 400,0 0,03 0,0 20,0
На выходе мы видим, что все значения, такие как 50%, 30%, KDL100 и ADL100, преобразованы в нули.
Заменить нулями для всего DataFrame
В этом случае мы будем использовать import numpy и использовать свойство np.nan для нацеливания всех значений NaN, а затем использовать функцию df.replace () для замены значений NaN с нулями во всем DataFrame. См. Следующий код.
# app. pyimport pandas как pdimport numpy as npdict = {'price': ['100', 'KDL100', 400, 'ADL100'], 'Discount': ['50', '50% ', '30%', '20 ']} df = pd.DataFrame (dict) df = df.apply (pd.to_numeric, errors =' coerce ') df = df.replace (np.nan, 0) print (df)
Вывод
price Discount0 100,0 50,01 0,0 0,02 400,0 0,03 0,0 20,0
Вот и все. Мы рассмотрели все способы преобразования NaN в нули в DataFrame.
См. Также
Pandas DataFrame dropna ()
Итерировать столбцы в Pandas DataFrame
Pandas DataFrame assign ()
Pandas DataFrame transpose ()
Pandas Сводная таблица DataFrame