Метод mode
Метод mode применяется к DataFrame
и возвращает моду для каждого столбца или строки.
Мода - это значение, которое встречается чаще всего.
Если несколько значений имеют одинаковую максимальную частоту,
то все они включаются в результат. Метод возвращает
DataFrame, где каждая строка соответствует одному
модальному значению для соответствующего столбца.
Результат всегда отсортирован по возрастанию.
Основные параметры метода:
-
axis- ось, по которой вычисляется мода:0(по умолчанию) - для столбцов,1- для строк -
numeric_only- еслиTrue, то вычисления только для числовых столбцов -
dropna- еслиTrue(по умолчанию), то пропущенные значения не учитываются
Синтаксис
df.mode([axis], [numeric_only], [dropna])
Пример
Давайте найдём моду для каждого столбца таблицы:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 2, 3, 3, 3],
'b': [10, 10, 20, 20, 30, 30]
})
print(df.mode())
Результат выполнения кода:
a b
0 3 10.0
1 3 20.0
2 3 30.0
В столбце a мода равна 3,
так как это значение встречается три раза.
В столбце b все значения встречаются
по два раза, поэтому в результате три строки.
Пример
Давайте найдём моду для каждой строки,
указав ось 1:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 2, 3],
'b': [1, 2, 3, 3]
})
print(df.mode(axis=1))
Результат выполнения кода:
0
0 1.0
1 2.0
2 2.0
3 3.0
Пример
Давайте рассмотрим работу с пропущенными значениями.
По умолчанию dropna равен True,
поэтому пропуски игнорируются:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 1, np.nan, 2, 2],
'b': [10, 10, 10, 20, 20]
})
print(df.mode())
Результат выполнения кода:
a b
0 1.0 10.0
1 2.0 20.0
В столбце a значения 1 и 2
встречаются по два раза, поэтому оба являются модой.
Пропуск был проигнорирован.
Пример
Если мы хотим включить пропуски в расчёт,
установим dropna в False:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 1, np.nan, 2, 2],
'b': [10, 10, 10, 20, 20]
})
print(df.mode(dropna=False))
Результат выполнения кода:
a b
0 1.0 10.0
1 2.0 20.0
Обратите внимание: столбец a снова выдаёт
два модальных значения, так как пропуск не влияет
на частоту встречаемости значений 1 и 2.
Пример
Давайте найдём моду только для числовых столбцов
с помощью параметра numeric_only:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 2],
'b': ['x', 'y', 'x', 'y', 'z'],
'c': [10, 10, 20, 20, 20]
})
print(df.mode(numeric_only=True))
Результат выполнения кода:
a c
0 2.0 20.0
В результат попали только числовые столбцы
a и c, столбец b
со строковыми данными был исключён.
Смотрите также
-
метод
mean,
который вычисляет среднее арифметическое -
метод
median,
который вычисляет медиану значений -
метод
value_counts,
который подсчитывает количество уникальных значений -
метод
describe,
который считает описательную статистику