Pandas Groupby 카운트

Suraj Joshi 2023년1월30일
  1. Series.value_counts()메서드를 사용하여 고유 행 값의 값 계산
  2. DataFrame.groupby()함수를 사용하여 DataFrame 그룹의 값 계산
  3. pandas.DataFrame.agg()메서드를 사용하여 각 그룹의 여러 통계 값 가져 오기
Pandas Groupby 카운트

이 튜토리얼에서는DataFrame.groupby()메서드를 사용하여 파생 된 그룹에 대해count,sum,max 등의 통계를 얻는 방법을 설명합니다.

위의 예에 표시된automobile_data_df를 사용하여 개념을 설명합니다. DataFrame은 직원과 직원이 사용하는 자동차 및 자전거 브랜드로 구성됩니다.

import pandas as pd

automobile_data = [
    ["Chevrolet", "Yamaha"],
    ["Toyota", "Ducati"],
    ["Volkswagen", "BMW"],
    ["Cherlovet", "Kawasaki"],
    ["Toyota", "Ducati"],
    ["Toyota", "BMW"],
    ["Volkswagen", "BMW"],
]

column_names = ["Car Brand", "Motorbike Brand"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
    automobile_data, index=index_names, columns=column_names
)
print(automobile_data_df)

출력:

          Car Brand Motorbike Brand
Steven    Chevrolet          Yamaha
Robert       Toyota          Ducati
Jimmy    Volkswagen             BMW
Mike      Cherlovet        Kawasaki
Phoenix      Toyota          Ducati
Scott        Toyota             BMW
John     Volkswagen             BMW

Series.value_counts()메서드를 사용하여 고유 행 값의 값 계산

DataFrame에서 단일 열의 각 고유 값의 개수를 원하는 경우Series.value_counts()메서드를 사용할 수 있습니다.

import pandas as pd

automobile_data = [
    ["Chevrolet", "Yamaha"],
    ["Toyota", "Ducati"],
    ["Volkswagen", "BMW"],
    ["Cherlovet", "Kawasaki"],
    ["Toyota", "Ducati"],
    ["Toyota", "BMW"],
    ["Volkswagen", "BMW"],
]

column_names = ["Car Brand", "Motorbike Brand"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
    automobile_data, index=index_names, columns=column_names
)

print(automobile_data_df["Car Brand"].value_counts())

출력:

Toyota        3
Volkswagen    2
Cherlovet     1
Chevrolet     1
Name: Car Brand, dtype: int64

automobile_data_dfCar Brand열에있는 모든 고유 한 값을 개수와 함께 인쇄합니다. 이 방법은 한 번에 한 열의 값 개수 만보고 싶은 경우에만 적용 할 수 있습니다.

DataFrame.groupby()함수를 사용하여 DataFrame 그룹의 값 계산

DataFrame.groupby()함수를 사용하여 DataFrame을 여러 그룹으로 분할 한 다음size()메서드를 사용하여 생성 된 각 그룹의 값을 계산합니다.

import pandas as pd

automobile_data = [
    ["Chevrolet", "Yamaha"],
    ["Toyota", "Ducati"],
    ["Volkswagen", "BMW"],
    ["Cherlovet", "Kawasaki"],
    ["Toyota", "Ducati"],
    ["Toyota", "BMW"],
    ["Volkswagen", "BMW"],
]

column_names = ["Car Brand", "Motorbike Brand"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
    automobile_data, index=index_names, columns=column_names
)

group = automobile_data_df.groupby(["Car Brand", "Motorbike Brand"])
print(group.size().reset_index(name="counts"))

출력:

    Car Brand Motorbike Brand  counts
0   Cherlovet        Kawasaki       1
1   Chevrolet          Yamaha       1
2      Toyota             BMW       1
3      Toyota          Ducati       2
4  Volkswagen             BMW       2

automobile_data_df 데이터 프레임에서 이러한 조합의 발생 횟수와 함께automobile_data_dfCar BrandMotorbike Brand 열 값의 모든 고유 한 조합으로 DatFrame을 인쇄합니다.

groupby()메소드는automobile_data_df를 그룹으로 분할합니다. Car BrandMotorbike Brand열의 값이 동일한 행은 동일한 그룹에 배치됩니다. size()메소드는 각 그룹의 값 수를 제공하고 마지막으로 각 그룹의 값 수에서 DataFrame을 생성합니다.

pandas.DataFrame.agg()메서드를 사용하여 각 그룹의 여러 통계 값 가져 오기

import pandas as pd

automobile_data = [
    ["Chevrolet", "Yamaha", 4000],
    ["Toyota", "Ducati", 5000],
    ["Volkswagen", "BMW", 4500],
    ["Cherlovet", "Kawasaki", 3800],
    ["Toyota", "Ducati", 4500],
    ["Toyota", "BMW", 5000],
    ["Volkswagen", "BMW", 6000],
]

column_names = ["Car Brand", "Motorbike Brand", "Monthly Salary"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
    automobile_data, index=index_names, columns=column_names
)

group = automobile_data_df.groupby(["Car Brand", "Motorbike Brand"])

print(group.agg({"Monthly Salary": [min, max, sum]}))

출력:

                           Monthly Salary             
                                      min   max    sum
Car Brand  Motorbike Brand                            
Cherlovet  Kawasaki                  3800  3800   3800
Chevrolet  Yamaha                    4000  4000   4000
Toyota     BMW                       5000  5000   5000
           Ducati                    4500  5000   9500
Volkswagen BMW                       4500  6000  10500

생성 된 각 그룹에 대한 Monthly Salary값의 최소, 최대 및 합계를 표시합니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Pandas Groupby