Как получить максимальный элемент Pandas DataFrame. Строки, столбцы.

DataFrame – это структура данных, представляющая особый вид двумерного массива, построенного поверх нескольких объектов Series. Это центральные структуры данных Pandas – чрезвычайно популярной и мощной платформы анализа данных для Python.

DataFram’ы имеют возможность присваивать имена строкам и/или столбцам и в некотором смысле представляют собой таблицы.

Давайте импортируем Pandas и создадим DataFrame из словаря:

import pandas as pd

df_data = {
    "column1": [24, 9, 20, 24],
    "column2": [17, 16, 201, 16]
}

df = pd.DataFrame(df_data) 
print(df)

У Pandas отличная интеграция с Python, и мы можем легко создавать DataFrame из словарей. df, который мы создали, теперь содержит столбцы и их соответствующие значения:

column1  column2
0       24       17
1        9       16
2       20      201
3       24       16

В каждом столбце есть список элементов, и мы можем искать максимальный элемент каждого столбца, каждой строки или всего DataFrame.

Находим максимальный элемент в столбце DataFrame

Чтобы найти максимальный элемент каждого столбца, мы вызываем метод max() класса DataFrame, который возвращает Series имен столбцов и их наибольшие значения:

max_elements = df.max()
print(max_elements)

Это даст нам максимальное значение для каждого столбца нашего df, как и ожидалось:

column1     24
column2    201
dtype: int64

Однако, чтобы найти элемент max() одного столбца, вы сначала изолируете его и вызываете метод max() для этого конкретного Series:

max_element = df['column1'].max()
print(max_element)
24

Находим максимальный элемент в строке DataFrame

Поиск максимального элемента каждой строки DataFrame также зависит от метода max(), но мы устанавливаем аргумент axis равным 1.

Значение по умолчанию для аргумента axis равно 0. Если axis равно 0, метод max() найдет максимальный элемент каждого столбца. С другой стороны, если axis равно 1, функция max() найдет максимальный элемент каждой строки.

max_elements = df.max(axis=1)
print(max_elements)

Это даст нам максимальное значение для каждой строки нашего df:

0     24
1     16
2    201
3     24
dtype: int64

Если вы хотите выполнить поиск по определенной строке, вы можете получить к ней доступ через iloc[]:

print(df)

for row in df.index:
    print(f'Max element of row {row} is:', max(df.iloc[row]))

Мы напечатали df для справки, чтобы упростить проверку результатов, и получили элемент max() каждой строки, полученный с помощью iloc[]:

column1  column2
0       24       17
1        9       16
2       20      201
3       24       16

Max element of row 0 is: 24
Max element of row 1 is: 16
Max element of row 2 is: 201
Max element of row 3 is: 24

Находим максимальный элемент во всем DataFrame

Наконец, узнаем, как найти максимальный элемент в DataFrame.

Основываясь на предыдущем опыте, это также должно быть просто. Мы просто используем встроенный метод max() и передадим ему один из двух ранее созданных списков элементов max: либо для всех строк, либо для всех столбцов. Это два аспекта одних и тех же данных, поэтому результат будет один и тот же.

Этот код должен дать нам единственное наивысшее значение во всем df:

max_by_columns = df.max()
max_by_rows = df.max(axis=1)

df_max = max(max_by_columns)
print("Max element based on the list of columns: ", df_max)

df_max2 = max(max_by_rows)
print("Max element based on the list of rows: ", df_max2)

Получим это:

Max element based on the list of columns:  201
Max element based on the list of rows:  201

Всё верно! Максимальный элемент списка максимальных элементов каждой строки должен совпадать с максимальным элементом списка максимальных элементов каждого столбца, и оба они должны совпадать с максимальным элементом всего DataFrame.

Заключение

В этом кратком руководстве мы рассмотрели, как найти максимальный элемент Pandas DataFrame для столбцов, строк и всего экземпляра DataFrame.

Ответить