Pandas에서 그룹당 고유 값 계산
Ahmed Waheed
2023년1월30일
큰 데이터 세트로 작업 할 때 특정 데이터 그룹에 일부 기능을 적용해야하는 경우가 있습니다. 예를 들어, 우리는국가
의 데이터 세트와 사적인 문제에 사용하는 개인코드
를 가지고 있습니다. 우리는 한 국가에서 사용하는 코드 수를 세고 싶습니다. 아래에는 고유 값을 계산하는 다양한 방법이 나와 있습니다.
다음 섹션에서 같은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