그룹별 분석 - groupby, agg
groupby()
로 같은 값끼리 하나의 인덱스로 묶을 수 있다.
reviews.groupby('points').points.count()
points
80 397
81 692
...
99 33
100 19
Name: points, Length: 21, dtype: int64
groupby()
로 같은 포인트 값을 갖는 와인 리뷰끼리 그룹을 생성한 뒤, points
column으로 묶고 count()
로 각 그룹별 빈도수를 체크했다. 위 결과는 value_counts()
와 동일한 결과이기도 하다.
groupby()
는 기준에 따라 같은 값을 갖는 레코드끼리 DataFrame을 구성한다. 이 DataFrame은 apply()
를 통해 직접 접근할 수 있다. 아래는 groupby('winery')
로 와이너리별로 묶인 DataFrame에 apply()
를 사용해 각 와이너리의 첫번째 와인 이름을 가져오는 예시다.
reviews.groupby('winery').apply(lambda df: df.title.iloc[0])
winery
1+1=3 1+1=3 NV Rosé Sparkling (Cava)
10 Knots 10 Knots 2010 Viognier (Paso Robles)
...
àMaurice àMaurice 2013 Fred Estate Syrah (Walla Walla V...
Štoka Štoka 2009 Izbrani Teran (Kras)
Length: 16757, dtype: object
groupby()
에는 단일 column명뿐만 아니라 리스트를 통해 여러개의 column도 전달할 수 있다. 아래는 country
와 province
로 데이터를 그룹화한 다음, 각 DataFrame에서 가장 높은 point를 가진 와인을 표시하는 예다.
reviews.groupby(['country', 'province']).apply(lambda df: df.loc[df.points.idxmax()])
groupby()
와 함께 agg()
를 사용하면 여러 개의 함수를 동시에 적용할 수 있다.
reviews.groupby(['country']).price.agg([len, min, max])
len min max
country
Argentina 3800 4.0 230.0
Armenia 2 14.0 15.0
... ... ... ...
Ukraine 14 6.0 13.0
Uruguay 109 10.0 130.0
정렬 - sort_values
그룹핑된 데이터는 기본적으로 인덱스 순서에 따라 정렬되어 있다. 우리의 입맛에 맞게 데이터를 정렬하기 위해서는 sort_values()
메서드를 사용하면 된다. 기본적으로 sort_values()
는 오름차순으로 정렬하며, 내림차순으로 정렬하고 싶을 때에는 ascending=False
값을 전달하면 된다. 인자로 아무런 값도 전달하지 않을 시에는 인덱스 순서대로 정렬한다. 리스트를 통해 하나 이상의 열을 기준으로 정렬할 수도 있다.
sorted_by_points = reviews.reset_index()
sorted_by_points.sort_values(by='points')
sorted_by_points.sort_values(by='points', ascending=False)
sorted_by_points.sort_values(by=['country', 'points'], ascending=False)
'Machine Learning > Pandas' 카테고리의 다른 글
[kaggle courses] Pandas - Renaming and Combining (0) | 2021.10.19 |
---|---|
[kaggle courses] Pandas - Data Types and Missing Values (0) | 2021.10.18 |
[kaggle courses] Pandas - Summary Functions and Maps (0) | 2021.10.15 |
[kaggle courses] Pandas - Indexing, Selecting & Assigning (iloc, loc) (0) | 2021.10.15 |
[kaggle courses] Pandas - Creating, Reading and Writing (0) | 2021.10.14 |