Pandas Groupby 카운트
-
Series.value_counts()
메서드를 사용하여 고유 행 값의 값 계산 -
DataFrame.groupby()
함수를 사용하여 DataFrame 그룹의 값 계산 -
pandas.DataFrame.agg()
메서드를 사용하여 각 그룹의 여러 통계 값 가져 오기
이 튜토리얼에서는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_df
의 Car 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_df
의Car Brand
및Motorbike Brand
열 값의 모든 고유 한 조합으로 DatFrame을 인쇄합니다.
groupby()
메소드는automobile_data_df
를 그룹으로 분할합니다. Car Brand
및 Motorbike 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 is a backend software engineer at Matrice.ai.
LinkedIn