Материал рассматривает методы .nsmallest()
и .nlargest()
объектов Series
/DataFrame
, которые показывают первые n
строк с наименьшими/наибольшими значениями в порядке возрастания/убывания соответственно.
DataFrame.nsmallest
- первые n
строк с наименьшими значениями в столбцах в порядке возрастания;Series.nsmallest
- первые n
строк с наименьшими значениями в порядке возрастания;DataFrame.nlargest
- первые n
строк с наибольшими значениями в столбцах в порядке убывания;Series.nlargest
- первые n
строк с наибольшими значениями в порядке убывания.DataFrame.nsmallest(n, columns, keep='first')
:Series.nsmallest(n=5, keep='first')
:Метод DataFrame.nsmallest()
возвращает первые n строк с наименьшими значениями в столбцах columns
в порядке возрастания. Столбцы, которые не указаны, также возвращаются, но не используются для упорядочивания.
Этот метод эквивалентен DataFrame.sort_values(columns, ascending=True).head(n)
, но более производительный.
Метод Series.nsmallest()
возвращает первые n
строк с наименьшими значениями в порядке возрастания. Быстрее, чем Series.sort_values().head(n)
для малых n
относительно размера объекта Series
.
Принимаемые аргументы:
n
- Количество извлекаемых элементов.columns
- Имя или список имен столбцов для упорядочивания. Не используется в Series.nsmallest()
keep='first'
- При наличии повторяющихся значений:first
: оставить первое вхождение.last
: оставить последнее вхождение.all
: не отбрасывать дубликаты.DataFrame.nsmallest()
:>>> import pandas as pd df = pd.DataFrame({'population': [59000000, 65000000, 434000, 434000, 434000, 337000, 337000, 11300, 11300], 'GDP': [1937894, 2583560 , 12011, 4520, 12128, 17036, 182, 38, 311], 'alpha-2': ["IT", "FR", "MT", "MV", "BN", "IS", "NR", "TV", "AI"]}, index=["Italy", "France", "Malta", "Maldives", "Brunei", "Iceland", "Nauru", "Tuvalu", "Anguilla"]) >>> df # population GDP alpha-2 # Italy 59000000 1937894 IT # France 65000000 2583560 FR # Malta 434000 12011 MT # Maldives 434000 4520 MV # Brunei 434000 12128 BN # Iceland 337000 17036 IS # Nauru 337000 182 NR # Tuvalu 11300 38 TV # Anguilla 11300 311 AI
Используем DataFrame.nsmallest()
для выбора трех строк с наименьшими значениями в столбце 'population'
.
>>> df.nsmallest(3, 'population') # population GDP alpha-2 # Tuvalu 11300 38 TV # Anguilla 11300 311 AI # Iceland 337000 17036 IS
При использовании keep='last'
связи разрешаются в обратном порядке:
>>> df.nsmallest(3, 'population', keep='last') # population GDP alpha-2 # Anguilla 11300 311 AI # Tuvalu 11300 38 TV # Nauru 337000 182 NR
При использовании keep='all'
все повторяющиеся элементы сохраняются:
>>> df.nsmallest(3, 'population', keep='all') # population GDP alpha-2 # Tuvalu 11300 38 TV # Anguilla 11300 311 AI # Iceland 337000 17036 IS # Nauru 337000 182 NR
Чтобы упорядочить по наименьшим значениям в столбце 'population', а затем 'GDP', можно указать несколько столбцов
>>> df.nsmallest(3, ['population', 'GDP']) # population GDP alpha-2 # Tuvalu 11300 38 TV # Anguilla 11300 311 AI # Nauru 337000 182 NR
Series.nsmallest()
:>>> import pandas as pd countries_population = {"Italy": 59000000, "France": 65000000, "Malta": 434000, "Maldives": 434000, "Brunei": 434000, "Iceland": 337000, "Nauru": 11300, "Tuvalu": 11300, "Anguilla": 11300, "Montserrat": 5200} >>> s = pd.Series(countries_population) >>> s # Italy 59000000 # France 65000000 # Brunei 434000 # Malta 434000 # Maldives 434000 # Iceland 337000 # Nauru 11300 # Tuvalu 11300 # Anguilla 11300 # Montserrat 5200 # dtype: int64
Количество наименьших элементов по умолчанию n=5
.
>>> s.nsmallest() # Montserrat 5200 # Nauru 11300 # Tuvalu 11300 # Anguilla 11300 # Iceland 337000 # dtype: int64
Значение keep
по умолчанию - 'first'
, вывод при n=3
.
>>> s.nsmallest(3) # Montserrat 5200 # Nauru 11300 # Tuvalu 11300 # dtype: int64
Вывод при n=3
и keep='last'
>>> s.nsmallest(3, keep='last') # Montserrat 5200 # Anguilla 11300 # Tuvalu 11300 # dtype: int64
Вывод при n=3
и keep='all'
- т.е. всеми сохраненными дубликатами. Обратите внимание, что возвращаемый ряд имеет четыре элемента из-за трех дубликатов.
>>> s.nsmallest(3, keep='all') # Montserrat 5200 # Nauru 11300 # Tuvalu 11300 # Anguilla 11300 # dtype: int64
DataFrame.nlargest(n, columns, keep='first')
:Series.nlargest(n=5, keep='first')
:Метод DataFrame.nlargest()
возвращает первые n строк с наибольшими значениями в столбцах columns
в порядке убывания. Столбцы, которые не указаны, также возвращаются, но не используются для упорядочивания.
Этот метод эквивалентен DataFrame.sort_values(columns, ascending=False).head(n)
, но более производительный.
Метод Series.nlargest()
возвращает первые n
строк с наименьшими значениями в порядке возрастания. Быстрее, чем Series.sort_values(ascending=False).head(n)
для малых n
относительно размера объекта Series
.
Принимаемые аргументы:
n
- Количество извлекаемых элементов.columns
- Имя или список имен столбцов для упорядочивания. Не используется в Series.nsmallest()
keep='first'
- При наличии повторяющихся значений:first
: оставить первое вхождение.last
: оставить последнее вхождение.all
: не отбрасывать дубликаты.DataFrame.nlargest()
:>>> import pandas as pd df = pd.DataFrame({'population': [59000000, 65000000, 434000, 434000, 434000, 337000, 337000, 11300, 11300], 'GDP': [1937894, 2583560 , 12011, 4520, 12128, 17036, 182, 38, 311], 'alpha-2': ["IT", "FR", "MT", "MV", "BN", "IS", "NR", "TV", "AI"]}, index=["Italy", "France", "Malta", "Maldives", "Brunei", "Iceland", "Nauru", "Tuvalu", "Anguilla"]) >>> df # population GDP alpha-2 # Italy 59000000 1937894 IT # France 65000000 2583560 FR # Malta 434000 12011 MT # Maldives 434000 4520 MV # Brunei 434000 12128 BN # Iceland 337000 17036 IS # Nauru 11300 182 NR # Tuvalu 11300 38 TV # Anguilla 11300 311 AI
Используем DataFrame.nlargest()
для выбора трех строк с наибольшими значениями в столбце 'population'
.
>>> df.nlargest(3, 'population') # population GDP alpha-2 # France 65000000 2583560 FR # Italy 59000000 1937894 IT # Malta 434000 12011 MT
При использовании keep='last'
связи разрешаются в обратном порядке:
>>> df.nlargest(3, 'population', keep='last') # population GDP alpha-2 # France 65000000 2583560 FR # Italy 59000000 1937894 IT # Brunei 434000 12128 BN
При использовании keep='all'
все повторяющиеся элементы сохраняются:
>>> df.nlargest(3, 'population', keep='all') # population GDP alpha-2 # France 65000000 2583560 FR # Italy 59000000 1937894 IT # Malta 434000 12011 MT # Maldives 434000 4520 MV # Brunei 434000 12128 BN
Чтобы упорядочить по наименьшим значениям в столбце 'population', а затем 'GDP', можно указать несколько столбцов
>>> df.nlargest(3, ['population', 'GDP']) # population GDP alpha-2 # France 65000000 2583560 FR # Italy 59000000 1937894 IT # Brunei 434000 12128 BN
Series.nlargest()
:>>> import pandas as pd countries_population = {"Italy": 59000000, "France": 65000000, "Brunei": 434000, "Malta": 434000, "Maldives": 434000, "Iceland": 337000, "Nauru": 11300, "Tuvalu": 11300, "Anguilla": 11300, "Montserrat": 5200} >>> s = pd.Series(countries_population) >>> s # Italy 59000000 # France 65000000 # Malta 434000 # Maldives 434000 # Brunei 434000 # Iceland 337000 # Nauru 11300 # Tuvalu 11300 # Anguilla 11300 # Montserrat 5200 # dtype: int64
Количество самых больших элементов по умолчанию n=5
.
>>> s.nlargest() # France 65000000 # Italy 59000000 # Malta 434000 # Maldives 434000 # Brunei 434000 # dtype: int64
Значение keep
по умолчанию - 'first'
, вывод при n=3
.
>>> s.nlargest(3) # France 65000000 # Italy 59000000 # Malta 434000 # dtype: int64
Вывод при n=3
и keep='last'
>>> s.nlargest(3, keep='last') # France 65000000 # Italy 59000000 # Brunei 434000 # dtype: int64
Вывод при n=3
и keep='all'
- т.е. всеми сохраненными дубликатами. Обратите внимание, что возвращаемый Series
имеет пять элементов из-за трех дубликатов.
>>> s.nlargest(3, keep='all') # France 65000000 # Italy 59000000 # Malta 434000 # Maldives 434000 # Brunei 434000 # dtype: int64