# Pandas: Подсчёт уникальных значений в объекте GroupBy

В этом руководстве вы научитесь использовать Pandas для подсчета уникальных значений в объекте groupby. Метод Pandas `.groupby()` — это важный инструмент в вашем наборе инструментов для анализа данных, позволяющий легко разделять данные на группы и выполнять различные агрегации для каждой группы.

By the end of this tutorial, you’ll have learned how to count unique values in [a Pandas groupby object](https://datagy.io/pandas-groupby/), using the incredibly useful `.nunique()` Pandas method. If you only want to find unique values, check out how to use [the Pandas unique method](https://datagy.io/pandas-unique/).

**Быстрый ответ: используйте `.nunique()` для подсчета уникальных значений в объекте GroupBy библиотеки Pandas**

```python
group_by = df.groupby('Group Column')['Column to Count'].nunique()
```

**Оглавление**

* [Загрузка образца фрейма данных](#zagruzka-obrazca-freima-dannykh)
*  [Понимание группы Pandas](#ponimanie-gruppy-pandas)
* [  Подсчета количества уникальных значений в каждой группе.](#podscheta-kolichestva-unikalnykh-znachenii-v-kazhdoi-gruppe)
*  [Заключение](#zaklyuchenie)
*  [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Загрузка образца фрейма данных

Если вы хотите следовать этому руководству, не стесняйтесь загрузить пример датафрейма, предоставленный ниже, просто скопировав и вставив код в ваш любимый редактор кода.

Давайте сразу перейдем к делу:

{% tabs %}
{% tab title="Код" %}
```python
import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/fivethirtyeight/data/master/college-majors/women-stem.csv')

print(df.head())
```
{% endtab %}

{% tab title="Результат" %}

{% endtab %}
{% endtabs %}

Этот набор данных предоставлен FiveThirtyEight и содержит информацию о представленности женщин в различных направлениях STEM.

### Понимание группы Pandas

Прежде чем мы углубимся в использование `.groupby()` в Pandas для подсчета уникальных значений в группе, давайте рассмотрим, как работает этот метод. Это позволит вам понять, _почему_ это решение эффективно и как его можно применять в разных сценариях. Метод чрезвычайно универсален и быстр, что позволяет решать относительно сложные задачи с легкостью.

Функция Pandas `.groupby()` работает в три этапа:

1. Разделить – разделите данные на разные группы
2. Применить – примените какую-либо форму агрегации
3. Объединить – повторно объединить данные

Давайте посмотрим, как использовать метод `.groupby()`, чтобы найти максимум в группе, а именно группу Major, с максимальной долей женщин в этой группе:

{% tabs %}
{% tab title="Код" %}
```python
# Как использовать метод .groupby() в Pandas

import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/fivethirtyeight/data/master/college-majors/women-stem.csv')
group_by = df.groupby('Major_category')['ShareWomen'].max()

print(group_by.head())
```
{% endtab %}

{% tab title="Результат" %}
```python
# Major_category
# Biology & Life Science     0.707719
# Computers & Mathematics    0.526476
# Engineering                0.451465
# Health                     0.967998
# Physical Sciences          0.750473
# Name: ShareWomen, dtype: float64
```
{% endtab %}
{% endtabs %}

Теперь, когда вы знаете, как использовать метод Pandas `.groupby()`, давайте посмотрим, как мы можем использовать этот метод для подсчета количества уникальных значений в каждой группе.

### Подсчета количества уникальных значений в каждой группе.

Чтобы узнать больше о методе Pandas `.groupby()`, ознакомьтесь с моим подробным руководством здесь:

Давайте узнаем, как можно подсчитать количество уникальных значений в объекте Pandas groupby. Аналогично примеру, приведенному выше, вы можете применить определенное преобразование к группе.

Чтобы сделать это, мы можем использовать полезный метод `.nunique()` из библиотеки Pandas, который позволяет легко подсчитывать количество уникальных значений в заданном сегменте

Давайте посмотрим, как мы можем сделать это с помощью Python

{% tabs %}
{% tab title="Код" %}
```python
import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/fivethirtyeight/data/master/college-majors/women-stem.csv')
group_by = df.groupby('Major_category')['ShareWomen'].nunique()

print(group_by.head())
```
{% endtab %}

{% tab title="Результат" %}
```python
Major_category
Biology & Life Science     14
Computers & Mathematics    11
Engineering                29
Health                     12
Physical Sciences          10
Name: ShareWomen, dtype: int64
```
{% endtab %}
{% endtabs %}

Давайте посмотрим, что мы здесь сделали:

1. Мы сначала использовали метод `.groupby()` и передали в него столбец _Major\_category_, указав, что хотим выполнить группировку по этому столцу.
2. Затем мы передали в столбец _ShareWomen_, чтобы указать, что хотим получить количество уникальных значений для этого столбца.
3. Затем мы применяем метод `.nunique()`, чтобы подсчитать количество уникальных значений в этом столбце.

### Заключение

В этом посте вы узнали, как считать количество уникальных значений в группах Pandas. Вы немного познакомились с методом Pandas `.groupby()` и узнали, как использовать его для агрегирования данных. Наконец, вы научились использовать метод `.groupby()` Pandas для подсчета количества уникальных значений в каждой группе Pandas.

Чтобы узнать больше о методе groupby в Pandas, посмотрите [официальную документацию здесь](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html).

### Дополнительные ресурсы

Чтобы узнать больше по сопутствующим темам, ознакомьтесь с учебными материалами.

* [Pandas GroupBy: группировка, суммирование и агрегация данных в Python](pandas-groupby-gruppirovka-summirovanie-i-agregaciya-dannykh-v-python)
* Подсчет значений в Pandas с помощью value\_counts

