Сообщить об ошибке.

Методы .nsmallest() и .nlargest() объектов Series/DataFrame в pandas

Первые n строк с наименьшими/наибольшими значениями в порядке возрастания/убывания

Материал рассматривает методы .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