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.
Просмотры: 3 863
In this article, we are going to discuss how to find the maximum value and its index position in columns and rows of a Dataframe.
Create Dataframe to Find max values & position of columns or rows
Python3
import
numpy as np
import
pandas as pd
matrix
=
[(
10
,
56
,
17
),
(np.NaN,
23
,
11
),
(
49
,
36
,
55
),
(
75
, np.NaN,
34
),
(
89
,
21
,
44
)
]
abc
=
pd.DataFrame(matrix, index
=
list
(
'abcde'
), columns
=
list
(
'xyz'
))
abc
Output:
Time complexity: O(n) where n is the number of elements in the matrix.
Auxiliary space: O(n) where n is the number of elements in the matrix.
Find maximum values in columns and rows in Pandas
Pandas dataframe.max() method finds the maximum of the values in the object and returns it. If the input is a series, the method will return a scalar which will be the maximum of the values in the series. If the input is a Dataframe, then the method will return a series with a maximum of values over the specified axis in the Dataframe. The index axis is the default axis taken by this method.
Get the maximum values of every column in Python
To find the maximum value of each column, call the max() method on the Dataframe object without taking any argument. In the output, We can see that it returned a series of maximum values where the index is the column name and values are the maxima from each column.
Python3
maxValues
=
abc.
max
()
print
(maxValues)
Output:
Get max value from a row of a Dataframe in Python
For the maximum value of each row, call the max() method on the Dataframe object with an argument axis=1. In the output, we can see that it returned a series of maximum values where the index is the row name and values are the maxima from each row.
Python3
maxValues
=
abc.
max
(axis
=
1
)
print
(maxValues)
Output:
Get the maximum values of every column without skipping NaN in Python
From the above examples, NaN values are skipped while finding the maximum values on any axis. By putting skipna=False we can include NaN values also. If any NaN value exists it will be considered as the maximum value.
Python3
maxValues
=
abc.
max
(skipna
=
False
)
print
(maxValues)
Output:
Get maximum values from multiple columns in Python
To get the maximum value of a single column see the following example
Python3
maxClm
=
df[
'x'
].
max
()
print
(
"Maximum value in column 'x': "
)
print
(maxClm)
Output:
Get max value in one or more columns
A list of columns can also be passed instead of a single column to find the maximum values of specified columns
Python3
maxValues
=
df[[
'x'
,
'z'
]].
max
()
print
(
"Maximum value in column 'x' & 'z': "
)
print
(maxValues)
Output:
Find the maximum position in columns and rows in Pandas
Pandas dataframe.idxmax() method returns the index of the first occurrence of maximum over the requested axis. While finding the index of the maximum value across any index, all NA/null values are excluded.
Find the row index which has the maximum value
It returns a series containing the column names as index and row as index labels where the maximum value exists in that column.
Python3
maxValueIndex
=
df.idxmax()
print
(
"Maximum values of columns are at row index position :"
)
print
(maxValueIndex)
Output:
Find the column name which has the maximum value
It returns a series containing the rows index labels as index and column names as values where the maximum value exists in that row.
Python3
maxValueIndex
=
df.idxmax(axis
=
1
)
print
(
"Max values of row are at following columns :"
)
print
(maxValueIndex)
Output:
Last Updated :
03 Feb, 2023
Like Article
Save Article
Hmmm…are you sure that homework doesn’t apply here? 😉 Regardless:
You need to not only split the input lines, you need to convert the text values into numbers.
So assuming you’ve read the input line into in_line, you’d do something like this:
...
row = [float(each) for each in in_line.split()]
rows.append(row) # assuming you have a list called rows
...
Once you have a list of rows, you need to get columns:
...
columns = zip(*rows)
Then you can just iterate through each row and each column calling max():
...
for each in rows:
print max(each)
for eac in columns:
print max(each)
Edit: Here’s more complete code showing how to open a file, iterate through the lines of the file, close the file, and use the above hints:
in_file = open('thefile.txt', 'r')
rows = []
for in_line in in_file:
row = [float(each) for each in in_line.split()]
rows.append(row)
in_file.close() # this'll happen at the end of the script / function / method anyhow
columns = zip(*rows)
for index, row in enumerate(rows):
print "In row %s, Max = %s, Min = %s" % (index, max(row), min(row))
for index, column in enumerate(columns):
print "In column %s, Max = %s, Min = %s" % (index, max(column), min(column))
Edit: For new-school goodness, don’t use my old, risky file handling. Use the new, safe version:
rows = []
with open('thefile.txt', 'r') as in_file:
for in_line in in_file:
row = ....
Now you’ve got a lot of assurances that you don’t accidentally do something bad like leave that file open, even if you throw an exception while reading it. Plus, you can entirely skip in_file.close()
without feeling even a little guilty.
17 авг. 2022 г.
читать 1 мин
Вы можете использовать следующие методы, чтобы вернуть строку кадра данных pandas, содержащую максимальное значение в определенном столбце:
Метод 1: вернуть строку с максимальным значением
df[df['my_column'] == df['my_column']. max ()]
Метод 2: вернуть индекс строки с максимальным значением
df['my_column']. idxmax ()
В следующих примерах показано, как использовать каждый метод на практике со следующими пандами DataFrame:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
'points': [18, 22, 19, 14, 14, 11, 28, 20],
'assists': [5, 7, 7, 9, 12, 9, 9, 4],
'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})
#view DataFrame
print(df)
team points assists rebounds
0 A 18 5 11
1 B 22 7 8
2 C 19 7 10
3 D 14 9 6
4 E 14 12 6
5 F 11 9 5
6 G 28 9 9
7 H 20 4 12
Пример 1: возвращаемая строка с максимальным значением
В следующем коде показано, как вернуть строку в DataFrame с максимальным значением в столбце точек :
#return row with max value in points column
df[df['points'] == df['points']. max ()]
team points assists rebounds
6 G 28 9 9
Максимальное значение в столбце точек равно 28 , поэтому была возвращена строка, содержащая это значение.
Пример 2: возвращаемый индекс строки с максимальным значением
В следующем коде показано, как вернуть только индекс строки с максимальным значением в столбце точек :
#return row that contains max value in points column
df['points']. idxmax ()
6
Строка в позиции индекса 6 содержала максимальное значение в столбце точек , поэтому было возвращено значение 6 .
Связанный: Как использовать функцию idxmax() в Pandas (с примерами)
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:
Как найти максимальное значение по группе в Pandas
Как найти максимальное значение столбцов в Pandas
Pandas dataframes are great for analyzing and manipulating data. In this tutorial, we will look at how to get the max value in one or more columns of a pandas dataframe with the help of some examples.
If you prefer a video tutorial over text, check out the following video detailing the steps in this tutorial –
Pandas max()
function
You can use the pandas max()
function to get the maximum value in a given column, multiple columns, or the entire dataframe. The following is the syntax:
# df is a pandas dataframe # max value in a column df['Col'].max() # max value for multiple columns df[['Col1', 'Col2']].max() # max value for each numerical column in the dataframe df.max(numeric_only=True) # max value in the entire dataframe df.max(numeric_only=True).max()
It returns the maximum value or values depending on the input and the axis (see the examples below).
Examples
Let’s look at some use-case of the pandas max()
function. First, we’ll create a sample dataframe that we will be using throughout this tutorial.
import numpy as np import pandas as pd # create a pandas dataframe df = pd.DataFrame({ 'Name': ['Neeraj Chopra', 'Jakub Vadlejch', 'Vitezslav Vesely', 'Julian Weber', 'Arshad Nadeem'], 'Country': ['India', 'Czech Republic', 'Czech Republic', 'Germany', 'Pakistan'], 'Attempt1': [87.03, 83.98, 79.79, 85.30, 82.40], 'Attempt2': [87.58, np.nan, 80.30, 77.90, np.nan], 'Attempt3': [76.79, np.nan, 85.44, 78.00, 84.62], 'Attempt4': [np.nan, 82.86, np.nan, 83.10, 82.91], 'Attempt5': [np.nan, 86.67, 84.98, 85.15, 81.98], 'Attempt6': [84.24, np.nan, np.nan, 75.72, np.nan] }) # display the dataframe df
Output:
Here we created a dataframe containing the scores of the top five performers in the men’s javelin throw event final at the Tokyo 2020 Olympics. The attempts represent the throw of the javelin in meters.
1. Max value in a single pandas column
To get the maximum value in a pandas column, use the max() function as follows. For example, let’s get the maximum value achieved in the first attempt.
# max value in Attempt1 print(df['Attempt1'].max())
Output:
87.03
We get 87.03 meters as the maximum distance thrown in the “Attemp1”
Note that you can get the index corresponding to the max value with the pandas idxmax() function. Let’s get the name of the athlete who threw the longest in the first attempt with this index.
# index corresponding max value i = df['Attempt1'].idxmax() print(i) # display the name corresponding this index print(df['Name'][i])
Output:
0 Neeraj Chopra
You can see that the max value corresponds to “Neeraj Chopra”.
2. Max value in two pandas columns
You can also get the max value of multiple pandas columns with the pandas min() function. For example, let’s find the maximum values in “Attempt1” and “Attempt2” respectively.
# get max values in columns "Attempt1" and "Attempt2" print(df[['Attempt1', 'Attempt2']].max())
Output:
Attempt1 87.03 Attempt2 87.58 dtype: float64
Here, created a subset dataframe with the columns we wanted and then applied the max() function. We get the maximum value for each of the two columns.
3. Max value for each column in the dataframe
Similarly, you can get the max value for each column in the dataframe. Apply the max function over the entire dataframe instead of a single column or a selection of columns. For example,
# get max values in each column of the dataframe print(df.max())
Output:
Name Vitezslav Vesely Country Pakistan Attempt1 87.03 Attempt2 87.58 Attempt3 85.44 Attempt4 83.1 Attempt5 86.67 Attempt6 84.24 dtype: object
We get the maximum values in each column of the dataframe df. Note that we also get max values for text columns based on their string comparisons in python.
If you only want the max values for all the numerical columns in the dataframe, pass numeric_only=True
to the max() function.
# get max values of only numerical columns print(df.max(numeric_only=True))
Output:
Attempt1 87.03 Attempt2 87.58 Attempt3 85.44 Attempt4 83.10 Attempt5 86.67 Attempt6 84.24 dtype: float64
4. Max value between two pandas columns
What if you want to get the maximum value between two columns?
You can do so by using the pandas max() function twice. For example, let’s get the maximum value considering both “Attempt1” and “Attempt2”.
# max value over two columns print(df[['Attempt1', 'Attempt2']].max().max())
Output:
87.58
We get 87.58 as the maximum distance considering the first and the second attempts together.
5. Max value in the entire dataframe
You can also get the single biggest value in the entire dataframe. For example, let’s get the biggest value in the dataframe df irrespective of the column.
# mav value over the entire dataframe print(df.max(numeric_only=True).max())
Output:
87.58
Here we apply the pandas max() function twice. First time to get the max values for each numeric column and then to get the max value among them.
For more on the pandas max() function, refer to its documentation.
With this, we come to the end of this tutorial. The code examples and results presented in this tutorial have been implemented in a Jupyter Notebook with a python (version 3.8.3) kernel having pandas version 1.0.5
Subscribe to our newsletter for more informative guides and tutorials.
We do not spam and you can opt out any time.
-
Piyush is a data professional passionate about using data to understand things better and make informed decisions. He has experience working as a Data Scientist in the consulting domain and holds an engineering degree from IIT Roorkee. His hobbies include watching cricket, reading, and working on side projects.
View all posts