Заполнение пропущенных значений в pandas | Метод fillna
Метод fillna() в библиотеке pandas предназначен для заполнения пропущенных значений (NaN) в объекте DataFrame или Series. Этот метод дает возможность замены NaN на другие значения, такие как скалярные значения, словари или другие структуры данных.
При работе с данными может возникнуть ситуация, когда в исходной таблице или серии имеются пропущенные значения. Это может быть вызвано ошибками ввода данных, аномальными значениями или другими причинами. Заполнение пропущенных значений наиболее подходящим образом важно для обеспечения достоверности и точности анализа данных.
Применение метода fillna() может значительно упростить этот процесс и предоставить пользователю гибкость в выборе подходящего способа заполнения. Вот несколько примеров кода, демонстрирующих использование fillna() в различных сценариях.
1. Заполнение всех пропущенных значений в DataFrame константным значением:
import pandas as pd
data = {'A': [1, 2, None, 4, 5],
'B': [None, 6, 7, 8, None],
'C': [9, None, 11, None, 13]}
df = pd.DataFrame(data)
filled_df = df.fillna(0)
print(filled_df)
Output:
A B C 0 1.0 0.0 9.0 1 2.0 6.0 0.0 2 0.0 7.0 11.0 3 4.0 8.0 0.0 4 5.0 0.0 13.0
2. Заполнение пропущенных значений в DataFrame средним значением столбца:
import pandas as pd
data = {'A': [1, 2, None, 4, 5],
'B': [None, 6, 7, 8, None],
'C': [9, None, 11, None, 13]}
df = pd.DataFrame(data)
mean_values = df.mean()
filled_df = df.fillna(mean_values)
print(filled_df)
Output:
A B C 0 1.0 7.0 9.0 1 2.0 6.0 10.7 2 3.0 7.0 11.0 3 4.0 8.0 10.7 4 5.0 7.0 13.0
3. Заполнение пропущенных значений в DataFrame сразу несколькими значениями:
import pandas as pd
data = {'A': [1, 2, None, 4, 5],
'B': [None, 6, 7, 8, None],
'C': [9, None, 11, None, 13]}
df = pd.DataFrame(data)
values = {'A': 0, 'B': -1, 'C': 'missing'}
filled_df = df.fillna(values)
print(filled_df)
Output:
A B C 0 1 -1 9 1 2 6 missing 2 0 7 11 3 4 8 missing 4 5 -1 13
4. Заполнение пропущенных значений в серии средним значением:
import pandas as pd
import numpy as np
series = pd.Series([1, 2, np.nan, 4, 5])
mean_value = series.mean()
filled_series = series.fillna(mean_value)
print(filled_series)
Output:
0 1.0 1 2.0 2 3.0 3 4.0 4 5.0 dtype: float64
5. Заполнение пропущенных значений в серии ближайшим к ним значением вперед или назад:
import pandas as pd
series = pd.Series([1, 2, None, None, 5])
filled_series_forward = series.fillna(method='ffill')
filled_series_backward = series.fillna(method='bfill')
print(filled_series_forward)
print(filled_series_backward)
Output:
0 1.0 1 2.0 2 2.0 3 2.0 4 5.0 dtype: float64 0 1.0 1 2.0 2 5.0 3 5.0 4 5.0 dtype: float64
Это только небольшая часть возможностей метода fillna(). Различные параметры, такие как limit, axis и inplace, позволяют дополнительно настраивать его поведение в соответствии с требованиями пользователей. Рекомендуется обращаться к официальной документации pandas для полного ознакомления с возможностями и вариантами использования метода fillna().