Pandas에서 그룹당 고유 값 계산

  1. df.groupby().nunique()메소드
  2. df.groupby().agg()메소드
  3. df.groupby().unique()메소드

큰 데이터 세트로 작업 할 때 특정 데이터 그룹에 일부 기능을 적용해야하는 경우가 있습니다. 예를 들어, 우리는국가의 ​​데이터 세트와 사적인 문제에 사용하는 개인코드를 가지고 있습니다. 우리는 한 국가에서 사용하는 코드 수를 세고 싶습니다. 아래에는 고유 값을 계산하는 다양한 방법이 나와 있습니다.

  1. df.groupby().nunique()방법
  2. df.groupby().agg()방법
  3. df.groupby().unique()방법

다음 섹션에서 같은DataFrame을 다음과 같이 사용할 것입니다.

import pandas as pd
data = [
    [999,
     'Switzerland'],
    [113,
     'Switzerland'],
    [112,
     'Japan'],
    [112,
     'Switzerland'],
    [113,
     'Canada'],
    [114,
     'Japan'],
    [100,
     'Germany'],
    [114,
     'Japan'],
    [115,
     'Germany']
]
df = pd.DataFrame(data, columns=["code","Countries"])
print(df)

출력은 다음과 같습니다.

   code    Countries
0   999  Switzerland
1   113  Switzerland
2   112        Japan
3   112  Switzerland
4   113       Canada
5   114        Japan
6   100      Germany
7   114        Japan
8   115      Germany

df.groupby().nunique()메소드

df.groupby().nunique()함수가 어떻게 우리나라를 ‘그룹별로’하는지 봅시다.

import pandas as pd
data = [
    [999,
     'Switzerland'],
    [113,
     'Switzerland'],
    [112,
     'Japan'],
    [112,
     'Switzerland'],
    [113,
     'Canada'],
    [114,
     'Japan'],
    [100,
     'Germany'],
    [114,
     'Japan'],
    [115,
     'Germany']
]

df = pd.DataFrame(data, columns=["code","Countries"])
result = df.groupby('Countries')['code'].nunique()
print(result)

다음이 출력됩니다.

Countries
Canada         1
Germany        2
Japan          2
Switzerland    3
Name: code, dtype: int64

이것은 캐나다가 하나의 코드를 사용하고 독일이 두 개의 코드를 사용하고 있음을 나타냅니다.

df.groupby().agg()메소드

이 메소드는df.groupby().nunique()와 동일하게 작동합니다. nunique()함수를agg()함수에 전달해야합니다.

import pandas as pd
data = [
    [999,
     'Switzerland'],
    [113,
     'Switzerland'],
    [112,
     'Japan'],
    [112,
     'Switzerland'],
    [113,
     'Canada'],
    [114,
     'Japan'],
    [100,
     'Germany'],
    [114,
     'Japan'],
    [115,
     'Germany']
]
df = pd.DataFrame(data, columns=["code","Countries"])
result = df.groupby(by='Countries', as_index=False).agg({'code': pd.Series.nunique})
print(result)

산출:

     Countries  code
0       Canada     1
1      Germany     2
2        Japan     2
3  Switzerland     3
.agg({'code': pd.Series.nunique})

code 열에pd.Series.nunique 함수를 사용하여 집계합니다.

df.groupby().unique()메소드

이 방법은 어떤 국가에서 어떤 코드를 사용하고 있는지 확인할 때 유용합니다.

import pandas as pd
data = [
    [999,
     'Switzerland'],
    [113,
     'Switzerland'],
    [112,
     'Japan'],
    [112,
     'Switzerland'],
    [113,
     'Canada'],
    [114,
     'Japan'],
    [100,
     'Germany'],
    [114,
     'Japan'],
    [115,
     'Germany']
]
result = df.groupby('Countries')["code"].unique()
print(result)

다음이 출력됩니다.

Countries
Canada                   [113]
Germany             [100, 115]
Japan               [112, 114]
Switzerland    [999, 113, 112]
Name: code, dtype: object